diff --git a/devices/Micron/ddr3/ruckus.tcl b/devices/Micron/ddr3/ruckus.tcl deleted file mode 100644 index dc718f6b99..0000000000 --- a/devices/Micron/ddr3/ruckus.tcl +++ /dev/null @@ -1,23 +0,0 @@ -# Load RUCKUS environment and library -source $::env(RUCKUS_PROC_TCL) -# Check for non-zero Vivado version (in-case non-Vivado project) -if { $::env(VIVADO_VERSION) > 0.0} { - - # Load target's source code and constraints - loadSource -lib surf -sim_only -dir "$::DIR_PATH/tb" - - # Vivado Verilog bug fix (https://jira.slac.stanford.edu/browse/ESCORE-261) - set_property USED_IN {implementation} [get_files {ddr3.v}] - - # Note: Don't forget to add a SystemVerilog (.sv) file to your - # project to define the type of DDR3 memory that you are simulating - ####################################### - # Example: ddr3_sdram_model_wrapper.sv - ####################################### - # `define den4096Mb - # `define sg125 - # `define x8 - # `define MAX_MEM - # `include "ddr3.v" - ####################################### -} diff --git a/devices/Micron/ddr3/tb/1024Mb_ddr3_parameters.vh b/devices/Micron/ddr3/tb/1024Mb_ddr3_parameters.vh deleted file mode 100644 index 934a37cdd8..0000000000 --- a/devices/Micron/ddr3/tb/1024Mb_ddr3_parameters.vh +++ /dev/null @@ -1,703 +0,0 @@ -/**************************************************************************************** -* -* Disclaimer This software code and all associated documentation, comments or other -* of Warranty: information (collectively "Software") is provided "AS IS" without -* warranty of any kind. MICRON TECHNOLOGY, INC. ("MTI") EXPRESSLY -* DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND ANY IMPLIED WARRANTIES -* OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. MTI DOES NOT -* WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE -* OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. -* FURTHERMORE, MTI DOES NOT MAKE ANY REPRESENTATIONS REGARDING THE USE OR -* THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, -* ACCURACY, RELIABILITY, OR OTHERWISE. THE ENTIRE RISK ARISING OUT OF USE -* OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. IN NO EVENT SHALL MTI, -* ITS AFFILIATED COMPANIES OR THEIR SUPPLIERS BE LIABLE FOR ANY DIRECT, -* INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, -* WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, -* OR LOSS OF INFORMATION) ARISING OUT OF YOUR USE OF OR INABILITY TO USE -* THE SOFTWARE, EVEN IF MTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGES. Because some jurisdictions prohibit the exclusion or -* limitation of liability for consequential or incidental damages, the -* above limitation may not apply to you. -* -* Copyright 2003 Micron Technology, Inc. All rights reserved. -* -****************************************************************************************/ - - // Timing parameters based on 1Gb_DDR3_SDRAM.cdf - Rev. L 09/12 EN - - // SYMBOL UNITS DESCRIPTION - // ------ ----- ----------- -`ifdef sg093 // sg093 is equivalent to the JEDEC DDR3-2133 (14-14-14) speed bin - parameter TCK_MIN = 938; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 50; // tJIT(per) ps Period JItter - parameter TJIT_CC = 100; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 74; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 87; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 97; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 105; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 111; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 116; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 121; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 125; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 128; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 132; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 134; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 5; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 70; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 180; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 280; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 470; // tIPW ps Control and Address input Pulse Width - parameter TIS = 35; // tIS ps Input Setup Time - parameter TIH = 75; // tIH ps Input Hold Time - parameter TRAS_MIN = 33000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 46130; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13090; // tRCD ps Active to Read/Write command time - parameter TRP = 13090; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 180; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 122; // tWLS ps Setup time for tDQS flop - parameter TWLH = 122; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13090; // TAA ps Internal READ command to first data - parameter CL_TIME = 13090; // CL ps Minimum CAS Latency -`elsif sg107 // sg107 is equivalent to the JEDEC DDR3-1866 (13-13-13) speed bin - parameter TCK_MIN = 1071; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 60; // tJIT(per) ps Period JItter - parameter TJIT_CC = 120; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 88; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 105; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 117; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 126; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 133; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 139; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 145; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 150; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 154; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 158; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 161; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 80; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 200; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 320; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 535; // tIPW ps Control and Address input Pulse Width - parameter TIS = 50; // tIS ps Input Setup Time - parameter TIH = 100; // tIH ps Input Hold Time - parameter TRAS_MIN = 34000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 48910; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13910; // tRCD ps Active to Read/Write command time - parameter TRP = 13910; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 200; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 140; // tWLS ps Setup time for tDQS flop - parameter TWLH = 140; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13910; // TAA ps Internal READ command to first data - parameter CL_TIME = 13910; // CL ps Minimum CAS Latency -`elsif sg125 // sg125 is equivalent to the JEDEC DDR3-1600 (11-11-11) speed bin - parameter TCK_MIN = 1250; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 70; // tJIT(per) ps Period JItter - parameter TJIT_CC = 140; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 103; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 122; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 136; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 147; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 155; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 163; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 169; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 175; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 180; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 184; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 188; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 45; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 100; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 225; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 360; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 560; // tIPW ps Control and Address input Pulse Width - parameter TIS = 170; // tIS ps Input Setup Time - parameter TIH = 120; // tIH ps Input Hold Time - parameter TRAS_MIN = 35000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 48750; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13750; // tRCD ps Active to Read/Write command time - parameter TRP = 13750; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 165; // tWLS ps Setup time for tDQS flop - parameter TWLH = 165; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13750; // TAA ps Internal READ command to first data - parameter CL_TIME = 13750; // CL ps Minimum CAS Latency -`elsif sg15E // sg15E is equivalent to the JEDEC DDR3-1333H (9-9-9) speed bin - parameter TCK_MIN = 1500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 80; // tJIT(per) ps Period JItter - parameter TJIT_CC = 160; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 118; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 140; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 155; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 168; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 177; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 186; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 193; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 200; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 205; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 210; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 215; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 30; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 65; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 125; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 255; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 400; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 620; // tIPW ps Control and Address input Pulse Width - parameter TIS = 190; // tIS ps Input Setup Time - parameter TIH = 140; // tIH ps Input Hold Time - parameter TRAS_MIN = 36000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 49500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13500; // tRCD ps Active to Read/Write command time - parameter TRP = 13500; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 195; // tWLS ps Setup time for tDQS flop - parameter TWLH = 195; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13500; // TAA ps Internal READ command to first data - parameter CL_TIME = 13500; // CL ps Minimum CAS Latency -`elsif sg15 // sg15 is equivalent to the JEDEC DDR3-1333J (10-10-10) speed bin - parameter TCK_MIN = 1500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 80; // tJIT(per) ps Period JItter - parameter TJIT_CC = 160; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 118; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 140; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 155; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 168; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 177; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 186; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 193; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 200; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 205; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 210; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 215; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 30; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 65; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 125; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 255; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 400; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 620; // tIPW ps Control and Address input Pulse Width - parameter TIS = 190; // tIS ps Input Setup Time - parameter TIH = 140; // tIH ps Input Hold Time - parameter TRAS_MIN = 36000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 51000; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 195; // tWLS ps Setup time for tDQS flop - parameter TWLH = 195; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`elsif sg187E // sg187E is equivalent to the JEDEC DDR3-1066F (7-7-7) speed bin - parameter TCK_MIN = 1875; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 90; // tJIT(per) ps Period JItter - parameter TJIT_CC = 180; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 132; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 157; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 175; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 188; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 200; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 209; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 217; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 224; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 231; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 237; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 242; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 75; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 100; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 150; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 300; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 490; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 780; // tIPW ps Control and Address input Pulse Width - parameter TIS = 275; // tIS ps Input Setup Time - parameter TIH = 200; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 50625; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13125; // tRCD ps Active to Read/Write command time - parameter TRP = 13125; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 300; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 245; // tWLS ps Setup time for tDQS flop - parameter TWLH = 245; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13125; // TAA ps Internal READ command to first data - parameter CL_TIME = 13125; // CL ps Minimum CAS Latency -`elsif sg187 // sg187 is equivalent to the JEDEC DDR3-1066G (8-8-8) speed bin - parameter TCK_MIN = 1875; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 90; // tJIT(per) ps Period JItter - parameter TJIT_CC = 180; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 132; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 157; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 175; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 188; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 200; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 209; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 217; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 224; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 231; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 237; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 242; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 75; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 100; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 150; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 300; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 490; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 780; // tIPW ps Control and Address input Pulse Width - parameter TIS = 275; // tIS ps Input Setup Time - parameter TIH = 200; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 52500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 300; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 245; // tWLS ps Setup time for tDQS flop - parameter TWLH = 245; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`elsif sg25E // sg25E is equivalent to the JEDEC DDR3-800E (5-5-5) speed bin - parameter TCK_MIN = 2500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 100; // tJIT(per) ps Period JItter - parameter TJIT_CC = 200; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 147; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 175; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 194; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 209; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 222; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 232; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 241; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 249; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 257; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 263; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 269; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 125; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 150; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 200; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 400; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 600; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 900; // tIPW ps Control and Address input Pulse Width - parameter TIS = 350; // tIS ps Input Setup Time - parameter TIH = 275; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 50000; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 12500; // tRCD ps Active to Read/Write command time - parameter TRP = 12500; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 7500; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 400; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 325; // tWLS ps Setup time for tDQS flop - parameter TWLH = 325; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 12500; // TAA ps Internal READ command to first data - parameter CL_TIME = 12500; // CL ps Minimum CAS Latency -`else - `define sg25 // sg25 is equivalent to the JEDEC DDR3-800 (6-6-6) speed bin - parameter TCK_MIN = 2500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 100; // tJIT(per) ps Period JItter - parameter TJIT_CC = 200; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 147; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 175; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 194; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 209; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 222; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 232; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 241; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 249; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 257; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 263; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 269; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 125; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 150; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 200; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 400; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 600; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 900; // tIPW ps Control and Address input Pulse Width - parameter TIS = 350; // tIS ps Input Setup Time - parameter TIH = 275; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 52500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 7500; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 400; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 325; // tWLS ps Setup time for tDQS flop - parameter TWLH = 325; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`endif - - parameter TDQSCK_DLLDIS = TDQSCK; // tDQSCK ps for DLLDIS mode, timing not guaranteed - -`ifdef x16 - `ifdef sg093 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg187E - parameter TRRD = 10000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 50000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg187 - parameter TRRD = 10000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 50000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg25E - parameter TRRD = 10000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 50000; // tFAW ps (2KB page size) Four Bank Activate window - `else // sg25 - parameter TRRD = 10000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 50000; // tFAW ps (2KB page size) Four Bank Activate window - `endif -`else // x4, x8 - `ifdef sg093 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187E - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187 - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg25E - parameter TRRD = 10000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (1KB page size) Four Bank Activate window - `else // sg25 - parameter TRRD = 10000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (1KB page size) Four Bank Activate window - `endif -`endif - - // Timing Parameters - - // Mode Register - parameter CL_MIN = 5; // CL tCK Minimum CAS Latency - parameter CL_MAX = 14; // CL tCK Maximum CAS Latency - parameter AL_MIN = 0; // AL tCK Minimum Additive Latency - parameter AL_MAX = 2; // AL tCK Maximum Additive Latency - parameter WR_MIN = 5; // WR tCK Minimum Write Recovery - parameter WR_MAX = 16; // WR tCK Maximum Write Recovery - parameter BL_MIN = 4; // BL tCK Minimum Burst Length - parameter BL_MAX = 8; // BL tCK Minimum Burst Length - parameter CWL_MIN = 5; // CWL tCK Minimum CAS Write Latency - parameter CWL_MAX = 10; // CWL tCK Maximum CAS Write Latency - - // Clock - parameter TCK_MAX = 3300; // tCK ps Maximum Clock Cycle Time - parameter TCH_AVG_MIN = 0.47; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_AVG_MIN = 0.47; // tCL tCK Minimum Clock Low-Level Pulse Width - parameter TCH_AVG_MAX = 0.53; // tCH tCK Maximum Clock High-Level Pulse Width - parameter TCL_AVG_MAX = 0.53; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCH_ABS_MIN = 0.43; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_ABS_MIN = 0.43; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCKE_TCK = 3; // tCKE tCK CKE minimum high or low pulse width - parameter TAA_MAX = 20000; // TAA ps Internal READ command to first data - - // Data OUT - parameter TQH = 0.38; // tQH ps DQ output hold time from DQS, DQS# - // Data Strobe OUT - parameter TRPRE = 0.90; // tRPRE tCK DQS Read Preamble - parameter TRPST = 0.30; // tRPST tCK DQS Read Postamble - // Data Strobe IN - parameter TDQSH = 0.45; // tDQSH tCK DQS input High Pulse Width - parameter TDQSL = 0.45; // tDQSL tCK DQS input Low Pulse Width - parameter TWPRE = 0.90; // tWPRE tCK DQS Write Preamble - parameter TWPST = 0.30; // tWPST tCK DQS Write Postamble - // Command and Address - integer TZQCS; // tZQCS tCK ZQ Cal (Short) time - integer TZQINIT; // tZQinit tCK ZQ Cal (Long) time - integer TZQOPER; // tZQoper tCK ZQ Cal (Long) time - parameter TCCD = 4; // tCCD tCK Cas to Cas command delay - parameter TCCD_DG = 2; // tCCD_DG tCK Cas to Cas command delay to different group - parameter TRAS_MAX = 60e9; // tRAS ps Maximum Active to Precharge command time - parameter TWR = 15000; // tWR ps Write recovery time - parameter TMRD = 4; // tMRD tCK Load Mode Register command cycle time - parameter TMOD = 15000; // tMOD ps LOAD MODE to non-LOAD MODE command cycle time - parameter TMOD_TCK = 12; // tMOD tCK LOAD MODE to non-LOAD MODE command cycle time - parameter TRRD_TCK = 4; // tRRD tCK Active bank a to Active bank b command time - parameter TRRD_DG = 3000; // tRRD_DG ps Active bank a to Active bank b command time to different group - parameter TRRD_DG_TCK = 2; // tRRD_DG tCK Active bank a to Active bank b command time to different group - parameter TRTP = 7500; // tRTP ps Read to Precharge command delay - parameter TRTP_TCK = 4; // tRTP tCK Read to Precharge command delay - parameter TWTR = 7500; // tWTR ps Write to Read command delay - parameter TWTR_DG = 3750; // tWTR_DG ps Write to Read command delay to different group - parameter TWTR_TCK = 4; // tWTR tCK Write to Read command delay - parameter TWTR_DG_TCK = 2; // tWTR_DG tCK Write to Read command delay to different group - parameter TDLLK = 512; // tDLLK tCK DLL locking time - // Refresh - 1Gb - parameter TRFC_MIN = 110000; // tRFC ps Refresh to Refresh Command interval minimum value - parameter TRFC_MAX =70200000; // tRFC ps Refresh to Refresh Command Interval maximum value - // Power Down - parameter TXP_TCK = 3; // tXP tCK Exit power down to a valid command - parameter TXPDLL = 24000; // tXPDLL ps Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TXPDLL_TCK = 10; // tXPDLL tCK Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TACTPDEN = 1; // tACTPDEN tCK Timing of last ACT command to power down entry - parameter TPRPDEN = 1; // tPREPDEN tCK Timing of last PRE command to power down entry - parameter TREFPDEN = 1; // tARPDEN tCK Timing of last REFRESH command to power down entry - parameter TCPDED = 1; // tCPDED tCK Command pass disable/enable delay - parameter TPD_MAX =TRFC_MAX; // tPD ps Power-down entry-to-exit timing - parameter TXPR = 120000; // tXPR ps Exit Reset from CKE assertion to a valid command - parameter TXPR_TCK = 5; // tXPR tCK Exit Reset from CKE assertion to a valid command - // Self Refresh - parameter TXS = 120000; // tXS ps Exit self refesh to a non-read or write command - parameter TXS_TCK = 5; // tXS tCK Exit self refesh to a non-read or write command - parameter TXSDLL = TDLLK; // tXSRD tCK Exit self refresh to a read or write command - parameter TISXR = TIS; // tISXR ps CKE setup time during self refresh exit. - parameter TCKSRE = 10000; // tCKSRE ps Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRE_TCK = 5; // tCKSRE tCK Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRX = 10000; // tCKSRX ps Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKSRX_TCK = 5; // tCKSRX tCK Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKESR_TCK = 4; // tCKESR tCK Minimum CKE low width for Self Refresh entry to exit timing - // ODT - parameter TAOF = 0.7; // tAOF tCK RTT turn-off from ODTLoff reference - parameter TAONPD = 8500; // tAONPD ps Asynchronous RTT turn-on delay (Power-Down with DLL frozen) - parameter TAOFPD = 8500; // tAONPD ps Asynchronous RTT turn-off delay (Power-Down with DLL frozen) - parameter ODTH4 = 4; // ODTH4 tCK ODT minimum HIGH time after ODT assertion or write (BL4) - parameter ODTH8 = 6; // ODTH8 tCK ODT minimum HIGH time after write (BL8) - parameter TADC = 0.7; // tADC tCK RTT dynamic change skew - // Write Levelization - parameter TWLMRD = 40; // tWLMRD tCK First DQS pulse rising edge after tDQSS margining mode is programmed - parameter TWLDQSEN = 25; // tWLDQSEN tCK DQS/DQS delay after tDQSS margining mode is programmed - parameter TWLOE = 2000; // tWLOE ps Write levelization output error - - // Size Parameters based on Part Width - -`ifdef x4 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 14; // MAX Address Bits - parameter ROW_BITS = 14; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 11; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 4; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used -`elsif x8 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 14; // MAX Address Bits - parameter ROW_BITS = 14; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 10; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 8; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used -`else - `define x16 - parameter DM_BITS = 2; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 13; // MAX Address Bits - parameter ROW_BITS = 13; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 10; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 16; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 2; // Set this parameter to control how many Dqs bits are used -`endif - - // Size Parameters - parameter BA_BITS = 3; // Set this parmaeter to control how many Bank Address bits are used - parameter MEM_BITS = 10; // Set this parameter to control how many write data bursts can be stored in memory. The default is 2^10=1024. - parameter AP = 10; // the address bit that controls auto-precharge and precharge-all - parameter BC = 12; // the address bit that controls burst chop - parameter BL_BITS = 3; // the number of bits required to count to BL_MAX - parameter BO_BITS = 2; // the number of Burst Order Bits - -`ifdef QUAD_RANK - parameter CS_BITS = 4; // Number of Chip Select Bits - parameter RANKS = 4; // Number of Chip Selects -`elsif DUAL_RANK - parameter CS_BITS = 2; // Number of Chip Select Bits - parameter RANKS = 2; // Number of Chip Selects -`else - parameter CS_BITS = 1; // Number of Chip Select Bits - parameter RANKS = 1; // Number of Chip Selects -`endif - - // Simulation parameters - parameter RZQ = 240; // termination resistance - parameter PRE_DEF_PAT = 8'hAA; // value returned during mpr pre-defined pattern readout - parameter STOP_ON_ERROR = 1; // If set to 1, the model will halt on command sequence/major errors - parameter DEBUG = 0; // Turn on Debug messages - parameter BUS_DELAY = 0; // delay in nanoseconds - parameter RANDOM_OUT_DELAY = 0; // If set to 1, the model will put a random amount of delay on DQ/DQS during reads - parameter RANDOM_SEED = 31913; //seed value for random generator. - - parameter RDQSEN_PRE = 2; // DQS driving time prior to first read strobe - parameter RDQSEN_PST = 1; // DQS driving time after last read strobe - parameter RDQS_PRE = 2; // DQS low time prior to first read strobe - parameter RDQS_PST = 1; // DQS low time after last read strobe - parameter RDQEN_PRE = 0; // DQ/DM driving time prior to first read data - parameter RDQEN_PST = 0; // DQ/DM driving time after last read data - parameter WDQS_PRE = 2; // DQS half clock periods prior to first write strobe - parameter WDQS_PST = 1; // DQS half clock periods after last write strobe - -// check for legal cas latency based on the cas write latency -function valid_cl; - input [3:0] cl; - input [3:0] cwl; - - case ({cwl, cl}) -`ifdef sg093 - {4'd5 , 4'd5 }, - {4'd5 , 4'd6 }, - {4'd6 , 4'd7 }, - {4'd6 , 4'd8 }, - {4'd7 , 4'd9 }, - {4'd7 , 4'd10}, - {4'd8 , 4'd11}, - {4'd9 , 4'd13}, - {4'd10, 4'd14}: valid_cl = 1; -`elsif sg107 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}, - {4'd9, 4'd13}: valid_cl = 1; -`elsif sg125 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}: valid_cl = 1; -`elsif sg15E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg15 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg187E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }: valid_cl = 1; -`elsif sg187 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }: valid_cl = 1; -`elsif sg25E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }: valid_cl = 1; -`elsif sg25 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }: valid_cl = 1; -`endif - default : valid_cl = 0; - endcase -endfunction - -// find the minimum valid cas write latency -function [3:0] min_cwl; - input period; - real period; - min_cwl = (period >= 2500.0) ? 5: - (period >= 1875.0) ? 6: - (period >= 1500.0) ? 7: - (period >= 1250.0) ? 8: - (period >= 1071.0) ? 9: - 10; // (period >= 938) -endfunction - -// find the minimum valid cas latency -function [3:0] min_cl; - input period; - real period; - reg [3:0] cwl; - reg [3:0] cl; - begin - cwl = min_cwl(period); - for (cl=CL_MAX; cl>=CL_MIN; cl=cl-1) begin - if (valid_cl(cl, cwl)) begin - min_cl = cl; - end - end - end -endfunction diff --git a/devices/Micron/ddr3/tb/2048Mb_ddr3_parameters.vh b/devices/Micron/ddr3/tb/2048Mb_ddr3_parameters.vh deleted file mode 100644 index eaaa813ab8..0000000000 --- a/devices/Micron/ddr3/tb/2048Mb_ddr3_parameters.vh +++ /dev/null @@ -1,691 +0,0 @@ -/**************************************************************************************** -* -* Disclaimer This software code and all associated documentation, comments or other -* of Warranty: information (collectively "Software") is provided "AS IS" without -* warranty of any kind. MICRON TECHNOLOGY, INC. ("MTI") EXPRESSLY -* DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND ANY IMPLIED WARRANTIES -* OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. MTI DOES NOT -* WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE -* OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. -* FURTHERMORE, MTI DOES NOT MAKE ANY REPRESENTATIONS REGARDING THE USE OR -* THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, -* ACCURACY, RELIABILITY, OR OTHERWISE. THE ENTIRE RISK ARISING OUT OF USE -* OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. IN NO EVENT SHALL MTI, -* ITS AFFILIATED COMPANIES OR THEIR SUPPLIERS BE LIABLE FOR ANY DIRECT, -* INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, -* WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, -* OR LOSS OF INFORMATION) ARISING OUT OF YOUR USE OF OR INABILITY TO USE -* THE SOFTWARE, EVEN IF MTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGES. Because some jurisdictions prohibit the exclusion or -* limitation of liability for consequential or incidental damages, the -* above limitation may not apply to you. -* -* Copyright 2003 Micron Technology, Inc. All rights reserved. -* -****************************************************************************************/ - - // Timing parameters based on 2Gb_DDR3_SDRAM.pdf - Rev. P 2/12 EN - - // SYMBOL UNITS DESCRIPTION - // ------ ----- ----------- -`ifdef sg093 // sg093 is equivalent to the JEDEC DDR3-2133 (14-14-14) speed bin - parameter TCK_MIN = 938; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 50; // tJIT(per) ps Period JItter - parameter TJIT_CC = 100; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 74; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 87; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 97; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 105; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 111; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 116; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 121; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 125; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 128; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 132; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 134; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 5; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 70; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 180; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 280; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 470; // tIPW ps Control and Address input Pulse Width - parameter TIS = 35; // tIS ps Input Setup Time - parameter TIH = 75; // tIH ps Input Hold Time - parameter TRAS_MIN = 33000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 46130; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13090; // tRCD ps Active to Read/Write command time - parameter TRP = 13090; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 180; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 122; // tWLS ps Setup time for tDQS flop - parameter TWLH = 122; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13090; // TAA ps Internal READ command to first data - parameter CL_TIME = 13090; // CL ps Minimum CAS Latency -`elsif sg107 // sg107 is equivalent to the JEDEC DDR3-1866 (13-13-13) speed bin - parameter TCK_MIN = 1071; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 60; // tJIT(per) ps Period JItter - parameter TJIT_CC = 120; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 88; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 105; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 117; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 126; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 133; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 139; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 145; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 150; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 154; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 158; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 161; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 80; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 200; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 320; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 535; // tIPW ps Control and Address input Pulse Width - parameter TIS = 50; // tIS ps Input Setup Time - parameter TIH = 100; // tIH ps Input Hold Time - parameter TRAS_MIN = 34000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 48910; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13910; // tRCD ps Active to Read/Write command time - parameter TRP = 13910; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 200; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 140; // tWLS ps Setup time for tDQS flop - parameter TWLH = 140; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13910; // TAA ps Internal READ command to first data - parameter CL_TIME = 13910; // CL ps Minimum CAS Latency -`elsif sg125 // sg125 is equivalent to the JEDEC DDR3-1600 (11-11-11) speed bin - parameter TCK_MIN = 1250; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 70; // tJIT(per) ps Period JItter - parameter TJIT_CC = 140; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 103; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 122; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 136; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 147; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 155; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 163; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 169; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 175; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 180; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 184; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 188; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 45; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 100; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 225; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 360; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 560; // tIPW ps Control and Address input Pulse Width - parameter TIS = 170; // tIS ps Input Setup Time - parameter TIH = 120; // tIH ps Input Hold Time - parameter TRAS_MIN = 35000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 48750; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13750; // tRCD ps Active to Read/Write command time - parameter TRP = 13750; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 165; // tWLS ps Setup time for tDQS flop - parameter TWLH = 165; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13750; // TAA ps Internal READ command to first data - parameter CL_TIME = 13750; // CL ps Minimum CAS Latency -`elsif sg15E // sg15E is equivalent to the JEDEC DDR3-1333H (9-9-9) speed bin - parameter TCK_MIN = 1500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 80; // tJIT(per) ps Period JItter - parameter TJIT_CC = 160; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 118; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 140; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 155; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 168; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 177; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 186; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 193; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 200; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 205; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 210; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 215; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 30; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 65; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 125; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 255; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 400; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 620; // tIPW ps Control and Address input Pulse Width - parameter TIS = 190; // tIS ps Input Setup Time - parameter TIH = 140; // tIH ps Input Hold Time - parameter TRAS_MIN = 36000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 49500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13500; // tRCD ps Active to Read/Write command time - parameter TRP = 13500; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 195; // tWLS ps Setup time for tDQS flop - parameter TWLH = 195; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13500; // TAA ps Internal READ command to first data - parameter CL_TIME = 13500; // CL ps Minimum CAS Latency -`elsif sg15 // sg15 is equivalent to the JEDEC DDR3-1333J (10-10-10) speed bin - parameter TCK_MIN = 1500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 80; // tJIT(per) ps Period JItter - parameter TJIT_CC = 160; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 118; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 140; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 155; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 168; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 177; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 186; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 193; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 200; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 205; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 210; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 215; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 30; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 65; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 125; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 255; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 400; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 620; // tIPW ps Control and Address input Pulse Width - parameter TIS = 190; // tIS ps Input Setup Time - parameter TIH = 140; // tIH ps Input Hold Time - parameter TRAS_MIN = 36000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 51000; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 195; // tWLS ps Setup time for tDQS flop - parameter TWLH = 195; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`elsif sg187E // sg187E is equivalent to the JEDEC DDR3-1066F (7-7-7) speed bin - parameter TCK_MIN = 1875; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 90; // tJIT(per) ps Period JItter - parameter TJIT_CC = 180; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 132; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 157; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 175; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 188; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 200; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 209; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 217; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 224; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 231; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 237; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 242; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 75; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 100; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 150; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 300; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 490; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 780; // tIPW ps Control and Address input Pulse Width - parameter TIS = 275; // tIS ps Input Setup Time - parameter TIH = 200; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 50625; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13125; // tRCD ps Active to Read/Write command time - parameter TRP = 13125; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 300; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 245; // tWLS ps Setup time for tDQS flop - parameter TWLH = 245; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13125; // TAA ps Internal READ command to first data - parameter CL_TIME = 13125; // CL ps Minimum CAS Latency -`elsif sg187 // sg187 is equivalent to the JEDEC DDR3-1066G (8-8-8) speed bin - parameter TCK_MIN = 1875; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 90; // tJIT(per) ps Period JItter - parameter TJIT_CC = 180; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 132; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 157; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 175; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 188; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 200; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 209; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 217; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 224; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 231; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 237; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 242; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 75; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 100; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 150; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 300; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 490; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 780; // tIPW ps Control and Address input Pulse Width - parameter TIS = 275; // tIS ps Input Setup Time - parameter TIH = 200; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 52500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 300; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 245; // tWLS ps Setup time for tDQS flop - parameter TWLH = 245; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`elsif sg25E // sg25E is equivalent to the JEDEC DDR3-800D (5-5-5) speed bin - parameter TCK_MIN = 2500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 100; // tJIT(per) ps Period JItter - parameter TJIT_CC = 200; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 147; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 175; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 194; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 209; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 222; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 232; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 241; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 249; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 257; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 263; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 269; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 125; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 150; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 200; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 400; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 600; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 900; // tIPW ps Control and Address input Pulse Width - parameter TIS = 350; // tIS ps Input Setup Time - parameter TIH = 275; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 50000; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 12500; // tRCD ps Active to Read/Write command time - parameter TRP = 12500; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 7500; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 400; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 325; // tWLS ps Setup time for tDQS flop - parameter TWLH = 325; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 12500; // TAA ps Internal READ command to first data - parameter CL_TIME = 12500; // CL ps Minimum CAS Latency -`else - `define sg25 // sg25 is equivalent to the JEDEC DDR3-800E (6-6-6) speed bin - parameter TCK_MIN = 2500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 100; // tJIT(per) ps Period JItter - parameter TJIT_CC = 200; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 147; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 175; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 194; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 209; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 222; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 232; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 241; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 249; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 257; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 263; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 269; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 125; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 150; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 200; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 400; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 600; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 900; // tIPW ps Control and Address input Pulse Width - parameter TIS = 350; // tIS ps Input Setup Time - parameter TIH = 275; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 52500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 7500; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 400; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 325; // tWLS ps Setup time for tDQS flop - parameter TWLH = 325; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`endif - - parameter TDQSCK_DLLDIS = TDQSCK; // tDQSCK ps for DLLDIS mode, timing not guaranteed - -`ifdef x16 - `ifdef sg093 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `else // sg187E, sg187, sg25, sg25E - parameter TRRD = 10000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 50000; // tFAW ps (2KB page size) Four Bank Activate window - `endif -`else // x4, x8 - `ifdef sg093 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187E - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187 - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `else // sg25, sg25E - parameter TRRD = 10000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (1KB page size) Four Bank Activate window - `endif -`endif - - // Timing Parameters - - // Mode Register - parameter CL_MIN = 5; // CL tCK Minimum CAS Latency - parameter CL_MAX = 14; // CL tCK Maximum CAS Latency - parameter AL_MIN = 0; // AL tCK Minimum Additive Latency - parameter AL_MAX = 2; // AL tCK Maximum Additive Latency - parameter WR_MIN = 5; // WR tCK Minimum Write Recovery - parameter WR_MAX = 16; // WR tCK Maximum Write Recovery - parameter BL_MIN = 4; // BL tCK Minimum Burst Length - parameter BL_MAX = 8; // BL tCK Minimum Burst Length - parameter CWL_MIN = 5; // CWL tCK Minimum CAS Write Latency - parameter CWL_MAX = 10; // CWL tCK Maximum CAS Write Latency - - // Clock - parameter TCK_MAX = 3300; // tCK ps Maximum Clock Cycle Time - parameter TCH_AVG_MIN = 0.47; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_AVG_MIN = 0.47; // tCL tCK Minimum Clock Low-Level Pulse Width - parameter TCH_AVG_MAX = 0.53; // tCH tCK Maximum Clock High-Level Pulse Width - parameter TCL_AVG_MAX = 0.53; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCH_ABS_MIN = 0.43; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_ABS_MIN = 0.43; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCKE_TCK = 3; // tCKE tCK CKE minimum high or low pulse width - parameter TAA_MAX = 20000; // TAA ps Internal READ command to first data - - // Data OUT - parameter TQH = 0.38; // tQH ps DQ output hold time from DQS, DQS# - // Data Strobe OUT - parameter TRPRE = 0.90; // tRPRE tCK DQS Read Preamble - parameter TRPST = 0.30; // tRPST tCK DQS Read Postamble - // Data Strobe IN - parameter TDQSH = 0.45; // tDQSH tCK DQS input High Pulse Width - parameter TDQSL = 0.45; // tDQSL tCK DQS input Low Pulse Width - parameter TWPRE = 0.90; // tWPRE tCK DQS Write Preamble - parameter TWPST = 0.30; // tWPST tCK DQS Write Postamble - // Command and Address - integer TZQCS; // tZQCS tCK ZQ Cal (Short) time - integer TZQINIT; // tZQinit tCK ZQ Cal (Long) time - integer TZQOPER; // tZQoper tCK ZQ Cal (Long) time - parameter TCCD = 4; // tCCD tCK Cas to Cas command delay - parameter TCCD_DG = 2; // tCCD_DG tCK Cas to Cas command delay to different group - parameter TRAS_MAX = 60e9; // tRAS ps Maximum Active to Precharge command time - parameter TWR = 15000; // tWR ps Write recovery time - parameter TMRD = 4; // tMRD tCK Load Mode Register command cycle time - parameter TMOD = 15000; // tMOD ps LOAD MODE to non-LOAD MODE command cycle time - parameter TMOD_TCK = 12; // tMOD tCK LOAD MODE to non-LOAD MODE command cycle time - parameter TRRD_TCK = 4; // tRRD tCK Active bank a to Active bank b command time - parameter TRRD_DG = 3000; // tRRD_DG ps Active bank a to Active bank b command time to different group - parameter TRRD_DG_TCK = 2; // tRRD_DG tCK Active bank a to Active bank b command time to different group - parameter TRTP = 7500; // tRTP ps Read to Precharge command delay - parameter TRTP_TCK = 4; // tRTP tCK Read to Precharge command delay - parameter TWTR = 7500; // tWTR ps Write to Read command delay - parameter TWTR_DG = 3750; // tWTR_DG ps Write to Read command delay to different group - parameter TWTR_TCK = 4; // tWTR tCK Write to Read command delay - parameter TWTR_DG_TCK = 2; // tWTR_DG tCK Write to Read command delay to different group - parameter TDLLK = 512; // tDLLK tCK DLL locking time - // Refresh - 2Gb - parameter TRFC_MIN = 160000; // tRFC ps Refresh to Refresh Command interval minimum value - parameter TRFC_MAX =70200000; // tRFC ps Refresh to Refresh Command Interval maximum value - // Power Down - parameter TXP_TCK = 3; // tXP tCK Exit power down to a valid command - parameter TXPDLL = 24000; // tXPDLL ps Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TXPDLL_TCK = 10; // tXPDLL tCK Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TACTPDEN = 1; // tACTPDEN tCK Timing of last ACT command to power down entry - parameter TPRPDEN = 1; // tPREPDEN tCK Timing of last PRE command to power down entry - parameter TREFPDEN = 1; // tARPDEN tCK Timing of last REFRESH command to power down entry - parameter TCPDED = 1; // tCPDED tCK Command pass disable/enable delay - parameter TPD_MAX =TRFC_MAX; // tPD ps Power-down entry-to-exit timing - parameter TXPR = 170000; // tXPR ps Exit Reset from CKE assertion to a valid command - parameter TXPR_TCK = 5; // tXPR tCK Exit Reset from CKE assertion to a valid command - // Self Refresh - parameter TXS = 170000; // tXS ps Exit self refesh to a non-read or write command - parameter TXS_TCK = 5; // tXS tCK Exit self refesh to a non-read or write command - parameter TXSDLL = TDLLK; // tXSRD tCK Exit self refresh to a read or write command - parameter TISXR = TIS; // tISXR ps CKE setup time during self refresh exit. - parameter TCKSRE = 10000; // tCKSRE ps Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRE_TCK = 5; // tCKSRE tCK Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRX = 10000; // tCKSRX ps Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKSRX_TCK = 5; // tCKSRX tCK Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKESR_TCK = 4; // tCKESR tCK Minimum CKE low width for Self Refresh entry to exit timing - // ODT - parameter TAOF = 0.7; // tAOF tCK RTT turn-off from ODTLoff reference - parameter TAONPD = 8500; // tAONPD ps Asynchronous RTT turn-on delay (Power-Down with DLL frozen) - parameter TAOFPD = 8500; // tAONPD ps Asynchronous RTT turn-off delay (Power-Down with DLL frozen) - parameter ODTH4 = 4; // ODTH4 tCK ODT minimum HIGH time after ODT assertion or write (BL4) - parameter ODTH8 = 6; // ODTH8 tCK ODT minimum HIGH time after write (BL8) - parameter TADC = 0.7; // tADC tCK RTT dynamic change skew - // Write Levelization - parameter TWLMRD = 40; // tWLMRD tCK First DQS pulse rising edge after tDQSS margining mode is programmed - parameter TWLDQSEN = 25; // tWLDQSEN tCK DQS/DQS delay after tDQSS margining mode is programmed - parameter TWLOE = 2000; // tWLOE ps Write levelization output error - - // Size Parameters based on Part Width - -`ifdef x4 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 15; // MAX Address Bits - parameter ROW_BITS = 15; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 11; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 4; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used -`elsif x8 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 15; // MAX Address Bits - parameter ROW_BITS = 15; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 10; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 8; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used -`else - `define x16 - parameter DM_BITS = 2; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 14; // MAX Address Bits - parameter ROW_BITS = 14; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 10; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 16; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 2; // Set this parameter to control how many Dqs bits are used -`endif - - // Size Parameters - parameter BA_BITS = 3; // Set this parmaeter to control how many Bank Address bits are used - parameter MEM_BITS = 10; // Set this parameter to control how many write data bursts can be stored in memory. The default is 2^10=1024. - parameter AP = 10; // the address bit that controls auto-precharge and precharge-all - parameter BC = 12; // the address bit that controls burst chop - parameter BL_BITS = 3; // the number of bits required to count to BL_MAX - parameter BO_BITS = 2; // the number of Burst Order Bits - -`ifdef QUAD_RANK - parameter CS_BITS = 4; // Number of Chip Select Bits - parameter RANKS = 4; // Number of Chip Selects -`elsif DUAL_RANK - parameter CS_BITS = 2; // Number of Chip Select Bits - parameter RANKS = 2; // Number of Chip Selects -`else - parameter CS_BITS = 1; // Number of Chip Select Bits - parameter RANKS = 1; // Number of Chip Selects -`endif - - // Simulation parameters - parameter RZQ = 240; // termination resistance - parameter PRE_DEF_PAT = 8'hAA; // value returned during mpr pre-defined pattern readout - parameter STOP_ON_ERROR = 1; // If set to 1, the model will halt on command sequence/major errors - parameter DEBUG = 0; // Turn on Debug messages - parameter BUS_DELAY = 0; // delay in nanoseconds - parameter RANDOM_OUT_DELAY = 0; // If set to 1, the model will put a random amount of delay on DQ/DQS during reads - parameter RANDOM_SEED = 31913; //seed value for random generator. - - parameter RDQSEN_PRE = 2; // DQS driving time prior to first read strobe - parameter RDQSEN_PST = 1; // DQS driving time after last read strobe - parameter RDQS_PRE = 2; // DQS low time prior to first read strobe - parameter RDQS_PST = 1; // DQS low time after last read strobe - parameter RDQEN_PRE = 0; // DQ/DM driving time prior to first read data - parameter RDQEN_PST = 0; // DQ/DM driving time after last read data - parameter WDQS_PRE = 2; // DQS half clock periods prior to first write strobe - parameter WDQS_PST = 1; // DQS half clock periods after last write strobe - -// check for legal cas latency based on the cas write latency -function valid_cl; - input [3:0] cl; - input [3:0] cwl; - - case ({cwl, cl}) -`ifdef sg093 - {4'd5 , 4'd5 }, - {4'd5 , 4'd6 }, - {4'd6 , 4'd7 }, - {4'd6 , 4'd8 }, - {4'd7 , 4'd9 }, - {4'd7 , 4'd10}, - {4'd8 , 4'd11}, - {4'd9 , 4'd13}, - {4'd10, 4'd14}: valid_cl = 1; -`elsif sg107 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}, - {4'd9, 4'd13}: valid_cl = 1; -`elsif sg125 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}: valid_cl = 1; -`elsif sg15E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg15 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg187E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }: valid_cl = 1; -`elsif sg187 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }: valid_cl = 1; -`elsif sg25E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }: valid_cl = 1; -`elsif sg25 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }: valid_cl = 1; -`endif - default : valid_cl = 0; - endcase -endfunction - -// find the minimum valid cas write latency -function [3:0] min_cwl; - input period; - real period; - min_cwl = (period >= 2500.0) ? 5: - (period >= 1875.0) ? 6: - (period >= 1500.0) ? 7: - (period >= 1250.0) ? 8: - (period >= 1071.0) ? 9: - 10; // (period >= 938) -endfunction - -// find the minimum valid cas latency -function [3:0] min_cl; - input period; - real period; - reg [3:0] cwl; - reg [3:0] cl; - begin - cwl = min_cwl(period); - for (cl=CL_MAX; cl>=CL_MIN; cl=cl-1) begin - if (valid_cl(cl, cwl)) begin - min_cl = cl; - end - end - end -endfunction diff --git a/devices/Micron/ddr3/tb/4096Mb_ddr3_parameters.vh b/devices/Micron/ddr3/tb/4096Mb_ddr3_parameters.vh deleted file mode 100644 index a5fe950670..0000000000 --- a/devices/Micron/ddr3/tb/4096Mb_ddr3_parameters.vh +++ /dev/null @@ -1,691 +0,0 @@ -/**************************************************************************************** -* -* Disclaimer This software code and all associated documentation, comments or other -* of Warranty: information (collectively "Software") is provided "AS IS" without -* warranty of any kind. MICRON TECHNOLOGY, INC. ("MTI") EXPRESSLY -* DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND ANY IMPLIED WARRANTIES -* OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. MTI DOES NOT -* WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE -* OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. -* FURTHERMORE, MTI DOES NOT MAKE ANY REPRESENTATIONS REGARDING THE USE OR -* THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, -* ACCURACY, RELIABILITY, OR OTHERWISE. THE ENTIRE RISK ARISING OUT OF USE -* OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. IN NO EVENT SHALL MTI, -* ITS AFFILIATED COMPANIES OR THEIR SUPPLIERS BE LIABLE FOR ANY DIRECT, -* INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, -* WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, -* OR LOSS OF INFORMATION) ARISING OUT OF YOUR USE OF OR INABILITY TO USE -* THE SOFTWARE, EVEN IF MTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGES. Because some jurisdictions prohibit the exclusion or -* limitation of liability for consequential or incidental damages, the -* above limitation may not apply to you. -* -* Copyright 2003 Micron Technology, Inc. All rights reserved. -* -****************************************************************************************/ - - // Timing parameters based on 4Gb_DDR3_SDRAM.pdf - Rev. L 2/13 EN - - // SYMBOL UNITS DESCRIPTION - // ------ ----- ----------- -`ifdef sg093 // sg093 is equivalent to the JEDEC DDR3-2133 (14-14-14) speed bin - parameter TCK_MIN = 938; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 50; // tJIT(per) ps Period JItter - parameter TJIT_CC = 100; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 74; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 87; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 97; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 105; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 111; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 116; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 121; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 125; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 128; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 132; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 134; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 5; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 70; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 180; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 280; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 470; // tIPW ps Control and Address input Pulse Width - parameter TIS = 35; // tIS ps Input Setup Time - parameter TIH = 75; // tIH ps Input Hold Time - parameter TRAS_MIN = 33000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 46130; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13090; // tRCD ps Active to Read/Write command time - parameter TRP = 13090; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 180; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 122; // tWLS ps Setup time for tDQS flop - parameter TWLH = 122; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13090; // TAA ps Internal READ command to first data - parameter CL_TIME = 13090; // CL ps Minimum CAS Latency -`elsif sg107 // sg107 is equivalent to the JEDEC DDR3-1866 (13-13-13) speed bin - parameter TCK_MIN = 1071; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 60; // tJIT(per) ps Period JItter - parameter TJIT_CC = 120; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 88; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 105; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 117; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 126; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 133; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 139; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 145; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 150; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 154; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 158; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 161; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 80; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 200; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 320; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 535; // tIPW ps Control and Address input Pulse Width - parameter TIS = 50; // tIS ps Input Setup Time - parameter TIH = 100; // tIH ps Input Hold Time - parameter TRAS_MIN = 34000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 47910; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13910; // tRCD ps Active to Read/Write command time - parameter TRP = 13910; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 200; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 140; // tWLS ps Setup time for tDQS flop - parameter TWLH = 140; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13910; // TAA ps Internal READ command to first data - parameter CL_TIME = 13910; // CL ps Minimum CAS Latency -`elsif sg125 // sg125 is equivalent to the JEDEC DDR3-1600 (11-11-11) speed bin - parameter TCK_MIN = 1250; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 70; // tJIT(per) ps Period JItter - parameter TJIT_CC = 140; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 103; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 122; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 136; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 147; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 155; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 163; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 169; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 175; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 180; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 184; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 188; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 45; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 100; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 225; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 360; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 560; // tIPW ps Control and Address input Pulse Width - parameter TIS = 170; // tIS ps Input Setup Time - parameter TIH = 120; // tIH ps Input Hold Time - parameter TRAS_MIN = 35000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 48750; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13750; // tRCD ps Active to Read/Write command time - parameter TRP = 13750; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 165; // tWLS ps Setup time for tDQS flop - parameter TWLH = 165; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13750; // TAA ps Internal READ command to first data - parameter CL_TIME = 13750; // CL ps Minimum CAS Latency -`elsif sg15E // sg15E is equivalent to the JEDEC DDR3-1333H (9-9-9) speed bin - parameter TCK_MIN = 1500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 80; // tJIT(per) ps Period JItter - parameter TJIT_CC = 160; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 118; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 140; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 155; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 168; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 177; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 186; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 193; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 200; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 205; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 210; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 215; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 30; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 65; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 125; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 255; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 400; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 620; // tIPW ps Control and Address input Pulse Width - parameter TIS = 190; // tIS ps Input Setup Time - parameter TIH = 140; // tIH ps Input Hold Time - parameter TRAS_MIN = 36000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 49500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13500; // tRCD ps Active to Read/Write command time - parameter TRP = 13500; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 195; // tWLS ps Setup time for tDQS flop - parameter TWLH = 195; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13500; // TAA ps Internal READ command to first data - parameter CL_TIME = 13500; // CL ps Minimum CAS Latency -`elsif sg15 // sg15 is equivalent to the JEDEC DDR3-1333J (10-10-10) speed bin - parameter TCK_MIN = 1500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 80; // tJIT(per) ps Period JItter - parameter TJIT_CC = 160; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 118; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 140; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 155; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 168; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 177; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 186; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 193; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 200; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 205; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 210; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 215; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 30; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 65; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 125; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 255; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 400; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 620; // tIPW ps Control and Address input Pulse Width - parameter TIS = 190; // tIS ps Input Setup Time - parameter TIH = 140; // tIH ps Input Hold Time - parameter TRAS_MIN = 36000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 51000; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 195; // tWLS ps Setup time for tDQS flop - parameter TWLH = 195; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`elsif sg187E // sg187E is equivalent to the JEDEC DDR3-1066F (7-7-7) speed bin - parameter TCK_MIN = 1875; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 90; // tJIT(per) ps Period JItter - parameter TJIT_CC = 180; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 132; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 157; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 175; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 188; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 200; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 209; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 217; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 224; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 231; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 237; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 242; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 75; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 100; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 150; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 300; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 490; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 780; // tIPW ps Control and Address input Pulse Width - parameter TIS = 275; // tIS ps Input Setup Time - parameter TIH = 200; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 50625; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13125; // tRCD ps Active to Read/Write command time - parameter TRP = 13125; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 300; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 245; // tWLS ps Setup time for tDQS flop - parameter TWLH = 245; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13125; // TAA ps Internal READ command to first data - parameter CL_TIME = 13125; // CL ps Minimum CAS Latency -`elsif sg187 // sg187 is equivalent to the JEDEC DDR3-1066G (8-8-8) speed bin - parameter TCK_MIN = 1875; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 90; // tJIT(per) ps Period JItter - parameter TJIT_CC = 180; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 132; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 157; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 175; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 188; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 200; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 209; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 217; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 224; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 231; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 237; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 242; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 75; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 100; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 150; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 300; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 490; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 780; // tIPW ps Control and Address input Pulse Width - parameter TIS = 275; // tIS ps Input Setup Time - parameter TIH = 200; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 52500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 300; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 245; // tWLS ps Setup time for tDQS flop - parameter TWLH = 245; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`elsif sg25E // sg25E is equivalent to the JEDEC DDR3-800D (5-5-5) speed bin - parameter TCK_MIN = 2500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 100; // tJIT(per) ps Period JItter - parameter TJIT_CC = 200; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 147; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 175; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 194; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 209; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 222; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 232; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 241; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 249; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 257; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 263; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 269; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 125; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 150; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 200; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 400; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 600; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 900; // tIPW ps Control and Address input Pulse Width - parameter TIS = 350; // tIS ps Input Setup Time - parameter TIH = 275; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 50000; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 12500; // tRCD ps Active to Read/Write command time - parameter TRP = 12500; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 7500; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 400; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 325; // tWLS ps Setup time for tDQS flop - parameter TWLH = 325; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 12500; // TAA ps Internal READ command to first data - parameter CL_TIME = 12500; // CL ps Minimum CAS Latency -`else - `define sg25 // sg25 is equivalent to the JEDEC DDR3-800E (6-6-6) speed bin - parameter TCK_MIN = 2500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 100; // tJIT(per) ps Period JItter - parameter TJIT_CC = 200; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 147; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 175; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 194; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 209; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 222; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 232; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 241; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 249; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 257; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 263; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 269; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 125; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 150; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 200; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 400; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 600; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 900; // tIPW ps Control and Address input Pulse Width - parameter TIS = 350; // tIS ps Input Setup Time - parameter TIH = 275; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 52500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 15000; // tRCD ps Active to Read/Write command time - parameter TRP = 15000; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 7500; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 400; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 325; // tWLS ps Setup time for tDQS flop - parameter TWLH = 325; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 15000; // TAA ps Internal READ command to first data - parameter CL_TIME = 15000; // CL ps Minimum CAS Latency -`endif - - parameter TDQSCK_DLLDIS = TDQSCK; // tDQSCK ps for DLLDIS mode, timing not guaranteed - -`ifdef x16 - `ifdef sg093 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `else // sg187E, sg187, sg25, sg25E - parameter TRRD = 10000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 50000; // tFAW ps (2KB page size) Four Bank Activate window - `endif -`else // x4, x8 - `ifdef sg093 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187E - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187 - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `else // sg25, sg25E - parameter TRRD = 10000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (1KB page size) Four Bank Activate window - `endif -`endif - - // Timing Parameters - - // Mode Register - parameter CL_MIN = 5; // CL tCK Minimum CAS Latency - parameter CL_MAX = 14; // CL tCK Maximum CAS Latency - parameter AL_MIN = 0; // AL tCK Minimum Additive Latency - parameter AL_MAX = 2; // AL tCK Maximum Additive Latency - parameter WR_MIN = 5; // WR tCK Minimum Write Recovery - parameter WR_MAX = 16; // WR tCK Maximum Write Recovery - parameter BL_MIN = 4; // BL tCK Minimum Burst Length - parameter BL_MAX = 8; // BL tCK Minimum Burst Length - parameter CWL_MIN = 5; // CWL tCK Minimum CAS Write Latency - parameter CWL_MAX = 10; // CWL tCK Maximum CAS Write Latency - - // Clock - parameter TCK_MAX = 3300; // tCK ps Maximum Clock Cycle Time - parameter TCH_AVG_MIN = 0.47; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_AVG_MIN = 0.47; // tCL tCK Minimum Clock Low-Level Pulse Width - parameter TCH_AVG_MAX = 0.53; // tCH tCK Maximum Clock High-Level Pulse Width - parameter TCL_AVG_MAX = 0.53; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCH_ABS_MIN = 0.43; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_ABS_MIN = 0.43; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCKE_TCK = 3; // tCKE tCK CKE minimum high or low pulse width - parameter TAA_MAX = 20000; // TAA ps Internal READ command to first data - - // Data OUT - parameter TQH = 0.38; // tQH ps DQ output hold time from DQS, DQS# - // Data Strobe OUT - parameter TRPRE = 0.90; // tRPRE tCK DQS Read Preamble - parameter TRPST = 0.30; // tRPST tCK DQS Read Postamble - // Data Strobe IN - parameter TDQSH = 0.45; // tDQSH tCK DQS input High Pulse Width - parameter TDQSL = 0.45; // tDQSL tCK DQS input Low Pulse Width - parameter TWPRE = 0.90; // tWPRE tCK DQS Write Preamble - parameter TWPST = 0.30; // tWPST tCK DQS Write Postamble - // Command and Address - integer TZQCS; // tZQCS tCK ZQ Cal (Short) time - integer TZQINIT; // tZQinit tCK ZQ Cal (Long) time - integer TZQOPER; // tZQoper tCK ZQ Cal (Long) time - parameter TCCD = 4; // tCCD tCK Cas to Cas command delay - parameter TCCD_DG = 2; // tCCD_DG tCK Cas to Cas command delay to different group - parameter TRAS_MAX = 60e9; // tRAS ps Maximum Active to Precharge command time - parameter TWR = 15000; // tWR ps Write recovery time - parameter TMRD = 4; // tMRD tCK Load Mode Register command cycle time - parameter TMOD = 15000; // tMOD ps LOAD MODE to non-LOAD MODE command cycle time - parameter TMOD_TCK = 12; // tMOD tCK LOAD MODE to non-LOAD MODE command cycle time - parameter TRRD_TCK = 4; // tRRD tCK Active bank a to Active bank b command time - parameter TRRD_DG = 3000; // tRRD_DG ps Active bank a to Active bank b command time to different group - parameter TRRD_DG_TCK = 2; // tRRD_DG tCK Active bank a to Active bank b command time to different group - parameter TRTP = 7500; // tRTP ps Read to Precharge command delay - parameter TRTP_TCK = 4; // tRTP tCK Read to Precharge command delay - parameter TWTR = 7500; // tWTR ps Write to Read command delay - parameter TWTR_DG = 3750; // tWTR_DG ps Write to Read command delay to different group - parameter TWTR_TCK = 4; // tWTR tCK Write to Read command delay - parameter TWTR_DG_TCK = 2; // tWTR_DG tCK Write to Read command delay to different group - parameter TDLLK = 512; // tDLLK tCK DLL locking time - // Refresh - 4Gb - parameter TRFC_MIN = 260000; // tRFC ps Refresh to Refresh Command interval minimum value - parameter TRFC_MAX =70200000; // tRFC ps Refresh to Refresh Command Interval maximum value - // Power Down - parameter TXP_TCK = 3; // tXP tCK Exit power down to a valid command - parameter TXPDLL = 24000; // tXPDLL ps Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TXPDLL_TCK = 10; // tXPDLL tCK Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TACTPDEN = 1; // tACTPDEN tCK Timing of last ACT command to power down entry - parameter TPRPDEN = 1; // tPREPDEN tCK Timing of last PRE command to power down entry - parameter TREFPDEN = 1; // tARPDEN tCK Timing of last REFRESH command to power down entry - parameter TCPDED = 1; // tCPDED tCK Command pass disable/enable delay - parameter TPD_MAX =TRFC_MAX; // tPD ps Power-down entry-to-exit timing - parameter TXPR = 270000; // tXPR ps Exit Reset from CKE assertion to a valid command - parameter TXPR_TCK = 5; // tXPR tCK Exit Reset from CKE assertion to a valid command - // Self Refresh - parameter TXS = 270000; // tXS ps Exit self refesh to a non-read or write command - parameter TXS_TCK = 5; // tXS tCK Exit self refesh to a non-read or write command - parameter TXSDLL = TDLLK; // tXSRD tCK Exit self refresh to a read or write command - parameter TISXR = TIS; // tISXR ps CKE setup time during self refresh exit. - parameter TCKSRE = 10000; // tCKSRE ps Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRE_TCK = 5; // tCKSRE tCK Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRX = 10000; // tCKSRX ps Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKSRX_TCK = 5; // tCKSRX tCK Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKESR_TCK = 4; // tCKESR tCK Minimum CKE low width for Self Refresh entry to exit timing - // ODT - parameter TAOF = 0.7; // tAOF tCK RTT turn-off from ODTLoff reference - parameter TAONPD = 8500; // tAONPD ps Asynchronous RTT turn-on delay (Power-Down with DLL frozen) - parameter TAOFPD = 8500; // tAONPD ps Asynchronous RTT turn-off delay (Power-Down with DLL frozen) - parameter ODTH4 = 4; // ODTH4 tCK ODT minimum HIGH time after ODT assertion or write (BL4) - parameter ODTH8 = 6; // ODTH8 tCK ODT minimum HIGH time after write (BL8) - parameter TADC = 0.7; // tADC tCK RTT dynamic change skew - // Write Levelization - parameter TWLMRD = 40; // tWLMRD tCK First DQS pulse rising edge after tDQSS margining mode is programmed - parameter TWLDQSEN = 25; // tWLDQSEN tCK DQS/DQS delay after tDQSS margining mode is programmed - parameter TWLOE = 2000; // tWLOE ps Write levelization output error - - // Size Parameters based on Part Width - -`ifdef x4 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 16; // MAX Address Bits - parameter ROW_BITS = 16; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 11; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 4; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used -`elsif x8 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 16; // MAX Address Bits - parameter ROW_BITS = 16; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 10; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 8; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used -`else - `define x16 - parameter DM_BITS = 2; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 15; // MAX Address Bits - parameter ROW_BITS = 15; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 10; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 16; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 2; // Set this parameter to control how many Dqs bits are used -`endif - - // Size Parameters - parameter BA_BITS = 3; // Set this parmaeter to control how many Bank Address bits are used - parameter MEM_BITS = 10; // Set this parameter to control how many write data bursts can be stored in memory. The default is 2^10=1024. - parameter AP = 10; // the address bit that controls auto-precharge and precharge-all - parameter BC = 12; // the address bit that controls burst chop - parameter BL_BITS = 3; // the number of bits required to count to BL_MAX - parameter BO_BITS = 2; // the number of Burst Order Bits - -`ifdef QUAD_RANK - parameter CS_BITS = 4; // Number of Chip Select Bits - parameter RANKS = 4; // Number of Chip Selects -`elsif DUAL_RANK - parameter CS_BITS = 2; // Number of Chip Select Bits - parameter RANKS = 2; // Number of Chip Selects -`else - parameter CS_BITS = 1; // Number of Chip Select Bits - parameter RANKS = 1; // Number of Chip Selects -`endif - - // Simulation parameters - parameter RZQ = 240; // termination resistance - parameter PRE_DEF_PAT = 8'hAA; // value returned during mpr pre-defined pattern readout - parameter STOP_ON_ERROR = 1; // If set to 1, the model will halt on command sequence/major errors - parameter DEBUG = 0; // Turn on Debug messages - parameter BUS_DELAY = 0; // delay in nanoseconds - parameter RANDOM_OUT_DELAY = 0; // If set to 1, the model will put a random amount of delay on DQ/DQS during reads - parameter RANDOM_SEED = 31913; //seed value for random generator. - - parameter RDQSEN_PRE = 2; // DQS driving time prior to first read strobe - parameter RDQSEN_PST = 1; // DQS driving time after last read strobe - parameter RDQS_PRE = 2; // DQS low time prior to first read strobe - parameter RDQS_PST = 1; // DQS low time after last read strobe - parameter RDQEN_PRE = 0; // DQ/DM driving time prior to first read data - parameter RDQEN_PST = 0; // DQ/DM driving time after last read data - parameter WDQS_PRE = 2; // DQS half clock periods prior to first write strobe - parameter WDQS_PST = 1; // DQS half clock periods after last write strobe - -// check for legal cas latency based on the cas write latency -function valid_cl; - input [3:0] cl; - input [3:0] cwl; - - case ({cwl, cl}) -`ifdef sg093 - {4'd5 , 4'd5 }, - {4'd5 , 4'd6 }, - {4'd6 , 4'd7 }, - {4'd6 , 4'd8 }, - {4'd7 , 4'd9 }, - {4'd7 , 4'd10}, - {4'd8 , 4'd11}, - {4'd9 , 4'd13}, - {4'd10, 4'd14}: valid_cl = 1; -`elsif sg107 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}, - {4'd9, 4'd13}: valid_cl = 1; -`elsif sg125 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}: valid_cl = 1; -`elsif sg15E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg15 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg187E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }: valid_cl = 1; -`elsif sg187 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }: valid_cl = 1; -`elsif sg25E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }: valid_cl = 1; -`elsif sg25 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }: valid_cl = 1; -`endif - default : valid_cl = 0; - endcase -endfunction - -// find the minimum valid cas write latency -function [3:0] min_cwl; - input period; - real period; - min_cwl = (period >= 2500.0) ? 5: - (period >= 1875.0) ? 6: - (period >= 1500.0) ? 7: - (period >= 1250.0) ? 8: - (period >= 1071.0) ? 9: - 10; // (period >= 938) -endfunction - -// find the minimum valid cas latency -function [3:0] min_cl; - input period; - real period; - reg [3:0] cwl; - reg [3:0] cl; - begin - cwl = min_cwl(period); - for (cl=CL_MAX; cl>=CL_MIN; cl=cl-1) begin - if (valid_cl(cl, cwl)) begin - min_cl = cl; - end - end - end -endfunction diff --git a/devices/Micron/ddr3/tb/8192Mb_ddr3_parameters.vh b/devices/Micron/ddr3/tb/8192Mb_ddr3_parameters.vh deleted file mode 100644 index 9a99186149..0000000000 --- a/devices/Micron/ddr3/tb/8192Mb_ddr3_parameters.vh +++ /dev/null @@ -1,526 +0,0 @@ -/**************************************************************************************** -* -* Disclaimer This software code and all associated documentation, comments or other -* of Warranty: information (collectively "Software") is provided "AS IS" without -* warranty of any kind. MICRON TECHNOLOGY, INC. ("MTI") EXPRESSLY -* DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND ANY IMPLIED WARRANTIES -* OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. MTI DOES NOT -* WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE -* OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. -* FURTHERMORE, MTI DOES NOT MAKE ANY REPRESENTATIONS REGARDING THE USE OR -* THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, -* ACCURACY, RELIABILITY, OR OTHERWISE. THE ENTIRE RISK ARISING OUT OF USE -* OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. IN NO EVENT SHALL MTI, -* ITS AFFILIATED COMPANIES OR THEIR SUPPLIERS BE LIABLE FOR ANY DIRECT, -* INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, -* WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, -* OR LOSS OF INFORMATION) ARISING OUT OF YOUR USE OF OR INABILITY TO USE -* THE SOFTWARE, EVEN IF MTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGES. Because some jurisdictions prohibit the exclusion or -* limitation of liability for consequential or incidental damages, the -* above limitation may not apply to you. -* -* Copyright 2003 Micron Technology, Inc. All rights reserved. -* -****************************************************************************************/ - - // Timing parameters based on 8Gb_DDR3L.pdf - Rev. A 4/14 EN - - // SYMBOL UNITS DESCRIPTION - // ------ ----- ----------- -`ifdef sg093 // sg093 is equivalent to the JEDEC DDR3-2133 (14-14-14) speed bin - parameter TCK_MIN = 938; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 50; // tJIT(per) ps Period JItter - parameter TJIT_CC = 100; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 74; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 87; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 97; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 105; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 111; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 116; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 121; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 125; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 128; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 132; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 134; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 5; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 70; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 180; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 280; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 470; // tIPW ps Control and Address input Pulse Width - parameter TIS = 35; // tIS ps Input Setup Time - parameter TIH = 75; // tIH ps Input Hold Time - parameter TRAS_MIN = 33000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 46090; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13090; // tRCD ps Active to Read/Write command time - parameter TRP = 13090; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 180; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 122; // tWLS ps Setup time for tDQS flop - parameter TWLH = 122; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13090; // TAA ps Internal READ command to first data - parameter CL_TIME = 13090; // CL ps Minimum CAS Latency -`elsif sg107 // sg107 is equivalent to the JEDEC DDR3-1866 (13-13-13) speed bin - parameter TCK_MIN = 1071; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 60; // tJIT(per) ps Period JItter - parameter TJIT_CC = 120; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 88; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 105; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 117; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 126; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 133; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 139; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 145; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 150; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 154; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 158; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 161; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 20; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 80; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 200; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 320; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 535; // tIPW ps Control and Address input Pulse Width - parameter TIS = 50; // tIS ps Input Setup Time - parameter TIH = 100; // tIH ps Input Hold Time - parameter TRAS_MIN = 34000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 47910; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13910; // tRCD ps Active to Read/Write command time - parameter TRP = 13910; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 200; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 140; // tWLS ps Setup time for tDQS flop - parameter TWLH = 140; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13910; // TAA ps Internal READ command to first data - parameter CL_TIME = 13910; // CL ps Minimum CAS Latency -`elsif sg125 // sg125 is equivalent to the JEDEC DDR3-1600 (11-11-11) speed bin - parameter TCK_MIN = 1250; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 70; // tJIT(per) ps Period JItter - parameter TJIT_CC = 140; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 103; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 122; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 136; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 147; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 155; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 163; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 169; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 175; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 180; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 184; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 188; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 10; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 45; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 100; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.27; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.18; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.18; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 225; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 360; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 560; // tIPW ps Control and Address input Pulse Width - parameter TIS = 170; // tIS ps Input Setup Time - parameter TIH = 120; // tIH ps Input Hold Time - parameter TRAS_MIN = 35000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 48750; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13750; // tRCD ps Active to Read/Write command time - parameter TRP = 13750; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5000; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 165; // tWLS ps Setup time for tDQS flop - parameter TWLH = 165; // tWLH ps Hold time of tDQS flop - parameter TWLO = 7500; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13750; // TAA ps Internal READ command to first data - parameter CL_TIME = 13750; // CL ps Minimum CAS Latency -`elsif sg15E // sg15E is equivalent to the JEDEC DDR3-1333 (9-9-9) speed bin - parameter TCK_MIN = 1500; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 80; // tJIT(per) ps Period JItter - parameter TJIT_CC = 160; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 118; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 140; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 155; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 168; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 177; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 186; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 193; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 200; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 205; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 210; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 215; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 30; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 65; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 125; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 255; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.40; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.40; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 400; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 620; // tIPW ps Control and Address input Pulse Width - parameter TIS = 190; // tIS ps Input Setup Time - parameter TIH = 140; // tIH ps Input Hold Time - parameter TRAS_MIN = 36000; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 49500; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13500; // tRCD ps Active to Read/Write command time - parameter TRP = 13500; // tRP ps Precharge command period - parameter TXP = 6000; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 250; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 195; // tWLS ps Setup time for tDQS flop - parameter TWLH = 195; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13500; // TAA ps Internal READ command to first data - parameter CL_TIME = 13500; // CL ps Minimum CAS Latency -`else - `define sg187E // sg187E is equivalent to the JEDEC DDR3-1066 (7-7-7) speed bin - parameter TCK_MIN = 1875; // tCK ps Minimum Clock Cycle Time - parameter TJIT_PER = 90; // tJIT(per) ps Period JItter - parameter TJIT_CC = 180; // tJIT(cc) ps Cycle to Cycle jitter - parameter TERR_2PER = 132; // tERR(2per) ps Accumulated Error (2-cycle) - parameter TERR_3PER = 157; // tERR(3per) ps Accumulated Error (3-cycle) - parameter TERR_4PER = 175; // tERR(4per) ps Accumulated Error (4-cycle) - parameter TERR_5PER = 188; // tERR(5per) ps Accumulated Error (5-cycle) - parameter TERR_6PER = 200; // tERR(6per) ps Accumulated Error (6-cycle) - parameter TERR_7PER = 209; // tERR(7per) ps Accumulated Error (7-cycle) - parameter TERR_8PER = 217; // tERR(8per) ps Accumulated Error (8-cycle) - parameter TERR_9PER = 224; // tERR(9per) ps Accumulated Error (9-cycle) - parameter TERR_10PER = 231; // tERR(10per)ps Accumulated Error (10-cycle) - parameter TERR_11PER = 237; // tERR(11per)ps Accumulated Error (11-cycle) - parameter TERR_12PER = 242; // tERR(12per)ps Accumulated Error (12-cycle) - parameter TDS = 75; // tDS ps DQ and DM input setup time relative to DQS - parameter TDH = 100; // tDH ps DQ and DM input hold time relative to DQS - parameter TDQSQ = 150; // tDQSQ ps DQS-DQ skew, DQS to last DQ valid, per group, per access - parameter TDQSS = 0.25; // tDQSS tCK Rising clock edge to DQS/DQS# latching transition - parameter TDSS = 0.20; // tDSS tCK DQS falling edge to CLK rising (setup time) - parameter TDSH = 0.20; // tDSH tCK DQS falling edge from CLK rising (hold time) - parameter TDQSCK = 300; // tDQSCK ps DQS output access time from CK/CK# - parameter TQSH = 0.38; // tQSH tCK DQS Output High Pulse Width - parameter TQSL = 0.38; // tQSL tCK DQS Output Low Pulse Width - parameter TDIPW = 490; // tDIPW ps DQ and DM input Pulse Width - parameter TIPW = 780; // tIPW ps Control and Address input Pulse Width - parameter TIS = 275; // tIS ps Input Setup Time - parameter TIH = 200; // tIH ps Input Hold Time - parameter TRAS_MIN = 37500; // tRAS ps Minimum Active to Precharge command time - parameter TRC = 50625; // tRC ps Active to Active/Auto Refresh command time - parameter TRCD = 13125; // tRCD ps Active to Read/Write command time - parameter TRP = 13125; // tRP ps Precharge command period - parameter TXP = 7500; // tXP ps Exit power down to a valid command - parameter TCKE = 5625; // tCKE ps CKE minimum high or low pulse width - parameter TAON = 300; // tAON ps RTT turn-on from ODTLon reference - parameter TWLS = 245; // tWLS ps Setup time for tDQS flop - parameter TWLH = 245; // tWLH ps Hold time of tDQS flop - parameter TWLO = 9000; // tWLO ps Write levelization output delay - parameter TAA_MIN = 13125; // TAA ps Internal READ command to first data - parameter CL_TIME = 13125; // CL ps Minimum CAS Latency -`endif - - parameter TDQSCK_DLLDIS = TDQSCK; // tDQSCK ps for DLLDIS mode, timing not guaranteed - -`ifdef x16 - `ifdef sg093 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 6000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 35000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 7500; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 45000; // tFAW ps (2KB page size) Four Bank Activate window - `else // sg187E, sg187, sg25, sg25E - parameter TRRD = 10000; // tRRD ps (2KB page size) Active bank a to Active bank b command time - parameter TFAW = 50000; // tFAW ps (2KB page size) Four Bank Activate window - `endif -`else // x4, x8 - `ifdef sg093 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg107 - parameter TRRD = 5000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 25000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg125 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15E - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg15 - parameter TRRD = 6000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 30000; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187E - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `elsif sg187 - parameter TRRD = 7500; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 37500; // tFAW ps (1KB page size) Four Bank Activate window - `else // sg25, sg25E - parameter TRRD = 10000; // tRRD ps (1KB page size) Active bank a to Active bank b command time - parameter TFAW = 40000; // tFAW ps (1KB page size) Four Bank Activate window - `endif -`endif - - // Timing Parameters - - // Mode Register - parameter CL_MIN = 5; // CL tCK Minimum CAS Latency - parameter CL_MAX = 14; // CL tCK Maximum CAS Latency - parameter AL_MIN = 0; // AL tCK Minimum Additive Latency - parameter AL_MAX = 2; // AL tCK Maximum Additive Latency - parameter WR_MIN = 5; // WR tCK Minimum Write Recovery - parameter WR_MAX = 16; // WR tCK Maximum Write Recovery - parameter BL_MIN = 4; // BL tCK Minimum Burst Length - parameter BL_MAX = 8; // BL tCK Minimum Burst Length - parameter CWL_MIN = 5; // CWL tCK Minimum CAS Write Latency - parameter CWL_MAX = 10; // CWL tCK Maximum CAS Write Latency - - // Clock - parameter TCK_MAX = 3300; // tCK ps Maximum Clock Cycle Time - parameter TCH_AVG_MIN = 0.47; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_AVG_MIN = 0.47; // tCL tCK Minimum Clock Low-Level Pulse Width - parameter TCH_AVG_MAX = 0.53; // tCH tCK Maximum Clock High-Level Pulse Width - parameter TCL_AVG_MAX = 0.53; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCH_ABS_MIN = 0.43; // tCH tCK Minimum Clock High-Level Pulse Width - parameter TCL_ABS_MIN = 0.43; // tCL tCK Maximum Clock Low-Level Pulse Width - parameter TCKE_TCK = 3; // tCKE tCK CKE minimum high or low pulse width - parameter TAA_MAX = 20000; // TAA ps Internal READ command to first data - - // Data OUT - parameter TQH = 0.38; // tQH ps DQ output hold time from DQS, DQS# - // Data Strobe OUT - parameter TRPRE = 0.90; // tRPRE tCK DQS Read Preamble - parameter TRPST = 0.30; // tRPST tCK DQS Read Postamble - // Data Strobe IN - parameter TDQSH = 0.45; // tDQSH tCK DQS input High Pulse Width - parameter TDQSL = 0.45; // tDQSL tCK DQS input Low Pulse Width - parameter TWPRE = 0.90; // tWPRE tCK DQS Write Preamble - parameter TWPST = 0.30; // tWPST tCK DQS Write Postamble - // Command and Address - integer TZQCS; // tZQCS tCK ZQ Cal (Short) time - integer TZQINIT; // tZQinit tCK ZQ Cal (Long) time - integer TZQOPER; // tZQoper tCK ZQ Cal (Long) time - parameter TCCD = 4; // tCCD tCK Cas to Cas command delay - parameter TCCD_DG = 2; // tCCD_DG tCK Cas to Cas command delay to different group - parameter TRAS_MAX = 60e9; // tRAS ps Maximum Active to Precharge command time - parameter TWR = 15000; // tWR ps Write recovery time - parameter TMRD = 4; // tMRD tCK Load Mode Register command cycle time - parameter TMOD = 15000; // tMOD ps LOAD MODE to non-LOAD MODE command cycle time - parameter TMOD_TCK = 12; // tMOD tCK LOAD MODE to non-LOAD MODE command cycle time - parameter TRRD_TCK = 4; // tRRD tCK Active bank a to Active bank b command time - parameter TRRD_DG = 3000; // tRRD_DG ps Active bank a to Active bank b command time to different group - parameter TRRD_DG_TCK = 2; // tRRD_DG tCK Active bank a to Active bank b command time to different group - parameter TRTP = 7500; // tRTP ps Read to Precharge command delay - parameter TRTP_TCK = 4; // tRTP tCK Read to Precharge command delay - parameter TWTR = 7500; // tWTR ps Write to Read command delay - parameter TWTR_DG = 3750; // tWTR_DG ps Write to Read command delay to different group - parameter TWTR_TCK = 4; // tWTR tCK Write to Read command delay - parameter TWTR_DG_TCK = 2; // tWTR_DG tCK Write to Read command delay to different group - parameter TDLLK = 512; // tDLLK tCK DLL locking time - // Refresh - 4Gb - parameter TRFC_MIN = 260000; // tRFC ps Refresh to Refresh Command interval minimum value - parameter TRFC_MAX =70200000; // tRFC ps Refresh to Refresh Command Interval maximum value - // Power Down - parameter TXP_TCK = 3; // tXP tCK Exit power down to a valid command - parameter TXPDLL = 24000; // tXPDLL ps Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TXPDLL_TCK = 10; // tXPDLL tCK Exit precharge power down to READ or WRITE command (DLL-off mode) - parameter TACTPDEN = 1; // tACTPDEN tCK Timing of last ACT command to power down entry - parameter TPRPDEN = 1; // tPREPDEN tCK Timing of last PRE command to power down entry - parameter TREFPDEN = 1; // tARPDEN tCK Timing of last REFRESH command to power down entry - parameter TCPDED = 1; // tCPDED tCK Command pass disable/enable delay - parameter TPD_MAX =TRFC_MAX; // tPD ps Power-down entry-to-exit timing - parameter TXPR = 270000; // tXPR ps Exit Reset from CKE assertion to a valid command - parameter TXPR_TCK = 5; // tXPR tCK Exit Reset from CKE assertion to a valid command - // Self Refresh - parameter TXS = 270000; // tXS ps Exit self refesh to a non-read or write command - parameter TXS_TCK = 5; // tXS tCK Exit self refesh to a non-read or write command - parameter TXSDLL = TDLLK; // tXSRD tCK Exit self refresh to a read or write command - parameter TISXR = TIS; // tISXR ps CKE setup time during self refresh exit. - parameter TCKSRE = 10000; // tCKSRE ps Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRE_TCK = 5; // tCKSRE tCK Valid Clock requirement after self refresh entry (SRE) - parameter TCKSRX = 10000; // tCKSRX ps Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKSRX_TCK = 5; // tCKSRX tCK Valid Clock requirement prior to self refresh exit (SRX) - parameter TCKESR_TCK = 4; // tCKESR tCK Minimum CKE low width for Self Refresh entry to exit timing - // ODT - parameter TAOF = 0.7; // tAOF tCK RTT turn-off from ODTLoff reference - parameter TAONPD = 8500; // tAONPD ps Asynchronous RTT turn-on delay (Power-Down with DLL frozen) - parameter TAOFPD = 8500; // tAONPD ps Asynchronous RTT turn-off delay (Power-Down with DLL frozen) - parameter ODTH4 = 4; // ODTH4 tCK ODT minimum HIGH time after ODT assertion or write (BL4) - parameter ODTH8 = 6; // ODTH8 tCK ODT minimum HIGH time after write (BL8) - parameter TADC = 0.7; // tADC tCK RTT dynamic change skew - // Write Levelization - parameter TWLMRD = 40; // tWLMRD tCK First DQS pulse rising edge after tDQSS margining mode is programmed - parameter TWLDQSEN = 25; // tWLDQSEN tCK DQS/DQS delay after tDQSS margining mode is programmed - parameter TWLOE = 2000; // tWLOE ps Write levelization output error - - // Size Parameters based on Part Width - -`ifdef x4 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 16; // MAX Address Bits - parameter ROW_BITS = 16; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 14; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 4; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used - `define CA14PLUS -`elsif x8 - parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 16; // MAX Address Bits - parameter ROW_BITS = 16; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 11; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 8; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used -`else - `define x16 - parameter DM_BITS = 2; // Set this parameter to control how many Data Mask bits are used - parameter ADDR_BITS = 16; // MAX Address Bits - parameter ROW_BITS = 16; // Set this parameter to control how many Address bits are used - parameter COL_BITS = 10; // Set this parameter to control how many Column bits are used - parameter DQ_BITS = 16; // Set this parameter to control how many Data bits are used **Same as part bit width** - parameter DQS_BITS = 2; // Set this parameter to control how many Dqs bits are used -`endif - - // Size Parameters - parameter BA_BITS = 3; // Set this parmaeter to control how many Bank Address bits are used - parameter MEM_BITS = 10; // Set this parameter to control how many write data bursts can be stored in memory. The default is 2^10=1024. - parameter AP = 10; // the address bit that controls auto-precharge and precharge-all - parameter BC = 12; // the address bit that controls burst chop - parameter BL_BITS = 3; // the number of bits required to count to BL_MAX - parameter BO_BITS = 2; // the number of Burst Order Bits - -`ifdef QUAD_RANK - parameter CS_BITS = 4; // Number of Chip Select Bits - parameter RANKS = 4; // Number of Chip Selects -`elsif DUAL_RANK - parameter CS_BITS = 2; // Number of Chip Select Bits - parameter RANKS = 2; // Number of Chip Selects -`else - parameter CS_BITS = 1; // Number of Chip Select Bits - parameter RANKS = 1; // Number of Chip Selects -`endif - - // Simulation parameters - parameter RZQ = 240; // termination resistance - parameter PRE_DEF_PAT = 8'hAA; // value returned during mpr pre-defined pattern readout - parameter STOP_ON_ERROR = 1; // If set to 1, the model will halt on command sequence/major errors - parameter DEBUG = 0; // Turn on Debug messages - parameter BUS_DELAY = 0; // delay in nanoseconds - parameter RANDOM_OUT_DELAY = 0; // If set to 1, the model will put a random amount of delay on DQ/DQS during reads - parameter RANDOM_SEED = 31913; //seed value for random generator. - - parameter RDQSEN_PRE = 2; // DQS driving time prior to first read strobe - parameter RDQSEN_PST = 1; // DQS driving time after last read strobe - parameter RDQS_PRE = 2; // DQS low time prior to first read strobe - parameter RDQS_PST = 1; // DQS low time after last read strobe - parameter RDQEN_PRE = 0; // DQ/DM driving time prior to first read data - parameter RDQEN_PST = 0; // DQ/DM driving time after last read data - parameter WDQS_PRE = 2; // DQS half clock periods prior to first write strobe - parameter WDQS_PST = 1; // DQS half clock periods after last write strobe - -// check for legal cas latency based on the cas write latency -function valid_cl; - input [3:0] cl; - input [3:0] cwl; - - case ({cwl, cl}) -`ifdef sg093 - {4'd5 , 4'd5 }, - {4'd5 , 4'd6 }, - {4'd6 , 4'd7 }, - {4'd6 , 4'd8 }, - {4'd7 , 4'd9 }, - {4'd7 , 4'd10}, - {4'd8 , 4'd11}, - {4'd9 , 4'd13}, - {4'd10, 4'd14}: valid_cl = 1; -`elsif sg107 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}, - {4'd9, 4'd13}: valid_cl = 1; -`elsif sg125 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}, - {4'd8, 4'd11}: valid_cl = 1; -`elsif sg15E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }, - {4'd7, 4'd9 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg15 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }, - {4'd7, 4'd10}: valid_cl = 1; -`elsif sg187E - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd7 }, - {4'd6, 4'd8 }: valid_cl = 1; -`elsif sg187 - {4'd5, 4'd5 }, - {4'd5, 4'd6 }, - {4'd6, 4'd8 }: valid_cl = 1; -`endif - default : valid_cl = 0; - endcase -endfunction - -// find the minimum valid cas write latency -function [3:0] min_cwl; - input period; - real period; - min_cwl = (period >= 2500.0) ? 5: - (period >= 1875.0) ? 6: - (period >= 1500.0) ? 7: - (period >= 1250.0) ? 8: - (period >= 1071.0) ? 9: - 10; // (period >= 938) -endfunction - -// find the minimum valid cas latency -function [3:0] min_cl; - input period; - real period; - reg [3:0] cwl; - reg [3:0] cl; - begin - cwl = min_cwl(period); - for (cl=CL_MAX; cl>=CL_MIN; cl=cl-1) begin - if (valid_cl(cl, cwl)) begin - min_cl = cl; - end - end - end -endfunction diff --git a/devices/Micron/ddr3/tb/ddr3.v b/devices/Micron/ddr3/tb/ddr3.v deleted file mode 100644 index 5cfb8b42a8..0000000000 --- a/devices/Micron/ddr3/tb/ddr3.v +++ /dev/null @@ -1,2956 +0,0 @@ -//`define MAX_MEM - -/**************************************************************************************** -* -* File Name: ddr3.v -* Version: 1.74 -* Model: BUS Functional -* -* Dependencies: ddr3_parameters.vh -* -* Description: Micron SDRAM DDR3 (Double Data Rate 3) -* -* Limitation: - doesn't check for average refresh timings -* - positive ck and ck_n edges are used to form internal clock -* - positive dqs and dqs_n edges are used to latch data -* - test mode is not modeled -* - Duty Cycle Corrector is not modeled -* - Temperature Compensated Self Refresh is not modeled -* - DLL off mode is not modeled. -* -* Note: - Set simulator resolution to "ps" accuracy -* - Set DEBUG = 0 to disable $display messages -* -* Disclaimer This software code and all associated documentation, comments or other -* of Warranty: information (collectively "Software") is provided "AS IS" without -* warranty of any kind. MICRON TECHNOLOGY, INC. ("MTI") EXPRESSLY -* DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -* TO, NONINFRINGEMENT OF THIRD PARTY RIGHTS, AND ANY IMPLIED WARRANTIES -* OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. MTI DOES NOT -* WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE -* OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. -* FURTHERMORE, MTI DOES NOT MAKE ANY REPRESENTATIONS REGARDING THE USE OR -* THE RESULTS OF THE USE OF THE SOFTWARE IN TERMS OF ITS CORRECTNESS, -* ACCURACY, RELIABILITY, OR OTHERWISE. THE ENTIRE RISK ARISING OUT OF USE -* OR PERFORMANCE OF THE SOFTWARE REMAINS WITH YOU. IN NO EVENT SHALL MTI, -* ITS AFFILIATED COMPANIES OR THEIR SUPPLIERS BE LIABLE FOR ANY DIRECT, -* INDIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL DAMAGES (INCLUDING, -* WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, -* OR LOSS OF INFORMATION) ARISING OUT OF YOUR USE OF OR INABILITY TO USE -* THE SOFTWARE, EVEN IF MTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGES. Because some jurisdictions prohibit the exclusion or -* limitation of liability for consequential or incidental damages, the -* above limitation may not apply to you. -* -* Copyright 2003 Micron Technology, Inc. All rights reserved. -* -* Rev Author Date Changes -* --------------------------------------------------------------------------------------- -* 0.41 JMK 05/12/06 Removed auto-precharge to power down error check. -* 0.42 JMK 08/25/06 Created internal clock using ck and ck_n. -* TDQS can only be enabled in EMR for x8 configurations. -* CAS latency is checked vs frequency when DLL locks. -* Improved checking of DQS during writes. -* Added true BL4 operation. -* 0.43 JMK 08/14/06 Added checking for setting reserved bits in Mode Registers. -* Added ODTS Readout. -* Replaced tZQCL with tZQinit and tZQoper -* Fixed tWRPDEN and tWRAPDEN during BC4MRS and BL4MRS. -* Added tRFC checking for Refresh to Power-Down Re-Entry. -* Added tXPDLL checking for Power-Down Exit to Refresh to Power-Down Entry -* Added Clock Frequency Change during Precharge Power-Down. -* Added -125x speed grades. -* Fixed tRCD checking during Write. -* 1.00 JMK 05/11/07 Initial release -* 1.10 JMK 06/26/07 Fixed ODTH8 check during BLOTF -* Removed temp sensor readout from MPR -* Updated initialization sequence -* Updated timing parameters -* 1.20 JMK 09/05/07 Updated clock frequency change -* Added ddr3_dimm module -* 1.30 JMK 01/23/08 Updated timing parameters -* 1.40 JMK 12/02/08 Added support for DDR3-1866 and DDR3-2133 -* renamed ddr3_dimm.v to ddr3_module.v and added SODIMM support. -* Added multi-chip package model support in ddr3_mcp.v -* 1.50 JMK 05/04/08 Added 1866 and 2133 speed grades. -* 1.60 MYY 07/10/09 Merging of 1.50 version and pre-1.0 version changes -* 1.61 SPH 12/10/09 Only check tIH for cmd_addr if CS# LOW -* 1.62 SPH 10/26/10 Added 4Gb DDR3 SDRAM support -* 1.63 MYY 11/09/10 Added Dll Disable mode -* 1.64 MYY 07/28/11 Check dqs_in for dqs timing check -* 1.65 MYY 09/19/11 Widen internal bus width -* 1.66 MYY 01/20/12 Support ODT tied high feature -* 1.67 MYY 02/03/12 Added TJIT_PER margin for timing checks -* 1.68 SPH 04/02/12 Added memory preload -* 1.69 SPH 03/19/13 Update tZQCS, tZQinit, tZQoper timing parameters -* 1.70 SPH 04/08/14 Update tRFC to PRECHARGE check -* 1.71 SPH 04/21/14 Added 8Gb mono die parameters -* Remove strict CL check -* 1.72 DLH 06/18/15 calculate TZQCS from current tCK -* 1.73 SPH 08/20/15 calculate TZQINIT/TZQOPER from current tCK -* 1.74 SPH 09/08/15 Fix CWL 9 check to use 1071ps instead of 15e3/14 (round up error) -* Fix tIS don't care for Bank and Address when DES / NOP -*****************************************************************************************/ - -// DO NOT CHANGE THE TIMESCALE -// MAKE SURE YOUR SIMULATOR USES "PS" RESOLUTION -`timescale 1ps / 1ps - - -module ddr3 ( - rst_n, - ck, - ck_n, - cke, - cs_n, - ras_n, - cas_n, - we_n, - dm_tdqs, - ba, - addr, - dq, - dqs, - dqs_n, - tdqs_n, - odt -); - -`ifdef den1024Mb - `include "1024Mb_ddr3_parameters.vh" -`elsif den2048Mb - `include "2048Mb_ddr3_parameters.vh" -`elsif den4096Mb - `include "4096Mb_ddr3_parameters.vh" -`elsif den8192Mb - `include "8192Mb_ddr3_parameters.vh" -`else - // NOTE: Intentionally cause a compile fail here to force the users - // to select the correct component density before continuing - ERROR: You must specify component density with +define+den____Mb. -`endif - - parameter check_strict_mrbits = 1; - parameter check_strict_timing = 1; - parameter feature_pasr = 1; - parameter feature_truebl4 = 0; - parameter feature_odt_hi = 0; - parameter PERTCKAVG=TDLLK; - - // text macros - `define DQ_PER_DQS DQ_BITS/DQS_BITS - `define BANKS (1<= 2. \nBL_MAX = %d", BL_MAX); - if ((1< BL_MAX) - $display("%m ERROR: 2^BO_BITS cannot be greater than BL_MAX parameter."); - - $timeformat (-12, 1, " ps", 1); - seed = RANDOM_SEED; - - ck_cntr = 0; - end - - function integer get_rtt_wr; - input [1:0] rtt; - begin - get_rtt_wr = RZQ/{rtt[0], rtt[1], 1'b0}; - end - endfunction - - function integer get_rtt_nom; - input [2:0] rtt; - begin - case (rtt) - 1: get_rtt_nom = RZQ/4; - 2: get_rtt_nom = RZQ/2; - 3: get_rtt_nom = RZQ/6; - 4: get_rtt_nom = RZQ/12; - 5: get_rtt_nom = RZQ/8; - default : get_rtt_nom = 0; - endcase - end - endfunction - - // calculate the absolute value of a real number - function real abs_value; - input arg; - real arg; - begin - if (arg < 0.0) - abs_value = -1.0 * arg; - else - abs_value = arg; - end - endfunction - - function integer ceil; - input number; - real number; - - // LMR 4.1.7 - // When either operand of a relational expression is a real operand then the other operand shall be converted - // to an equivalent real value, and the expression shall be interpreted as a comparison between two real values. - if (number > $rtoi(number)) - ceil = $rtoi(number) + 1; - else - ceil = number; - endfunction - - function integer floor; - input number; - real number; - - // LMR 4.1.7 - // When either operand of a relational expression is a real operand then the other operand shall be converted - // to an equivalent real value, and the expression shall be interpreted as a comparison between two real values. - if (number < $rtoi(number)) - floor = $rtoi(number) - 1; - else - floor = number; - endfunction - - function int max( input int a, b ); - max = (a < b) ? b : a; - endfunction - - function int min( input int a, b ); - min = (a > b) ? b : a; - endfunction - -`ifdef MAX_MEM - - function integer open_bank_file( input integer bank ); - integer fd; - reg [2048:1] filename; - begin - $sformat( filename, "%0s/%m.%0d", tmp_model_dir, bank ); - - fd = $fopen(filename, "wb+"); - if (fd == 0) - begin - $display("%m: at time %0t ERROR: failed to open %0s.", $time, filename); - $finish; - end - else - begin - if (DEBUG) $display("%m: at time %0t INFO: opening %0s.", $time, filename); - open_bank_file = fd; - end - - end - endfunction - - function [RFF_BITS:1] read_from_file( - input integer fd, - input integer index - ); - integer code; - integer offset; - reg [1024:1] msg; - reg [RFF_BITS:1] read_value; - - begin - offset = index * RFF_CHUNK; - code = $fseek( fd, offset, 0 ); - // $fseek returns 0 on success, -1 on failure - if (code != 0) - begin - $display("%m: at time %t ERROR: fseek to %d failed", $time, offset); - $finish; - end - - code = $fscanf(fd, "%z", read_value); - // $fscanf returns number of items read - if (code != 1) - begin - if ($ferror(fd,msg) != 0) - begin - $display("%m: at time %t ERROR: fscanf failed at %d", $time, index); - $display(msg); - $finish; - end - else - read_value = 'hx; - end - - /* when reading from unwritten portions of the file, 0 will be returned. - * Use 0 in bit 1 as indicator that invalid data has been read. - * A true 0 is encoded as Z. - */ - if (read_value[1] === 1'bz) - // true 0 encoded as Z, data is valid - read_value[1] = 1'b0; - else if (read_value[1] === 1'b0) - // read from file section that has not been written - read_value = 'hx; - - read_from_file = read_value; - end - endfunction - - task write_to_file( - input integer fd, - input integer index, - input [RFF_BITS:1] data - ); - integer code; - integer offset; - - begin - offset = index * RFF_CHUNK; - code = $fseek( fd, offset, 0 ); - if (code != 0) - begin - $display("%m: at time %t ERROR: fseek to %d failed", $time, offset); - $finish; - end - - // encode a valid data - if (data[1] === 1'bz) - data[1] = 1'bx; - else if (data[1] === 1'b0) - data[1] = 1'bz; - - $fwrite( fd, "%z", data ); - end - endtask -`else - function get_index; - input [`MAX_BITS-1:0] addr; - begin : index - get_index = 0; - for (memory_index=0; memory_index>(ROW_BITS+COL_BITS-BL_BITS)); - if (!banks[ba]) begin //bank is selected to keep - address[i] = address[memory_index]; - memory[i] = memory[memory_index]; - i = i + 1; - end - end - // clean up the unused banks - for (memory_index=i; memory_index TRAS_MAX) $display ("%m: at time %t ERROR: tRAS maximum violation during %s to bank %d", $time, cmd_string[cmd], bank); - if ($time - tm_bank_activate[bank] < TRAS_MIN-TJIT_PER) $display ("%m: at time %t ERROR: tRAS minimum violation during %s to bank %d", $time, cmd_string[cmd], bank);end - {1'bx, SAME_BANK , ACTIVATE , ACTIVATE } : begin if ($time - tm_bank_activate[bank] < TRC-TJIT_PER) $display ("%m: at time %t ERROR: tRC violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'bx, SAME_BANK , ACTIVATE , WRITE } , - {1'bx, SAME_BANK , ACTIVATE , READ } : ; // tRCD is checked outside this task - {1'b0, DIFF_BANK , ACTIVATE , ACTIVATE } : begin if (($time - tm_activate < TRRD) || (ck_cntr - ck_activate < TRRD_TCK)) $display ("%m: at time %t ERROR: tRRD violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_BANK , ACTIVATE , ACTIVATE } : begin if (($time - tm_group_activate[bank[1]] < TRRD) || (ck_cntr - ck_group_activate[bank[1]] < TRRD_TCK)) $display ("%m: at time %t ERROR: tRRD violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_GROUP, ACTIVATE , ACTIVATE } : begin if (($time - tm_activate < TRRD_DG) || (ck_cntr - ck_activate < TRRD_DG_TCK)) $display ("%m: at time %t ERROR: tRRD_DG violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'bx, DIFF_BANK , ACTIVATE , REFRESH } : begin if ($time - tm_activate < TRC-TJIT_PER) $display ("%m: at time %t ERROR: tRC violation during %s", $time, cmd_string[cmd]); end - {1'bx, DIFF_BANK , ACTIVATE , PWR_DOWN } : begin if (ck_cntr - ck_activate < TACTPDEN) $display ("%m: at time %t ERROR: tACTPDEN violation during %s", $time, cmd_string[cmd]); end - - // write - {1'bx, SAME_BANK , WRITE , PRECHARGE} : begin if (($time - tm_bank_write_end[bank] < TWR-TJIT_PER) || (ck_cntr - ck_bank_write[bank] <= write_latency + burst_length/2)) $display ("%m: at time %t ERROR: tWR violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b0, DIFF_BANK , WRITE , WRITE } : begin if (ck_cntr - ck_write < TCCD) $display ("%m: at time %t ERROR: tCCD violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_BANK , WRITE , WRITE } : begin if (ck_cntr - ck_group_write[bank[1]] < TCCD) $display ("%m: at time %t ERROR: tCCD violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b0, DIFF_BANK , WRITE , READ } : begin if (ck_cntr - ck_write < write_latency + burst_length/2 + TWTR_TCK - additive_latency) $display ("%m: at time %t ERROR: tWTR violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_BANK , WRITE , READ } : begin if (ck_cntr - ck_group_write[bank[1]] < write_latency + burst_length/2 + TWTR_TCK - additive_latency) $display ("%m: at time %t ERROR: tWTR violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_GROUP, WRITE , WRITE } : begin if (ck_cntr - ck_write < TCCD_DG) $display ("%m: at time %t ERROR: tCCD_DG violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_GROUP, WRITE , READ } : begin if (ck_cntr - ck_write < write_latency + burst_length/2 + TWTR_DG_TCK - additive_latency) $display ("%m: at time %t ERROR: tWTR_DG violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'bx, DIFF_BANK , WRITE , PWR_DOWN } : begin if (($time - tm_write_end < TWR-TJIT_PER) || (ck_cntr - ck_write < write_latency + burst_length/2)) $display ("%m: at time %t ERROR: tWRPDEN violation during %s", $time, cmd_string[cmd]); end - - // read - {1'bx, SAME_BANK , READ , PRECHARGE} : begin if (($time - tm_bank_read_end[bank] < TRTP-TJIT_PER) || (ck_cntr - ck_bank_read[bank] < additive_latency + TRTP_TCK)) $display ("%m: at time %t ERROR: tRTP violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b0, DIFF_BANK , READ , WRITE } : ; // tRTW is checked outside this task - {1'b1, DIFF_BANK , READ , WRITE } : ; // tRTW is checked outside this task - {1'b0, DIFF_BANK , READ , READ } : begin if (ck_cntr - ck_read < TCCD) $display ("%m: at time %t ERROR: tCCD violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_BANK , READ , READ } : begin if (ck_cntr - ck_group_read[bank[1]] < TCCD) $display ("%m: at time %t ERROR: tCCD violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'b1, DIFF_GROUP, READ , WRITE } : ; // tRTW is checked outside this task - {1'b1, DIFF_GROUP, READ , READ } : begin if (ck_cntr - ck_read < TCCD_DG) $display ("%m: at time %t ERROR: tCCD_DG violation during %s to bank %d", $time, cmd_string[cmd], bank); end - {1'bx, DIFF_BANK , READ , PWR_DOWN } : begin if (ck_cntr - ck_read < read_latency + 5) $display ("%m: at time %t ERROR: tRDPDEN violation during %s", $time, cmd_string[cmd]); end - - // zq - {1'bx, DIFF_BANK , ZQ , LOAD_MODE} : ; // 1 tCK - {1'bx, DIFF_BANK , ZQ , REFRESH } , - {1'bx, DIFF_BANK , ZQ , PRECHARGE} , - {1'bx, DIFF_BANK , ZQ , ACTIVATE } , - {1'bx, DIFF_BANK , ZQ , ZQ } , - {1'bx, DIFF_BANK , ZQ , PWR_DOWN } , - {1'bx, DIFF_BANK , ZQ , SELF_REF } : begin if (ck_cntr - ck_zqinit < TZQINIT) $display ("%m: at time %t ERROR: tZQinit violation during %s", $time, cmd_string[cmd]); - if (ck_cntr - ck_zqoper < TZQOPER) $display ("%m: at time %t ERROR: tZQoper violation during %s", $time, cmd_string[cmd]); - if (ck_cntr - ck_zqcs < TZQCS) $display ("%m: at time %t ERROR: tZQCS violation during %s", $time, cmd_string[cmd]); end - - // power down - {1'bx, DIFF_BANK , PWR_DOWN , LOAD_MODE} , - {1'bx, DIFF_BANK , PWR_DOWN , REFRESH } , - {1'bx, DIFF_BANK , PWR_DOWN , PRECHARGE} , - {1'bx, DIFF_BANK , PWR_DOWN , ACTIVATE } , - {1'bx, DIFF_BANK , PWR_DOWN , WRITE } , - {1'bx, DIFF_BANK , PWR_DOWN , ZQ } : begin if (($time - tm_power_down < TXP) || (ck_cntr - ck_power_down < TXP_TCK)) $display ("%m: at time %t ERROR: tXP violation during %s", $time, cmd_string[cmd]); end - {1'bx, DIFF_BANK , PWR_DOWN , READ } : begin if (($time - tm_power_down < TXP) || (ck_cntr - ck_power_down < TXP_TCK)) $display ("%m: at time %t ERROR: tXP violation during %s", $time, cmd_string[cmd]); - else if (($time - tm_slow_exit_pd < TXPDLL) || (ck_cntr - ck_slow_exit_pd < TXPDLL_TCK)) $display ("%m: at time %t ERROR: tXPDLL violation during %s", $time, cmd_string[cmd]); end - {1'bx, DIFF_BANK , PWR_DOWN , PWR_DOWN } , - {1'bx, DIFF_BANK , PWR_DOWN , SELF_REF } : begin if (($time - tm_power_down < TXP) || (ck_cntr - ck_power_down < TXP_TCK)) $display ("%m: at time %t ERROR: tXP violation during %s", $time, cmd_string[cmd]); - if ((tm_power_down > tm_refresh) && ($time - tm_refresh < TRFC_MIN)) $display ("%m: at time %t ERROR: tRFC violation during %s", $time, cmd_string[cmd]); - if ((tm_refresh > tm_power_down) && (($time - tm_power_down < TXPDLL) || (ck_cntr - ck_power_down < TXPDLL_TCK))) $display ("%m: at time %t ERROR: tXPDLL violation during %s", $time, cmd_string[cmd]); - if (($time - tm_cke_cmd < TCKE) || (ck_cntr - ck_cke_cmd < TCKE_TCK)) $display ("%m: at time %t ERROR: tCKE violation on CKE", $time); end - - // self refresh - {1'bx, DIFF_BANK , SELF_REF , LOAD_MODE} , - {1'bx, DIFF_BANK , SELF_REF , REFRESH } , - {1'bx, DIFF_BANK , SELF_REF , PRECHARGE} , - {1'bx, DIFF_BANK , SELF_REF , ACTIVATE } , - {1'bx, DIFF_BANK , SELF_REF , WRITE } , - {1'bx, DIFF_BANK , SELF_REF , ZQ } : begin if (($time - tm_self_refresh < TXS) || (ck_cntr - ck_self_refresh < TXS_TCK)) $display ("%m: at time %t ERROR: tXS violation during %s", $time, cmd_string[cmd]); end - {1'bx, DIFF_BANK , SELF_REF , READ } : begin if (ck_cntr - ck_self_refresh < TXSDLL) $display ("%m: at time %t ERROR: tXSDLL violation during %s", $time, cmd_string[cmd]); end - {1'bx, DIFF_BANK , SELF_REF , PWR_DOWN } , - {1'bx, DIFF_BANK , SELF_REF , SELF_REF } : begin if (($time - tm_self_refresh < TXS) || (ck_cntr - ck_self_refresh < TXS_TCK)) $display ("%m: at time %t ERROR: tXS violation during %s", $time, cmd_string[cmd]); - if (($time - tm_cke_cmd < TCKE) || (ck_cntr - ck_cke_cmd < TCKE_TCK)) $display ("%m: at time %t ERROR: tCKE violation on CKE", $time); end - endcase - end - endtask - - task cmd_task; - inout prev_cke; - input cke; - input [2:0] cmd; - input [BA_BITS-1:0] bank; - input [ADDR_BITS-1:0] addr; - reg [`BANKS:0] i; - integer j; - reg [`BANKS:0] tfaw_cntr; - reg [COL_BITS-1:0] col; - reg group; - begin - // tRFC max check - if (!er_trfc_max && !in_self_refresh) begin - if ($time - tm_refresh > TRFC_MAX && check_strict_timing) begin - $display ("%m: at time %t ERROR: tRFC maximum violation during %s", $time, cmd_string[cmd]); - er_trfc_max = 1; - end - end - if (cke) begin - if ((cmd < NOP) && (cmd != PRECHARGE)) begin - if (($time - tm_txpr < TXPR) || (ck_cntr - ck_txpr < TXPR_TCK)) - $display ("%m: at time %t ERROR: tXPR violation during %s", $time, cmd_string[cmd]); - for (j=0; j<=SELF_REF; j=j+1) begin - chk_err(SAME_BANK , bank, j, cmd); - chk_err(DIFF_BANK , bank, j, cmd); - chk_err(DIFF_GROUP, bank, j, cmd); - end - end - case (cmd) - LOAD_MODE : begin - if (|odt_pipeline) - $display ("%m: at time %t ERROR: ODTL violation during %s", $time, cmd_string[cmd]); - if (odt_state && !feature_odt_hi) - $display ("%m: at time %t ERROR: ODT must be off prior to %s", $time, cmd_string[cmd]); - - if (|active_bank) begin - $display ("%m: at time %t ERROR: %s Failure. All banks must be Precharged.", $time, cmd_string[cmd]); - if (STOP_ON_ERROR) $stop(0); - end else begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d", $time, cmd_string[cmd], bank); - if (bank>>2) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved bank bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - case (bank) - 0 : begin - // Burst Length - if (addr[1:0] == 2'b00) begin - burst_length = 8; - blotf = 0; - truebl4 = 0; - if (DEBUG) $display ("%m: at time %t INFO: %s %d Burst Length = %d", $time, cmd_string[cmd], bank, burst_length); - end else if (addr[1:0] == 2'b01) begin - burst_length = 8; - blotf = 1; - if (DEBUG) $display ("%m: at time %t INFO: %s %d Burst Length = Select via A12", $time, cmd_string[cmd], bank); - end else if (addr[1:0] == 2'b10) begin - burst_length = 4; - blotf = 0; - if (DEBUG) $display ("%m: at time %t INFO: %s %d Burst Length = Fixed %d (chop)", $time, cmd_string[cmd], bank, burst_length); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Burst Length = %d", $time, cmd_string[cmd], bank, addr[1:0]); - end - // Burst Order - burst_order = addr[3]; - if (!burst_order) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Burst Order = Sequential", $time, cmd_string[cmd], bank); - end else if (burst_order) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Burst Order = Interleaved", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Burst Order = %d", $time, cmd_string[cmd], bank, burst_order); - end - // CAS Latency - cas_latency = {addr[2],addr[6:4]} + 4; - set_latency; - if ((cas_latency >= CL_MIN) && (cas_latency <= CL_MAX)) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d CAS Latency = %d", $time, cmd_string[cmd], bank, cas_latency); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal CAS Latency = %d", $time, cmd_string[cmd], bank, cas_latency); - end - // Reserved - if (addr[7] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - // DLL Reset - dll_reset = addr[8]; - if (!dll_reset) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d DLL Reset = Normal", $time, cmd_string[cmd], bank); - end else if (dll_reset) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d DLL Reset = Reset DLL", $time, cmd_string[cmd], bank); - dll_locked = 0; - init_dll_reset = 1; - ck_dll_reset <= ck_cntr; - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal DLL Reset = %d", $time, cmd_string[cmd], bank, dll_reset); - end - - // Write Recovery - if (addr[11:9] == 0) begin - write_recovery = 16; - end else if (addr[11:9] < 4) begin - write_recovery = addr[11:9] + 4; - end else begin - write_recovery = 2*addr[11:9]; - end - - if ((write_recovery >= WR_MIN) && (write_recovery <= WR_MAX)) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Write Recovery = %d", $time, cmd_string[cmd], bank, write_recovery); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Write Recovery = %d", $time, cmd_string[cmd], bank, write_recovery); - end - // Power Down Mode - low_power = !addr[12]; - if (!low_power) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Power Down Mode = DLL on", $time, cmd_string[cmd], bank); - end else if (low_power) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Power Down Mode = DLL off", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Power Down Mode = %d", $time, cmd_string[cmd], bank, low_power); - end - // Reserved - if (ADDR_BITS>13 && addr[13] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - end - 1 : begin - // DLL Enable - dll_en = !addr[0]; - if (!dll_en) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d DLL Enable = Disabled", $time, cmd_string[cmd], bank); - if (check_strict_mrbits) $display ("%m: at time %t WARNING: %s %d DLL off mode is not fully modeled", $time, cmd_string[cmd], bank); - end else if (dll_en) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d DLL Enable = Enabled", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal DLL Enable = %d", $time, cmd_string[cmd], bank, dll_en); - end - // Output Drive Strength - if ({addr[5], addr[1]} == 2'b00) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Output Drive Strength = %d Ohm", $time, cmd_string[cmd], bank, RZQ/6); - end else if ({addr[5], addr[1]} == 2'b01) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Output Drive Strength = %d Ohm", $time, cmd_string[cmd], bank, RZQ/7); - end else if ({addr[5], addr[1]} == 2'b11) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Output Drive Strength = %d Ohm", $time, cmd_string[cmd], bank, RZQ/5); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Output Drive Strength = %d", $time, cmd_string[cmd], bank, {addr[5], addr[1]}); - end - // ODT Rtt (Rtt_NOM) - odt_rtt_nom = {addr[9], addr[6], addr[2]}; - if (odt_rtt_nom == 3'b000) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d ODT Rtt = Disabled", $time, cmd_string[cmd], bank); - odt_en = 0; - end else if ((odt_rtt_nom < 4) || ((!addr[7] || (addr[7] && addr[12])) && (odt_rtt_nom < 6))) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d ODT Rtt = %d Ohm", $time, cmd_string[cmd], bank, get_rtt_nom(odt_rtt_nom)); - odt_en = 1; - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal ODT Rtt = %d", $time, cmd_string[cmd], bank, odt_rtt_nom); - odt_en = 0; - end - // Report the additive latency value - al = addr[4:3]; - set_latency; - if (al == 0) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Additive Latency = %d", $time, cmd_string[cmd], bank, al); - end else if ((al >= AL_MIN) && (al <= AL_MAX)) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Additive Latency = CL - %d", $time, cmd_string[cmd], bank, al); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Additive Latency = %d", $time, cmd_string[cmd], bank, al); - end - // Write Levelization - write_levelization = addr[7]; - if (!write_levelization) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Write Levelization = Disabled", $time, cmd_string[cmd], bank); - end else if (write_levelization) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Write Levelization = Enabled", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Write Levelization = %d", $time, cmd_string[cmd], bank, write_levelization); - end - // Reserved - if (addr[8] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - // Reserved - if (addr[10] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - // TDQS Enable - tdqs_en = addr[11]; - if (!tdqs_en) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d TDQS Enable = Disabled", $time, cmd_string[cmd], bank); - end else if (tdqs_en) begin - if (8 == DQ_BITS) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d TDQS Enable = Enabled", $time, cmd_string[cmd], bank); - end - else begin - $display ("%m: at time %t WARNING: %s %d Illegal TDQS Enable. TDQS only exists on a x8 part", $time, cmd_string[cmd], bank); - tdqs_en = 0; - end - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal TDQS Enable = %d", $time, cmd_string[cmd], bank, tdqs_en); - end - // Output Enable - out_en = !addr[12]; - if (!out_en) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Qoff = Disabled", $time, cmd_string[cmd], bank); - end else if (out_en) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Qoff = Enabled", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Qoff = %d", $time, cmd_string[cmd], bank, out_en); - end - // Reserved - if (ADDR_BITS>13 && addr[13] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - end - 2 : begin - if (feature_pasr) begin - // Partial Array Self Refresh - pasr = addr[2:0]; - case (pasr) - 3'b000 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 0-7", $time, cmd_string[cmd], bank); - 3'b001 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 0-3", $time, cmd_string[cmd], bank); - 3'b010 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 0-1", $time, cmd_string[cmd], bank); - 3'b011 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 0", $time, cmd_string[cmd], bank); - 3'b100 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 2-7", $time, cmd_string[cmd], bank); - 3'b101 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 4-7", $time, cmd_string[cmd], bank); - 3'b110 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 6-7", $time, cmd_string[cmd], bank); - 3'b111 : if (DEBUG) $display ("%m: at time %t INFO: %s %d Partial Array Self Refresh = Bank 7", $time, cmd_string[cmd], bank); - default : $display ("%m: at time %t ERROR: %s %d Illegal Partial Array Self Refresh = %d", $time, cmd_string[cmd], bank, pasr); - endcase - end - else - if (addr[2:0] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - // CAS Write Latency - cas_write_latency = addr[5:3]+5; - set_latency; - if ((cas_write_latency >= CWL_MIN) && (cas_write_latency <= CWL_MAX)) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d CAS Write Latency = %d", $time, cmd_string[cmd], bank, cas_write_latency); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal CAS Write Latency = %d", $time, cmd_string[cmd], bank, cas_write_latency); - end - // Auto Self Refresh Method - asr = addr[6]; - if (!asr) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Auto Self Refresh = Disabled", $time, cmd_string[cmd], bank); - end else if (asr) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Auto Self Refresh = Enabled", $time, cmd_string[cmd], bank); - if (check_strict_mrbits) $display ("%m: at time %t WARNING: %s %d Auto Self Refresh is not modeled", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Auto Self Refresh = %d", $time, cmd_string[cmd], bank, asr); - end - // Self Refresh Temperature - srt = addr[7]; - if (!srt) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Self Refresh Temperature = Normal", $time, cmd_string[cmd], bank); - end else if (srt) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Self Refresh Temperature = Extended", $time, cmd_string[cmd], bank); - if (check_strict_mrbits) $display ("%m: at time %t WARNING: %s %d Self Refresh Temperature is not modeled", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Self Refresh Temperature = %d", $time, cmd_string[cmd], bank, srt); - end - if (asr && srt) - $display ("%m: at time %t ERROR: %s %d SRT must be set to 0 when ASR is enabled.", $time, cmd_string[cmd], bank); - // Reserved - if (addr[8] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - // Dynamic ODT (Rtt_WR) - odt_rtt_wr = addr[10:9]; - if (odt_rtt_wr == 2'b00) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Dynamic ODT = Disabled", $time, cmd_string[cmd], bank); - dyn_odt_en = 0; - end else if ((odt_rtt_wr > 0) && (odt_rtt_wr < 3)) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d Dynamic ODT Rtt = %d Ohm", $time, cmd_string[cmd], bank, get_rtt_wr(odt_rtt_wr)); - dyn_odt_en = 1; - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal Dynamic ODT = %d", $time, cmd_string[cmd], bank, odt_rtt_wr); - dyn_odt_en = 0; - end - // Reserved - if (ADDR_BITS>13 && addr[13:11] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - end - 3 : begin - mpr_select = addr[1:0]; - // MultiPurpose Register Select - if (mpr_select == 2'b00) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d MultiPurpose Register Select = Pre-defined pattern", $time, cmd_string[cmd], bank); - end else begin - if (check_strict_mrbits) $display ("%m: at time %t ERROR: %s %d Illegal MultiPurpose Register Select = %d", $time, cmd_string[cmd], bank, mpr_select); - end - // MultiPurpose Register Enable - mpr_en = addr[2]; - if (!mpr_en) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d MultiPurpose Register Enable = Disabled", $time, cmd_string[cmd], bank); - end else if (mpr_en) begin - if (DEBUG) $display ("%m: at time %t INFO: %s %d MultiPurpose Register Enable = Enabled", $time, cmd_string[cmd], bank); - end else begin - $display ("%m: at time %t ERROR: %s %d Illegal MultiPurpose Register Enable = %d", $time, cmd_string[cmd], bank, mpr_en); - end - - if (feature_truebl4 && (addr[11] == 1'b1)) begin - if (addr[11] == 1'b1) begin - truebl4 = 1; - $display(" EMRS3 Set True Bl4 mode only "); - end - end - - // Reserved - if (ADDR_BITS>13 && addr[13:3] !== 0 && check_strict_mrbits) begin - $display ("%m: at time %t ERROR: %s %d Illegal value. Reserved address bits must be programmed to zero", $time, cmd_string[cmd], bank); - end - end - endcase - if (dyn_odt_en && write_levelization) - $display ("%m: at time %t ERROR: Dynamic ODT is not available during Write Leveling mode.", $time); - init_mode_reg[bank] = 1; - mode_reg[bank] = addr; - // dll_reset bit self clear - if(bank==0 && addr[8]==1'b1) - mode_reg[0][8] <= #($rtoi(tck_avg)) 1'b0; - tm_load_mode <= $time; - ck_load_mode <= ck_cntr; - end - end - REFRESH : begin - if (mpr_en) begin - $display ("%m: at time %t ERROR: %s Failure. Multipurpose Register must be disabled.", $time, cmd_string[cmd]); - if (STOP_ON_ERROR) $stop(0); - end else if (|active_bank) begin - $display ("%m: at time %t ERROR: %s Failure. All banks must be Precharged.", $time, cmd_string[cmd]); - if (STOP_ON_ERROR) $stop(0); - end else begin - if (DEBUG) $display ("%m: at time %t INFO: %s", $time, cmd_string[cmd]); - er_trfc_max = 0; - ref_cntr = ref_cntr + 1; - tm_refresh <= $time; - ck_refresh <= ck_cntr; - end - end - PRECHARGE : begin - if (addr[AP]) begin - if (DEBUG) $display ("%m: at time %t INFO: %s All", $time, cmd_string[cmd]); - end - // PRECHARGE command will be treated as a NOP if there is no open row in that bank (idle state), - // or if the previously open row is already in the process of precharging - if (|active_bank) begin - if (($time - tm_txpr < TXPR) || (ck_cntr - ck_txpr < TXPR_TCK)) - $display ("%m: at time %t ERROR: tXPR violation during %s", $time, cmd_string[cmd]); - if (mpr_en) begin - $display ("%m: at time %t ERROR: %s Failure. Multipurpose Register must be disabled.", $time, cmd_string[cmd]); - if (STOP_ON_ERROR) $stop(0); - end else begin - for (i=0; i<`BANKS; i=i+1) begin - if (active_bank[i]) begin - if (addr[AP] || (i == bank)) begin - - for (j=0; j<=SELF_REF; j=j+1) begin - chk_err(SAME_BANK, i, j, cmd); - chk_err(DIFF_BANK, i, j, cmd); - end - - if (auto_precharge_bank[i]) begin - $display ("%m: at time %t ERROR: %s Failure. Auto Precharge is scheduled to bank %d.", $time, cmd_string[cmd], i); - if (STOP_ON_ERROR) $stop(0); - end else begin - if (DEBUG) $display ("%m: at time %t INFO: %s bank %d", $time, cmd_string[cmd], i); - active_bank[i] = 1'b0; - tm_bank_precharge[i] <= $time; - tm_precharge <= $time; - ck_precharge <= ck_cntr; - end - end - end - end - end - end // if (|active_bank) - else begin - chk_err(DIFF_BANK, 0, REFRESH, PRECHARGE); - end - end - ACTIVATE : begin - tfaw_cntr = 0; - for (i=0; i<`BANKS; i=i+1) begin - if ($time - tm_bank_activate[i] < TFAW) begin - tfaw_cntr = tfaw_cntr + 1; - end - end - if (tfaw_cntr > 3) begin - $display ("%m: at time %t ERROR: tFAW violation during %s to bank %d", $time, cmd_string[cmd], bank); - end - - if (mpr_en) begin - $display ("%m: at time %t ERROR: %s Failure. Multipurpose Register must be disabled.", $time, cmd_string[cmd]); - if (STOP_ON_ERROR) $stop(0); - end else if (!init_done) begin - $display ("%m: at time %t ERROR: %s Failure. Initialization sequence is not complete.", $time, cmd_string[cmd]); - if (STOP_ON_ERROR) $stop(0); - end else if (active_bank[bank]) begin - $display ("%m: at time %t ERROR: %s Failure. Bank %d must be Precharged.", $time, cmd_string[cmd], bank); - if (STOP_ON_ERROR) $stop(0); - end else begin - if (addr >= 1< AP -`else - col = {addr[BC-1:AP+1], addr[AP-1:0]}; // assume BC > AP -`endif - if (col >= 1< AP -`else - col = {addr[BC-1:AP+1], addr[AP-1:0]}; // assume BC > AP -`endif - if (col >= 1< TPD_MAX) - $display ("%m: at time %t ERROR: tPD maximum violation during Power Down Exit", $time); - if (DEBUG) $display ("%m: at time %t INFO: Power Down Exit", $time); - in_power_down = 0; - if ((active_bank == 0) && low_power) begin // precharge power down with dll off - if (ck_cntr - ck_odt < write_latency - 1) - $display ("%m: at time %t WARNING: tANPD violation during Power Down Exit. Synchronous or asynchronous change in termination resistance is possible.", $time); - tm_slow_exit_pd <= $time; - ck_slow_exit_pd <= ck_cntr; - end - tm_power_down <= $time; - ck_power_down <= ck_cntr; - end - if (in_self_refresh) begin - if (($time - tm_freq_change < TCKSRX) || (ck_cntr - ck_freq_change < TCKSRX_TCK)) - $display ("%m: at time %t ERROR: tCKSRX violation during Self Refresh Exit", $time); - if (ck_cntr - ck_cke_cmd < TCKESR_TCK) - $display ("%m: at time %t ERROR: tCKESR violation during Self Refresh Exit", $time); - if ($time - tm_cke < TISXR) - $display ("%m: at time %t ERROR: tISXR violation during Self Refresh Exit", $time); - if (DEBUG) $display ("%m: at time %t INFO: Self Refresh Exit", $time); - in_self_refresh = 0; - ck_dll_reset <= ck_cntr; - ck_self_refresh <= ck_cntr; - tm_self_refresh <= $time; - tm_refresh <= $time; - end - end - endcase - if ((prev_cke !== 1) && (cmd !== NOP)) begin - $display ("%m: at time %t ERROR: NOP or Deselect is required when CKE goes active.", $time); - end - - if (!init_done) begin - case (init_step) - 0 : begin - if ($time - tm_rst_n < 500000000 && check_strict_timing) - $display ("%m at time %t WARNING: 500 us is required after RST_N goes inactive before CKE goes active.", $time); - tm_txpr <= $time; - ck_txpr <= ck_cntr; - init_step = init_step + 1; - end - 1 : begin - if (dll_en) init_step = init_step + 1; - end - 2 : begin - if (&init_mode_reg && init_dll_reset && zq_set) begin - if (DEBUG) $display ("%m: at time %t INFO: Initialization Sequence is complete", $time); - init_done = 1; - end - end - endcase - end - end else if (prev_cke) begin - if ((!init_done) && (init_step > 1)) begin - $display ("%m: at time %t ERROR: CKE must remain active until the initialization sequence is complete.", $time); - if (STOP_ON_ERROR) $stop(0); - end - case (cmd) - REFRESH : begin - if ($time - tm_txpr < TXPR) - $display ("%m: at time %t ERROR: tXPR violation during %s", $time, cmd_string[SELF_REF]); - for (j=0; j<=SELF_REF; j=j+1) begin - chk_err(DIFF_BANK, bank, j, SELF_REF); - end - - if (mpr_en) begin - $display ("%m: at time %t ERROR: Self Refresh Failure. Multipurpose Register must be disabled.", $time); - if (STOP_ON_ERROR) $stop(0); - end else if (|active_bank) begin - $display ("%m: at time %t ERROR: Self Refresh Failure. All banks must be Precharged.", $time); - if (STOP_ON_ERROR) $stop(0); - end else if (odt_state) begin - $display ("%m: at time %t ERROR: Self Refresh Failure. ODT must be off prior to entering Self Refresh", $time); - if (STOP_ON_ERROR) $stop(0); - end else if (!init_done) begin - $display ("%m: at time %t ERROR: Self Refresh Failure. Initialization sequence is not complete.", $time); - if (STOP_ON_ERROR) $stop(0); - end else begin - if (DEBUG) $display ("%m: at time %t INFO: Self Refresh Enter", $time); - if (feature_pasr) - // Partial Array Self Refresh - case (pasr) - 3'b000 : ;//keep Bank 0-7 - 3'b001 : begin if (DEBUG) $display("%m: at time %t INFO: Banks 4-7 will be lost due to Partial Array Self Refresh", $time); erase_banks(8'hF0); end - 3'b010 : begin if (DEBUG) $display("%m: at time %t INFO: Banks 2-7 will be lost due to Partial Array Self Refresh", $time); erase_banks(8'hFC); end - 3'b011 : begin if (DEBUG) $display("%m: at time %t INFO: Banks 1-7 will be lost due to Partial Array Self Refresh", $time); erase_banks(8'hFE); end - 3'b100 : begin if (DEBUG) $display("%m: at time %t INFO: Banks 0-1 will be lost due to Partial Array Self Refresh", $time); erase_banks(8'h03); end - 3'b101 : begin if (DEBUG) $display("%m: at time %t INFO: Banks 0-3 will be lost due to Partial Array Self Refresh", $time); erase_banks(8'h0F); end - 3'b110 : begin if (DEBUG) $display("%m: at time %t INFO: Banks 0-5 will be lost due to Partial Array Self Refresh", $time); erase_banks(8'h3F); end - 3'b111 : begin if (DEBUG) $display("%m: at time %t INFO: Banks 0-6 will be lost due to Partial Array Self Refresh", $time); erase_banks(8'h7F); end - endcase - in_self_refresh = 1; - dll_locked = 0; - end - end - NOP : begin - // entering precharge power down with dll off and tANPD has not been satisfied - if (low_power && (active_bank == 0) && |odt_pipeline) - $display ("%m: at time %t WARNING: tANPD violation during %s. Synchronous or asynchronous change in termination resistance is possible.", $time, cmd_string[PWR_DOWN]); - if ($time - tm_txpr < TXPR) - $display ("%m: at time %t ERROR: tXPR violation during %s", $time, cmd_string[PWR_DOWN]); - for (j=0; j<=SELF_REF; j=j+1) begin - chk_err(DIFF_BANK, bank, j, PWR_DOWN); - end - - if (mpr_en) begin - $display ("%m: at time %t ERROR: Power Down Failure. Multipurpose Register must be disabled.", $time); - if (STOP_ON_ERROR) $stop(0); - end else if (!init_done) begin - $display ("%m: at time %t ERROR: Power Down Failure. Initialization sequence is not complete.", $time); - if (STOP_ON_ERROR) $stop(0); - end else begin - if (DEBUG) begin - if (|active_bank) begin - $display ("%m: at time %t INFO: Active Power Down Enter", $time); - end else begin - $display ("%m: at time %t INFO: Precharge Power Down Enter", $time); - end - end - in_power_down = 1; - end - end - default : begin - $display ("%m: at time %t ERROR: NOP, Deselect, or Refresh is required when CKE goes inactive.", $time); - end - endcase - end else if (in_self_refresh || in_power_down) begin - if ((ck_cntr - ck_cke_cmd <= TCPDED) && (cmd !== NOP)) - $display ("%m: at time %t ERROR: tCPDED violation during Power Down or Self Refresh Entry. NOP or Deselect is required.", $time); - end - prev_cke = cke; - - end - endtask - - task data_task; - reg [BA_BITS-1:0] bank; - reg [ROW_BITS-1:0] row; - reg [COL_BITS-1:0] col; - integer i; - integer j; - begin - - if (diff_ck) begin - for (i=0; i<64; i=i+1) begin - if (dq_in_valid && dll_locked && ($time - tm_dqs_neg[i] < $rtoi(TDSS*tck_avg))) - $display ("%m: at time %t ERROR: tDSS violation on %s bit %d", $time, dqs_string[i/32], i%32); - if (check_write_dqs_high[i]) - $display ("%m: at time %t ERROR: %s bit %d latching edge required during the preceding clock period.", $time, dqs_string[i/32], i%32); - end - check_write_dqs_high <= 0; - end else begin - for (i=0; i<64; i=i+1) begin - if (dll_locked && dq_in_valid) begin - tm_tdqss = abs_value(1.0*tm_ck_pos - tm_dqss_pos[i]); - if ((tm_tdqss < tck_avg/2.0) && (tm_tdqss > TDQSS*tck_avg)) - $display ("%m: at time %t ERROR: tDQSS violation on %s bit %d", $time, dqs_string[i/32], i%32); - end - if (check_write_dqs_low[i]) - $display ("%m: at time %t ERROR: %s bit %d latching edge required during the preceding clock period", $time, dqs_string[i/32], i%32); - end - check_write_preamble <= 0; - check_write_postamble <= 0; - check_write_dqs_low <= 0; - end - - if (wr_pipeline[0] || rd_pipeline[0]) begin - bank = ba_pipeline[0]; - row = row_pipeline[0]; - col = col_pipeline[0]; - burst_cntr = 0; - memory_read(bank, row, col, memory_data); - end - - // burst counter - if (burst_cntr < burst_length) begin - burst_position = col ^ burst_cntr; - if (!burst_order) begin - burst_position[BO_BITS-1:0] = col + burst_cntr; - end - burst_cntr = burst_cntr + 1; - end - - // write dqs counter - if (wr_pipeline[WDQS_PRE + 1]) begin - wdqs_cntr = WDQS_PRE + bl_pipeline[WDQS_PRE + 1] + WDQS_PST - 1; - end - // write dqs - if ((wr_pipeline[2]) && (wdq_cntr == 0)) begin //write preamble - check_write_preamble <= ({DQS_BITS{1'b1}}<<32) | {DQS_BITS{1'b1}}; - end - if (wdqs_cntr > 1) begin // write data - if ((wdqs_cntr - WDQS_PST)%2) begin - check_write_dqs_high <= ({DQS_BITS{1'b1}}<<32) | {DQS_BITS{1'b1}}; - end else begin - check_write_dqs_low <= ({DQS_BITS{1'b1}}<<32) | {DQS_BITS{1'b1}}; - end - end - if (wdqs_cntr == WDQS_PST) begin // write postamble - check_write_postamble <= ({DQS_BITS{1'b1}}<<32) | {DQS_BITS{1'b1}}; - end - if (wdqs_cntr > 0) begin - wdqs_cntr = wdqs_cntr - 1; - end - - // write dq - if (dq_in_valid) begin // write data - bit_mask = 0; - if (diff_ck) begin - for (i=0; i>(burst_position*DQ_BITS); - if (DEBUG) $display ("%m: at time %t INFO: WRITE @ DQS= bank = %h row = %h col = %h data = %h",$time, bank, row, (-1*BL_MAX & col) + burst_position, dq_temp); - if (burst_cntr%BL_MIN == 0) begin - memory_write(bank, row, col, memory_data); - end - end - if (wr_pipeline[1]) begin - wdq_cntr = bl_pipeline[1]; - end - if (wdq_cntr > 0) begin - wdq_cntr = wdq_cntr - 1; - dq_in_valid = 1'b1; - end else begin - dq_in_valid = 1'b0; - dqs_in_valid <= 1'b0; - for (i=0; i<63; i=i+1) begin - wdqs_pos_cntr[i] <= 0; - end - end - if (wr_pipeline[0]) begin - b2b_write <= 1'b0; - end - if (wr_pipeline[2]) begin - if (dqs_in_valid) begin - b2b_write <= 1'b1; - end - dqs_in_valid <= 1'b1; - wr_burst_length = bl_pipeline[2]; - end - - // read dqs enable counter - if (rd_pipeline[RDQSEN_PRE]) begin - rdqsen_cntr = RDQSEN_PRE + bl_pipeline[RDQSEN_PRE] + RDQSEN_PST - 1; - end - if (rdqsen_cntr > 0) begin - rdqsen_cntr = rdqsen_cntr - 1; - dqs_out_en = 1'b1; - end else begin - dqs_out_en = 1'b0; - end - - // read dqs counter - if (rd_pipeline[RDQS_PRE]) begin - rdqs_cntr = RDQS_PRE + bl_pipeline[RDQS_PRE] + RDQS_PST - 1; - end - // read dqs - if (((rd_pipeline>>1 & {RDQS_PRE{1'b1}}) > 0) && (rdq_cntr == 0)) begin //read preamble - dqs_out = 1'b0; - end else if (rdqs_cntr > RDQS_PST) begin // read data - dqs_out = rdqs_cntr - RDQS_PST; - end else if (rdqs_cntr > 0) begin // read postamble - dqs_out = 1'b0; - end else begin - dqs_out = 1'b1; - end - if (rdqs_cntr > 0) begin - rdqs_cntr = rdqs_cntr - 1; - end - - // read dq enable counter - if (rd_pipeline[RDQEN_PRE]) begin - rdqen_cntr = RDQEN_PRE + bl_pipeline[RDQEN_PRE] + RDQEN_PST; - end - if (rdqen_cntr > 0) begin - rdqen_cntr = rdqen_cntr - 1; - dq_out_en = 1'b1; - end else begin - dq_out_en = 1'b0; - end - // read dq - if (rd_pipeline[0]) begin - rdq_cntr = bl_pipeline[0]; - end - if (rdq_cntr > 0) begin // read data - if (mpr_en) begin -`ifdef MPR_DQ0 // DQ0 output MPR data, other DQ low - if (mpr_select == 2'b00) begin // Calibration Pattern - dq_temp = {DQS_BITS{{`DQ_PER_DQS-1{1'b0}}, calibration_pattern[burst_position]}}; - end else if (odts_readout && (mpr_select == 2'b11)) begin // Temp Sensor (ODTS) - dq_temp = {DQS_BITS{{`DQ_PER_DQS-1{1'b0}}, temp_sensor[burst_position]}}; - end else begin // Reserved - dq_temp = {DQS_BITS{{`DQ_PER_DQS-1{1'b0}}, 1'bx}}; - end -`else // all DQ output MPR data - if (mpr_select == 2'b00) begin // Calibration Pattern - dq_temp = {DQS_BITS{{`DQ_PER_DQS{calibration_pattern[burst_position]}}}}; - end else if (odts_readout && (mpr_select == 2'b11)) begin // Temp Sensor (ODTS) - dq_temp = {DQS_BITS{{`DQ_PER_DQS{temp_sensor[burst_position]}}}}; - end else begin // Reserved - dq_temp = {DQS_BITS{{`DQ_PER_DQS{1'bx}}}}; - end -`endif - if (DEBUG) $display ("%m: at time %t READ @ DQS MultiPurpose Register %d, col = %d, data = %b", $time, mpr_select, burst_position, dq_temp[0]); - end else begin - dq_temp = memory_data>>(burst_position*DQ_BITS); - if (DEBUG) $display ("%m: at time %t INFO: READ @ DQS= bank = %h row = %h col = %h data = %h",$time, bank, row, (-1*BL_MAX & col) + burst_position, dq_temp); - end - dq_out = dq_temp; - rdq_cntr = rdq_cntr - 1; - end else begin - dq_out = {DQ_BITS{1'b1}}; - end - - // delay signals prior to output - if (RANDOM_OUT_DELAY && (dqs_out_en || (|dqs_out_en_dly) || dq_out_en || (|dq_out_en_dly))) begin - for (i=0; i dqsck[i] + TQH*tck_avg + TDQSQ) begin - dqsck_max = dqsck[i] + TQH*tck_avg + TDQSQ; - end - dqsck_min = -1*TDQSCK; - if (dqsck_min < dqsck[i] - TQH*tck_avg - TDQSQ) begin - dqsck_min = dqsck[i] - TQH*tck_avg - TDQSQ; - end - - // DQSQ requirements - // 1.) less than tDQSQ - // 2.) greater than 0 - // 3.) greater than tQH from the previous DQS edge - dqsq_min = 0; - if (dqsq_min < dqsck[i] - TQH*tck_avg) begin - dqsq_min = dqsck[i] - TQH*tck_avg; - end - if (dqsck_min == dqsck_max) begin - dqsck[i] = dqsck_min; - end else begin - dqsck[i] = $dist_uniform(seed, dqsck_min, dqsck_max); - end - dqsq_max = TDQSQ + dqsck[i]; - - dqs_out_en_dly[i] <= #(tck_avg/2) dqs_out_en; - dqs_out_dly[i] <= #(tck_avg/2 + dqsck[i]) dqs_out; - if (!write_levelization) begin - for (j=0; j<`DQ_PER_DQS; j=j+1) begin - dq_out_en_dly[i*`DQ_PER_DQS + j] <= #(tck_avg/2) dq_out_en; - if (dqsq_min == dqsq_max) begin - dq_out_dly [i*`DQ_PER_DQS + j] <= #(tck_avg/2 + dqsq_min) dq_out[i*`DQ_PER_DQS + j]; - end else begin - dq_out_dly [i*`DQ_PER_DQS + j] <= #(tck_avg/2 + $dist_uniform(seed, dqsq_min, dqsq_max)) dq_out[i*`DQ_PER_DQS + j]; - end - end - end - end - end else begin - if (dll_en) - if(diff_ck) - out_delay = ($rtoi(tch_avg) > 50000) ? 0 : $rtoi(tch_avg); - else - out_delay = ($rtoi(tcl_avg) > 50000) ? 0 : $rtoi(tcl_avg); - else - if(diff_ck) - out_delay = ($rtoi(tch_avg) > 50000) ? 0 : $rtoi(tch_avg) + TDQSCK_DLLDIS; - else - out_delay = ($rtoi(tcl_avg) > 50000) ? 0 : $rtoi(tcl_avg) + TDQSCK_DLLDIS; - dqs_out_en_dly <= #(out_delay) {DQS_BITS{dqs_out_en}}; - dqs_out_dly <= #(out_delay) {DQS_BITS{dqs_out }}; - if (write_levelization !== 1'b1) begin - dq_out_en_dly <= #(out_delay) {DQ_BITS {dq_out_en }}; - dq_out_dly <= #(out_delay) {DQ_BITS {dq_out }}; - end - end - end - endtask - - always @ (posedge rst_n_in) begin : reset - integer i; - if (rst_n_in) begin - if ($time < 200000000 && check_strict_timing) - $display ("%m at time %t WARNING: 200 us is required before RST_N goes inactive.", $time); - if (cke_in !== 1'b0) - $display ("%m: at time %t ERROR: CKE must be inactive when RST_N goes inactive.", $time); - if ($time - tm_cke < 10000) - $display ("%m: at time %t ERROR: CKE must be maintained inactive for 10 ns before RST_N goes inactive.", $time); - - // clear memory -`ifdef MAX_MEM - // verification group does not erase memory - // for (banki = 0; banki < `BANKS; banki = banki + 1) begin - // $fclose(memfd[banki]); - // memfd[banki] = open_bank_file(banki); - // end -`else - memory_used <= 0; //erase memory -`endif - - end - end - - always @(negedge rst_n_in or posedge diff_ck or negedge diff_ck) begin : main - integer i; - if (!rst_n_in) begin - reset_task; - end else begin - if (!in_self_refresh && (diff_ck !== 1'b0) && (diff_ck !== 1'b1)) - $display ("%m: at time %t ERROR: CK and CK_N are not allowed to go to an unknown state.", $time); - data_task; - - // Clock Frequency Change is legal: - // 1.) During Self Refresh - // 2.) During Precharge Power Down (DLL on or off) - if (in_self_refresh || (in_power_down && (active_bank == 0))) begin - if (diff_ck) begin - tjit_per_rtime = $time - tm_ck_pos - tck_avg; - end else begin - tjit_per_rtime = $time - tm_ck_neg - tck_avg; - end - if (dll_locked && (abs_value(tjit_per_rtime) > TJIT_PER)) begin - if ((tm_ck_pos - tm_cke_cmd < TCKSRE) || (ck_cntr - ck_cke_cmd < TCKSRE_TCK)) - $display ("%m: at time %t ERROR: tCKSRE violation during Self Refresh or Precharge Power Down Entry", $time); - if (odt_state) begin - $display ("%m: at time %t ERROR: Clock Frequency Change Failure. ODT must be off prior to Clock Frequency Change.", $time); - if (STOP_ON_ERROR) $stop(0); - end else begin - if (DEBUG) $display ("%m: at time %t INFO: Clock Frequency Change detected. DLL Reset is Required.", $time); - tm_freq_change <= $time; - ck_freq_change <= ck_cntr; - dll_locked = 0; - end - end - end - - if (diff_ck) begin - // check setup of command signals - if ($time > TIS) begin - if ($time - tm_cke < TIS) - $display ("%m: at time %t ERROR: tIS violation on CKE by %t", $time, tm_cke + TIS - $time); - if (cke_in) begin - for (i=0; i<3; i=i+1) begin - if ($time - tm_cmd_addr[i] < TIS) - $display ("%m: at time %t ERROR: tIS violation on %s by %t", $time, cmd_addr_string[i], tm_cmd_addr[i] + TIS - $time); - end - end - if (cke_in & !(cs_n_in | (ras_n_in & cas_n_in & we_n_in))) begin // Bank and Address are don't care when DES or NOP - for (i=4; i<23; i=i+1) begin - if ($time - tm_cmd_addr[i] < TIS) - $display ("%m: at time %t ERROR: tIS violation on %s by %t", $time, cmd_addr_string[i], tm_cmd_addr[i] + TIS - $time); - end - end - end - - // update current state - if (dll_locked) begin - if (mr_chk == 0) begin - mr_chk = 1; - end else if (init_mode_reg[0] && (mr_chk == 1)) begin - // check CL value against the clock frequency - // check WR value against the clock frequency - if (ceil(write_recovery*tck_avg) < TWR) - $display ("%m: at time %t ERROR: Write Recovery = %d is illegal @tCK(avg) = %f", $time, write_recovery, tck_avg); - // check the CWL value against the clock frequency - if (check_strict_timing) begin - case (cas_write_latency) - 5 : if (tck_avg < 2500.0) $display ("%m: at time %t ERROR: CWL = %d is illegal @tCK(avg) = %f", $time, cas_write_latency, tck_avg); - 6 : if ((tck_avg < 1875.0) || (tck_avg >= 2500.0)) $display ("%m: at time %t ERROR: CWL = %d is illegal @tCK(avg) = %f", $time, cas_write_latency, tck_avg); - 7 : if ((tck_avg < 1500.0) || (tck_avg >= 1875.0)) $display ("%m: at time %t ERROR: CWL = %d is illegal @tCK(avg) = %f", $time, cas_write_latency, tck_avg); - 8 : if ((tck_avg < 1250.0) || (tck_avg >= 1500.0)) $display ("%m: at time %t ERROR: CWL = %d is illegal @tCK(avg) = %f", $time, cas_write_latency, tck_avg); - 9 : if ((tck_avg < 1071.0) || (tck_avg >= 1250.0)) $display ("%m: at time %t ERROR: CWL = %d is illegal @tCK(avg) = %f", $time, cas_write_latency, tck_avg); - 10: if ((tck_avg < 937.5) || (tck_avg >= 1071.0)) $display ("%m: at time %t ERROR: CWL = %d is illegal @tCK(avg) = %f", $time, cas_write_latency, tck_avg); - default : $display ("%m: at time %t ERROR: CWL = %d is illegal @tCK(avg) = %f", $time, cas_write_latency, tck_avg); - endcase - // check the CL value against the clock frequency - if (!valid_cl(cas_latency, cas_write_latency)) - $display ("%m: at time %t ERROR: CAS Latency = %d is not valid when CAS Write Latency = %d", $time, cas_latency, cas_write_latency); - end - mr_chk = 2; - end - end else if (!in_self_refresh) begin - mr_chk = 0; - if (ck_cntr - ck_dll_reset == TDLLK) begin - dll_locked = 1; - end - end - - if (|auto_precharge_bank) begin - for (i=0; i<`BANKS; i=i+1) begin - // Write with Auto Precharge Calculation - // 1. Meet minimum tRAS requirement - // 2. Write Latency PLUS BL/2 cycles PLUS WR after Write command - if (write_precharge_bank[i]) begin - if ($time - tm_bank_activate[i] >= TRAS_MIN) begin - if (ck_cntr - ck_bank_write[i] >= write_latency + burst_length/2 + write_recovery) begin - if (DEBUG) $display ("%m: at time %t INFO: Auto Precharge bank %d", $time, i); - write_precharge_bank[i] = 0; - active_bank[i] = 0; - auto_precharge_bank[i] = 0; - tm_bank_precharge[i] = $time; - tm_precharge = $time; - ck_precharge = ck_cntr; - end - end - end - // Read with Auto Precharge Calculation - // 1. Meet minimum tRAS requirement - // 2. Additive Latency plus 4 cycles after Read command - // 3. tRTP after the last 8-bit prefetch - if (read_precharge_bank[i]) begin - if (($time - tm_bank_activate[i] >= TRAS_MIN) && (ck_cntr - ck_bank_read[i] >= additive_latency + TRTP_TCK)) begin - read_precharge_bank[i] = 0; - // In case the internal precharge is pushed out by tRTP, tRP starts at the point where - // the internal precharge happens (not at the next rising clock edge after this event). - if ($time - tm_bank_read_end[i] < TRTP) begin - if (DEBUG) $display ("%m: at time %t INFO: Auto Precharge bank %d", tm_bank_read_end[i] + TRTP, i); - active_bank[i] <= #(tm_bank_read_end[i] + TRTP - $time) 0; - auto_precharge_bank[i] <= #(tm_bank_read_end[i] + TRTP - $time) 0; - tm_bank_precharge[i] <= #(tm_bank_read_end[i] + TRTP - $time) tm_bank_read_end[i] + TRTP; - tm_precharge <= #(tm_bank_read_end[i] + TRTP - $time) tm_bank_read_end[i] + TRTP; - ck_precharge = ck_cntr; - end else begin - if (DEBUG) $display ("%m: at time %t INFO: Auto Precharge bank %d", $time, i); - active_bank[i] = 0; - auto_precharge_bank[i] = 0; - tm_bank_precharge[i] = $time; - tm_precharge = $time; - ck_precharge = ck_cntr; - end - end - end - end - end - - - // respond to incoming command - if (cke_in ^ prev_cke) begin - tm_cke_cmd <= $time; - ck_cke_cmd <= ck_cntr; - end - - - cmd_task(prev_cke, cke_in, cmd_n_in, ba_in, addr_in); - if ((cmd_n_in == WRITE) || (cmd_n_in == READ)) begin - al_pipeline[2*additive_latency] = 1'b1; - end - if (al_pipeline[0]) begin - // check tRCD after additive latency - if ((rd_pipeline[2*cas_latency - 1]) && ($time - tm_bank_activate[ba_pipeline[2*cas_latency - 1]] < TRCD)) - $display ("%m: at time %t ERROR: tRCD violation during %s", $time, cmd_string[READ]); - if ((wr_pipeline[2*cas_write_latency + 1]) && ($time - tm_bank_activate[ba_pipeline[2*cas_write_latency + 1]] < TRCD)) - $display ("%m: at time %t ERROR: tRCD violation during %s", $time, cmd_string[WRITE]); - // check tWTR after additive latency - if (rd_pipeline[2*cas_latency - 1]) begin //{ - if (truebl4) begin //{ - i = ba_pipeline[2*cas_latency - 1]; - if ($time - tm_group_write_end[i[1]] < TWTR) - $display ("%m: at time %t ERROR: tWTR violation during %s", $time, cmd_string[READ]); - if ($time - tm_write_end < TWTR_DG) - $display ("%m: at time %t ERROR: tWTR_DG violation during %s", $time, cmd_string[READ]); - end else begin - if ($time - tm_write_end < TWTR) - $display ("%m: at time %t ERROR: tWTR violation during %s", $time, cmd_string[READ]); - end - end - end - if (rd_pipeline) begin - if (rd_pipeline[2*cas_latency - 1]) begin - tm_bank_read_end[ba_pipeline[2*cas_latency - 1]] <= $time; - end - end - for (i=0; i<`BANKS; i=i+1) begin - if ((ck_cntr - ck_bank_write[i] > write_latency) && (ck_cntr - ck_bank_write[i] <= write_latency + burst_length/2)) begin - tm_bank_write_end[i] <= $time; - tm_group_write_end[i[1]] <= $time; - tm_write_end <= $time; - end - end - - // clk pin is disabled during self refresh - if (!in_self_refresh && tm_ck_pos ) begin - tjit_cc_time = $time - tm_ck_pos - tck_i; - tck_i = $time - tm_ck_pos; - tck_avg = tck_avg - tck_sample[ck_cntr%PERTCKAVG]/$itor(PERTCKAVG); - tck_avg = tck_avg + tck_i/$itor(PERTCKAVG); - tck_sample[ck_cntr%PERTCKAVG] = tck_i; - tjit_per_rtime = tck_i - tck_avg; - - if (dll_locked && check_strict_timing) begin - // check accumulated error - terr_nper_rtime = 0; - for (i=0; i<12; i=i+1) begin - terr_nper_rtime = terr_nper_rtime + tck_sample[i] - tck_avg; - terr_nper_rtime = abs_value(terr_nper_rtime); - case (i) - 0 :; - 1 : if (terr_nper_rtime - TERR_2PER >= 1.0) $display ("%m: at time %t ERROR: tERR(2per) violation by %f ps.", $time, terr_nper_rtime - TERR_2PER); - 2 : if (terr_nper_rtime - TERR_3PER >= 1.0) $display ("%m: at time %t ERROR: tERR(3per) violation by %f ps.", $time, terr_nper_rtime - TERR_3PER); - 3 : if (terr_nper_rtime - TERR_4PER >= 1.0) $display ("%m: at time %t ERROR: tERR(4per) violation by %f ps.", $time, terr_nper_rtime - TERR_4PER); - 4 : if (terr_nper_rtime - TERR_5PER >= 1.0) $display ("%m: at time %t ERROR: tERR(5per) violation by %f ps.", $time, terr_nper_rtime - TERR_5PER); - 5 : if (terr_nper_rtime - TERR_6PER >= 1.0) $display ("%m: at time %t ERROR: tERR(6per) violation by %f ps.", $time, terr_nper_rtime - TERR_6PER); - 6 : if (terr_nper_rtime - TERR_7PER >= 1.0) $display ("%m: at time %t ERROR: tERR(7per) violation by %f ps.", $time, terr_nper_rtime - TERR_7PER); - 7 : if (terr_nper_rtime - TERR_8PER >= 1.0) $display ("%m: at time %t ERROR: tERR(8per) violation by %f ps.", $time, terr_nper_rtime - TERR_8PER); - 8 : if (terr_nper_rtime - TERR_9PER >= 1.0) $display ("%m: at time %t ERROR: tERR(9per) violation by %f ps.", $time, terr_nper_rtime - TERR_9PER); - 9 : if (terr_nper_rtime - TERR_10PER >= 1.0) $display ("%m: at time %t ERROR: tERR(10per) violation by %f ps.", $time, terr_nper_rtime - TERR_10PER); - 10 : if (terr_nper_rtime - TERR_11PER >= 1.0) $display ("%m: at time %t ERROR: tERR(11per) violation by %f ps.", $time, terr_nper_rtime - TERR_11PER); - 11 : if (terr_nper_rtime - TERR_12PER >= 1.0) $display ("%m: at time %t ERROR: tERR(12per) violation by %f ps.", $time, terr_nper_rtime - TERR_12PER); - endcase - end - - // check tCK min/max/jitter - if (abs_value(tjit_per_rtime) - TJIT_PER >= 1.0) - $display ("%m: at time %t ERROR: tJIT(per) violation by %f ps.", $time, abs_value(tjit_per_rtime) - TJIT_PER); - if (abs_value(tjit_cc_time) - TJIT_CC >= 1.0) - $display ("%m: at time %t ERROR: tJIT(cc) violation by %f ps.", $time, abs_value(tjit_cc_time) - TJIT_CC); - if (TCK_MIN - tck_avg >= 1.0) - $display ("%m: at time %t ERROR: tCK(avg) minimum violation by %f ps.", $time, TCK_MIN - tck_avg); - if (tck_avg - TCK_MAX >= 1.0) - $display ("%m: at time %t ERROR: tCK(avg) maximum violation by %f ps.", $time, tck_avg - TCK_MAX); - - // check tCL - if (tm_ck_neg - $time < TCL_ABS_MIN*tck_avg) - $display ("%m: at time %t ERROR: tCL(abs) minimum violation on CLK by %t", $time, TCL_ABS_MIN*tck_avg - tm_ck_neg + $time); - if (tcl_avg < TCL_AVG_MIN*tck_avg) - $display ("%m: at time %t ERROR: tCL(avg) minimum violation on CLK by %t", $time, TCL_AVG_MIN*tck_avg - tcl_avg); - if (tcl_avg > TCL_AVG_MAX*tck_avg) - $display ("%m: at time %t ERROR: tCL(avg) maximum violation on CLK by %t", $time, tcl_avg - TCL_AVG_MAX*tck_avg); - end - - // calculate the tch avg jitter - tch_avg = tch_avg - tch_sample[ck_cntr%PERTCKAVG]/$itor(PERTCKAVG); - tch_avg = tch_avg + tch_i/$itor(PERTCKAVG); - tch_sample[ck_cntr%PERTCKAVG] = tch_i; - tjit_ch_rtime = tch_i - tch_avg; - duty_cycle = $rtoi(tch_avg*100/tck_avg); - - // update timers/counters - tcl_i <= $time - tm_ck_neg; - end - - prev_odt <= odt_in; - // update timers/counters - ck_cntr <= ck_cntr + 1; - tm_ck_pos = $time; - end else begin - // clk pin is disabled during self refresh - if (!in_self_refresh) begin - if (dll_locked && check_strict_timing) begin - if ($time - tm_ck_pos < TCH_ABS_MIN*tck_avg) - $display ("%m: at time %t ERROR: tCH(abs) minimum violation on CLK by %t", $time, TCH_ABS_MIN*tck_avg - $time + tm_ck_pos); - if (tch_avg < TCH_AVG_MIN*tck_avg) - $display ("%m: at time %t ERROR: tCH(avg) minimum violation on CLK by %t", $time, TCH_AVG_MIN*tck_avg - tch_avg); - if (tch_avg > TCH_AVG_MAX*tck_avg) - $display ("%m: at time %t ERROR: tCH(avg) maximum violation on CLK by %t", $time, tch_avg - TCH_AVG_MAX*tck_avg); - end - - // calculate the tcl avg jitter - tcl_avg = tcl_avg - tcl_sample[ck_cntr%PERTCKAVG]/$itor(PERTCKAVG); - tcl_avg = tcl_avg + tcl_i/$itor(PERTCKAVG); - tcl_sample[ck_cntr%PERTCKAVG] = tcl_i; - - // update timers/counters - tch_i <= $time - tm_ck_pos; - end - tm_ck_neg = $time; - end - - // on die termination - if (odt_en || dyn_odt_en) begin - // odt pin is disabled during self refresh - if (!in_self_refresh && diff_ck) begin - if ($time - tm_odt < TIS) - $display ("%m: at time %t ERROR: tIS violation on ODT by %t", $time, tm_odt + TIS - $time); - if (prev_odt ^ odt_in) begin - if (!dll_locked) - $display ("%m: at time %t WARNING: tDLLK violation during ODT transition.", $time); - if (($time - tm_load_mode < TMOD) || (ck_cntr - ck_load_mode < TMOD_TCK)) - $display ("%m: at time %t ERROR: tMOD violation during ODT transition", $time); - if (ck_cntr - ck_zqinit < TZQINIT) - $display ("%m: at time %t ERROR: TZQinit violation during ODT transition", $time); - if (ck_cntr - ck_zqoper < TZQOPER) - $display ("%m: at time %t ERROR: TZQoper violation during ODT transition", $time); - if (ck_cntr - ck_zqcs < TZQCS) - $display ("%m: at time %t ERROR: tZQcs violation during ODT transition", $time); - // if (($time - tm_slow_exit_pd < TXPDLL) || (ck_cntr - ck_slow_exit_pd < TXPDLL_TCK)) - // $display ("%m: at time %t ERROR: tXPDLL violation during ODT transition", $time); - if (ck_cntr - ck_self_refresh < TXSDLL) - $display ("%m: at time %t ERROR: tXSDLL violation during ODT transition", $time); - if (in_self_refresh) - $display ("%m: at time %t ERROR: Illegal ODT transition during Self Refresh.", $time); - if (!odt_in && (ck_cntr - ck_odt < ODTH4)) - $display ("%m: at time %t ERROR: ODTH4 violation during ODT transition", $time); - if (!odt_in && (ck_cntr - ck_odth8 < ODTH8)) - $display ("%m: at time %t ERROR: ODTH8 violation during ODT transition", $time); - if (($time - tm_slow_exit_pd < TXPDLL) || (ck_cntr - ck_slow_exit_pd < TXPDLL_TCK)) - $display ("%m: at time %t WARNING: tXPDLL during ODT transition. Synchronous or asynchronous change in termination resistance is possible.", $time); - - // async ODT mode applies: - // 1.) during precharge power down with DLL off - // 2.) if tANPD has not been satisfied - // 3.) until tXPDLL has been satisfied - if ((in_power_down && low_power && (active_bank == 0)) || ($time - tm_slow_exit_pd < TXPDLL) || (ck_cntr - ck_slow_exit_pd < TXPDLL_TCK)) begin - odt_state = odt_in; - if (DEBUG && odt_en) $display ("%m: at time %t INFO: Async On Die Termination Rtt_NOM = %d Ohm", $time, {32{odt_state}} & get_rtt_nom(odt_rtt_nom)); - if (odt_state) begin - odt_state_dly <= #(TAONPD) odt_state; - end else begin - odt_state_dly <= #(TAOFPD) odt_state; - end - // sync ODT mode applies: - // 1.) during normal operation - // 2.) during active power down - // 3.) during precharge power down with DLL on - end else begin - odt_pipeline[2*(write_latency - 2)] = 1'b1; // ODTLon, ODTLoff - end - ck_odt <= ck_cntr; - end - end - if (odt_pipeline[0]) begin - odt_state = ~odt_state; - if (DEBUG && odt_en) $display ("%m: at time %t INFO: Sync On Die Termination Rtt_NOM = %d Ohm", $time, {32{odt_state}} & get_rtt_nom(odt_rtt_nom)); - if (odt_state) begin - odt_state_dly <= #(TAON) odt_state; - end else begin - odt_state_dly <= #(TAOF*tck_avg) odt_state; - end - end - if (rd_pipeline[RDQSEN_PRE]) begin - odt_cntr = 1 + RDQSEN_PRE + bl_pipeline[RDQSEN_PRE] + RDQSEN_PST - 1; - end - if (odt_cntr > 0) begin - if ((get_rtt_nom(odt_rtt_nom) > 0) && odt_state) begin - $display ("%m: at time %t ERROR: On Die Termination must be OFF during Read data transfer.", $time); - end - odt_cntr = odt_cntr - 1; - end - if (dyn_odt_en && ( odt_state || feature_odt_hi) ) begin - if (DEBUG && (dyn_odt_state ^ dyn_odt_pipeline[0])) - $display ("%m: at time %t INFO: Sync On Die Termination Rtt_WR = %d Ohm", $time, {32{dyn_odt_pipeline[0]}} & get_rtt_wr(odt_rtt_wr)); - dyn_odt_state = dyn_odt_pipeline[0]; - end - dyn_odt_state_dly <= #(TADC*tck_avg) dyn_odt_state; - end - - if (cke_in && write_levelization) begin - for (i=0; i>1; - wr_pipeline = wr_pipeline>>1; - rd_pipeline = rd_pipeline>>1; - for (i=0; i<`MAX_PIPE; i=i+1) begin - bl_pipeline[i] = bl_pipeline[i+1]; - ba_pipeline[i] = ba_pipeline[i+1]; - row_pipeline[i] = row_pipeline[i+1]; - col_pipeline[i] = col_pipeline[i+1]; - end - end - if (|odt_pipeline || |dyn_odt_pipeline) begin - odt_pipeline = odt_pipeline>>1; - dyn_odt_pipeline = dyn_odt_pipeline>>1; - end - end - end - - // receiver(s) - task dqs_even_receiver; - input [4:0] i; - reg [127:0] bit_mask; - begin - bit_mask = {`DQ_PER_DQS{1'b1}}<<(i*`DQ_PER_DQS); - if (dqs_even[i]) begin - if (tdqs_en) begin // tdqs disables dm - dm_in_pos[i] = 1'b0; - end else begin - dm_in_pos[i] = dm_in[i]; - end - dq_in_pos = (dq_in & bit_mask) | (dq_in_pos & ~bit_mask); - end - end - endtask - - always @(posedge dqs_even[ 0]) dqs_even_receiver( 0); - always @(posedge dqs_even[ 1]) dqs_even_receiver( 1); - always @(posedge dqs_even[ 2]) dqs_even_receiver( 2); - always @(posedge dqs_even[ 3]) dqs_even_receiver( 3); - always @(posedge dqs_even[ 4]) dqs_even_receiver( 4); - always @(posedge dqs_even[ 5]) dqs_even_receiver( 5); - always @(posedge dqs_even[ 6]) dqs_even_receiver( 6); - always @(posedge dqs_even[ 7]) dqs_even_receiver( 7); - always @(posedge dqs_even[ 8]) dqs_even_receiver( 8); - always @(posedge dqs_even[ 9]) dqs_even_receiver( 9); - always @(posedge dqs_even[10]) dqs_even_receiver(10); - always @(posedge dqs_even[11]) dqs_even_receiver(11); - always @(posedge dqs_even[12]) dqs_even_receiver(12); - always @(posedge dqs_even[13]) dqs_even_receiver(13); - always @(posedge dqs_even[14]) dqs_even_receiver(14); - always @(posedge dqs_even[15]) dqs_even_receiver(15); - - task dqs_odd_receiver; - input [4:0] i; - reg [127:0] bit_mask; - begin - bit_mask = {`DQ_PER_DQS{1'b1}}<<(i*`DQ_PER_DQS); - if (dqs_odd[i]) begin - if (tdqs_en) begin // tdqs disables dm - dm_in_neg[i] = 1'b0; - end else begin - dm_in_neg[i] = dm_in[i]; - end - dq_in_neg = (dq_in & bit_mask) | (dq_in_neg & ~bit_mask); - end - end - endtask - - always @(posedge dqs_odd[ 0]) dqs_odd_receiver( 0); - always @(posedge dqs_odd[ 1]) dqs_odd_receiver( 1); - always @(posedge dqs_odd[ 2]) dqs_odd_receiver( 2); - always @(posedge dqs_odd[ 3]) dqs_odd_receiver( 3); - always @(posedge dqs_odd[ 4]) dqs_odd_receiver( 4); - always @(posedge dqs_odd[ 5]) dqs_odd_receiver( 5); - always @(posedge dqs_odd[ 6]) dqs_odd_receiver( 6); - always @(posedge dqs_odd[ 7]) dqs_odd_receiver( 7); - always @(posedge dqs_odd[ 8]) dqs_odd_receiver( 8); - always @(posedge dqs_odd[ 9]) dqs_odd_receiver( 9); - always @(posedge dqs_odd[10]) dqs_odd_receiver(10); - always @(posedge dqs_odd[11]) dqs_odd_receiver(11); - always @(posedge dqs_odd[12]) dqs_odd_receiver(12); - always @(posedge dqs_odd[13]) dqs_odd_receiver(13); - always @(posedge dqs_odd[14]) dqs_odd_receiver(14); - always @(posedge dqs_odd[15]) dqs_odd_receiver(15); - - // Processes to check hold and pulse width of control signals - always @(posedge rst_n_in) begin - if ($time > 100000) begin - if (tm_rst_n + 100000 > $time) - $display ("%m: at time %t ERROR: RST_N pulse width violation by %t", $time, tm_rst_n + 100000 - $time); - end - tm_rst_n = $time; - end - always @(cke_in) begin - if (rst_n_in) begin - if ($time > TIH) begin - if ($time - tm_ck_pos < TIH) - $display ("%m: at time %t ERROR: tIH violation on CKE by %t", $time, tm_ck_pos + TIH - $time); - end - if ($time - tm_cke < TIPW) - $display ("%m: at time %t ERROR: tIPW violation on CKE by %t", $time, tm_cke + TIPW - $time); - end - tm_cke = $time; - end - always @(odt_in) begin - if (rst_n_in && odt_en && !in_self_refresh) begin - if ($time - tm_ck_pos < TIH) - $display ("%m: at time %t ERROR: tIH violation on ODT by %t", $time, tm_ck_pos + TIH - $time); - if ($time - tm_odt < TIPW) - $display ("%m: at time %t ERROR: tIPW violation on ODT by %t", $time, tm_odt + TIPW - $time); - end - tm_odt = $time; - end - - task cmd_addr_timing_check; - input i; - reg [4:0] i; - begin - if (rst_n_in && prev_cke) begin - if ((i == 0) && ($time - tm_ck_pos < TIH)) // always check tIH for CS# - $display ("%m: at time %t ERROR: tIH violation on %s by %t", $time, cmd_addr_string[i], tm_ck_pos + TIH - $time); - if ((i > 0) && (cs_n_in == 0) &&($time - tm_ck_pos < TIH)) // Only check tIH for cmd_addr if CS# is low - $display ("%m: at time %t ERROR: tIH violation on %s by %t", $time, cmd_addr_string[i], tm_ck_pos + TIH - $time); - if ((i == 0) && ($time - tm_cmd_addr[i] < TIPW)) // always check tIPW for CS# - $display ("%m: at time %t ERROR: tIPW violation on %s by %t", $time, cmd_addr_string[i], tm_cmd_addr[i] + TIPW - $time); - if ((i > 0) && (cs_n_in == 0) && ($time - tm_cmd_addr[i] < TIPW)) - $display ("%m: at time %t ERROR: tIPW violation on %s by %t", $time, cmd_addr_string[i], tm_cmd_addr[i] + TIPW - $time); - end - tm_cmd_addr[i] = $time; - end - endtask - - always @(cs_n_in ) cmd_addr_timing_check( 0); - always @(ras_n_in ) cmd_addr_timing_check( 1); - always @(cas_n_in ) cmd_addr_timing_check( 2); - always @(we_n_in ) cmd_addr_timing_check( 3); - always @(ba_in [ 0]) cmd_addr_timing_check( 4); - always @(ba_in [ 1]) cmd_addr_timing_check( 5); - always @(ba_in [ 2]) cmd_addr_timing_check( 6); - always @(addr_in[ 0]) cmd_addr_timing_check( 7); - always @(addr_in[ 1]) cmd_addr_timing_check( 8); - always @(addr_in[ 2]) cmd_addr_timing_check( 9); - always @(addr_in[ 3]) cmd_addr_timing_check(10); - always @(addr_in[ 4]) cmd_addr_timing_check(11); - always @(addr_in[ 5]) cmd_addr_timing_check(12); - always @(addr_in[ 6]) cmd_addr_timing_check(13); - always @(addr_in[ 7]) cmd_addr_timing_check(14); - always @(addr_in[ 8]) cmd_addr_timing_check(15); - always @(addr_in[ 9]) cmd_addr_timing_check(16); - always @(addr_in[10]) cmd_addr_timing_check(17); - always @(addr_in[11]) cmd_addr_timing_check(18); - always @(addr_in[12]) cmd_addr_timing_check(19); - always @(addr_in[13]) cmd_addr_timing_check(20); - always @(addr_in[14]) cmd_addr_timing_check(21); - always @(addr_in[15]) cmd_addr_timing_check(22); - always @(addr_in[16]) cmd_addr_timing_check(23); - - // Processes to check setup and hold of data signals - task dm_timing_check; - input i; - reg [4:0] i; - begin - if (dqs_in_valid) begin - if ($time - tm_dqs[i] < TDH) - $display ("%m: at time %t ERROR: tDH violation on DM bit %d by %t", $time, i, tm_dqs[i] + TDH - $time); - if (check_dm_tdipw[i]) begin - if ($time - tm_dm[i] < TDIPW) - $display ("%m: at time %t ERROR: tDIPW violation on DM bit %d by %t", $time, i, tm_dm[i] + TDIPW - $time); - end - end - check_dm_tdipw[i] <= 1'b0; - tm_dm[i] = $time; - end - endtask - - always @(dm_in[ 0]) dm_timing_check( 0); - always @(dm_in[ 1]) dm_timing_check( 1); - always @(dm_in[ 2]) dm_timing_check( 2); - always @(dm_in[ 3]) dm_timing_check( 3); - always @(dm_in[ 4]) dm_timing_check( 4); - always @(dm_in[ 5]) dm_timing_check( 5); - always @(dm_in[ 6]) dm_timing_check( 6); - always @(dm_in[ 7]) dm_timing_check( 7); - always @(dm_in[ 8]) dm_timing_check( 8); - always @(dm_in[ 9]) dm_timing_check( 9); - always @(dm_in[10]) dm_timing_check(10); - always @(dm_in[11]) dm_timing_check(11); - always @(dm_in[12]) dm_timing_check(12); - always @(dm_in[13]) dm_timing_check(13); - always @(dm_in[14]) dm_timing_check(14); - always @(dm_in[15]) dm_timing_check(15); - - always @(dm_in[16]) dm_timing_check(16); - always @(dm_in[17]) dm_timing_check(17); - always @(dm_in[18]) dm_timing_check(18); - always @(dm_in[19]) dm_timing_check(19); - always @(dm_in[20]) dm_timing_check(20); - always @(dm_in[21]) dm_timing_check(21); - always @(dm_in[22]) dm_timing_check(22); - always @(dm_in[23]) dm_timing_check(23); - always @(dm_in[24]) dm_timing_check(24); - always @(dm_in[25]) dm_timing_check(25); - always @(dm_in[26]) dm_timing_check(26); - always @(dm_in[27]) dm_timing_check(27); - always @(dm_in[28]) dm_timing_check(28); - always @(dm_in[29]) dm_timing_check(29); - always @(dm_in[30]) dm_timing_check(30); - always @(dm_in[31]) dm_timing_check(31); - - task dq_timing_check; - input i; - reg [6:0] i; - begin - if (dqs_in_valid) begin - if ($time - tm_dqs[i/(`DQ_PER_DQS)] < TDH) - $display ("%m: at time %t ERROR: tDH violation on DQ bit %d by %t", $time, i, tm_dqs[i/`DQ_PER_DQS] + TDH - $time); - if (check_dq_tdipw[i]) begin - if ($time - tm_dq[i] < TDIPW) - $display ("%m: at time %t ERROR: tDIPW violation on DQ bit %d by %t", $time, i, tm_dq[i] + TDIPW - $time); - end - end - check_dq_tdipw[i] <= 1'b0; - tm_dq[i] = $time; - end - endtask - - always @(dq_in[ 0]) dq_timing_check( 0); - always @(dq_in[ 1]) dq_timing_check( 1); - always @(dq_in[ 2]) dq_timing_check( 2); - always @(dq_in[ 3]) dq_timing_check( 3); - always @(dq_in[ 4]) dq_timing_check( 4); - always @(dq_in[ 5]) dq_timing_check( 5); - always @(dq_in[ 6]) dq_timing_check( 6); - always @(dq_in[ 7]) dq_timing_check( 7); - always @(dq_in[ 8]) dq_timing_check( 8); - always @(dq_in[ 9]) dq_timing_check( 9); - always @(dq_in[10]) dq_timing_check(10); - always @(dq_in[11]) dq_timing_check(11); - always @(dq_in[12]) dq_timing_check(12); - always @(dq_in[13]) dq_timing_check(13); - always @(dq_in[14]) dq_timing_check(14); - always @(dq_in[15]) dq_timing_check(15); - always @(dq_in[16]) dq_timing_check(16); - always @(dq_in[17]) dq_timing_check(17); - always @(dq_in[18]) dq_timing_check(18); - always @(dq_in[19]) dq_timing_check(19); - always @(dq_in[20]) dq_timing_check(20); - always @(dq_in[21]) dq_timing_check(21); - always @(dq_in[22]) dq_timing_check(22); - always @(dq_in[23]) dq_timing_check(23); - always @(dq_in[24]) dq_timing_check(24); - always @(dq_in[25]) dq_timing_check(25); - always @(dq_in[26]) dq_timing_check(26); - always @(dq_in[27]) dq_timing_check(27); - always @(dq_in[28]) dq_timing_check(28); - always @(dq_in[29]) dq_timing_check(29); - always @(dq_in[30]) dq_timing_check(30); - always @(dq_in[31]) dq_timing_check(31); - always @(dq_in[32]) dq_timing_check(32); - always @(dq_in[33]) dq_timing_check(33); - always @(dq_in[34]) dq_timing_check(34); - always @(dq_in[35]) dq_timing_check(35); - always @(dq_in[36]) dq_timing_check(36); - always @(dq_in[37]) dq_timing_check(37); - always @(dq_in[38]) dq_timing_check(38); - always @(dq_in[39]) dq_timing_check(39); - always @(dq_in[40]) dq_timing_check(40); - always @(dq_in[41]) dq_timing_check(41); - always @(dq_in[42]) dq_timing_check(42); - always @(dq_in[43]) dq_timing_check(43); - always @(dq_in[44]) dq_timing_check(44); - always @(dq_in[45]) dq_timing_check(45); - always @(dq_in[46]) dq_timing_check(46); - always @(dq_in[47]) dq_timing_check(47); - always @(dq_in[48]) dq_timing_check(48); - always @(dq_in[49]) dq_timing_check(49); - always @(dq_in[50]) dq_timing_check(50); - always @(dq_in[51]) dq_timing_check(51); - always @(dq_in[52]) dq_timing_check(52); - always @(dq_in[53]) dq_timing_check(53); - always @(dq_in[54]) dq_timing_check(54); - always @(dq_in[55]) dq_timing_check(55); - always @(dq_in[56]) dq_timing_check(56); - always @(dq_in[57]) dq_timing_check(57); - always @(dq_in[58]) dq_timing_check(58); - always @(dq_in[59]) dq_timing_check(59); - always @(dq_in[60]) dq_timing_check(60); - always @(dq_in[61]) dq_timing_check(61); - always @(dq_in[62]) dq_timing_check(62); - always @(dq_in[63]) dq_timing_check(63); - - always @(dq_in[64]) dq_timing_check(64); - always @(dq_in[65]) dq_timing_check(65); - always @(dq_in[66]) dq_timing_check(66); - always @(dq_in[67]) dq_timing_check(67); - always @(dq_in[68]) dq_timing_check(68); - always @(dq_in[69]) dq_timing_check(69); - always @(dq_in[70]) dq_timing_check(70); - always @(dq_in[71]) dq_timing_check(71); - always @(dq_in[72]) dq_timing_check(72); - always @(dq_in[73]) dq_timing_check(73); - always @(dq_in[74]) dq_timing_check(74); - always @(dq_in[75]) dq_timing_check(75); - always @(dq_in[76]) dq_timing_check(76); - always @(dq_in[77]) dq_timing_check(77); - always @(dq_in[78]) dq_timing_check(78); - always @(dq_in[79]) dq_timing_check(79); - always @(dq_in[80]) dq_timing_check(80); - always @(dq_in[81]) dq_timing_check(81); - always @(dq_in[82]) dq_timing_check(82); - always @(dq_in[83]) dq_timing_check(83); - always @(dq_in[84]) dq_timing_check(84); - always @(dq_in[85]) dq_timing_check(85); - always @(dq_in[86]) dq_timing_check(86); - always @(dq_in[87]) dq_timing_check(87); - always @(dq_in[88]) dq_timing_check(88); - always @(dq_in[89]) dq_timing_check(89); - always @(dq_in[90]) dq_timing_check(90); - always @(dq_in[91]) dq_timing_check(91); - always @(dq_in[92]) dq_timing_check(92); - always @(dq_in[93]) dq_timing_check(93); - always @(dq_in[94]) dq_timing_check(94); - always @(dq_in[95]) dq_timing_check(95); - always @(dq_in[96]) dq_timing_check(96); - always @(dq_in[97]) dq_timing_check(97); - always @(dq_in[98]) dq_timing_check(98); - always @(dq_in[99]) dq_timing_check(99); - always @(dq_in[100]) dq_timing_check(100); - always @(dq_in[101]) dq_timing_check(101); - always @(dq_in[102]) dq_timing_check(102); - always @(dq_in[103]) dq_timing_check(103); - always @(dq_in[104]) dq_timing_check(104); - always @(dq_in[105]) dq_timing_check(105); - always @(dq_in[106]) dq_timing_check(106); - always @(dq_in[107]) dq_timing_check(107); - always @(dq_in[108]) dq_timing_check(108); - always @(dq_in[109]) dq_timing_check(109); - always @(dq_in[110]) dq_timing_check(110); - always @(dq_in[111]) dq_timing_check(111); - always @(dq_in[112]) dq_timing_check(112); - always @(dq_in[113]) dq_timing_check(113); - always @(dq_in[114]) dq_timing_check(114); - always @(dq_in[115]) dq_timing_check(115); - always @(dq_in[116]) dq_timing_check(116); - always @(dq_in[117]) dq_timing_check(117); - always @(dq_in[118]) dq_timing_check(118); - always @(dq_in[119]) dq_timing_check(119); - always @(dq_in[120]) dq_timing_check(120); - always @(dq_in[121]) dq_timing_check(121); - always @(dq_in[122]) dq_timing_check(122); - always @(dq_in[123]) dq_timing_check(123); - always @(dq_in[124]) dq_timing_check(124); - always @(dq_in[125]) dq_timing_check(125); - always @(dq_in[126]) dq_timing_check(126); - always @(dq_in[127]) dq_timing_check(127); - - task dqs_pos_timing_check; - input i; - reg [5:0] i; - reg [4:0] j; - begin - if (write_levelization && i<32) begin - if (ck_cntr - ck_load_mode < TWLMRD) - $display ("%m: at time %t ERROR: tWLMRD violation on DQS bit %d positive edge.", $time, i); - if (($time - tm_ck_pos < TWLS) || ($time - tm_ck_neg < TWLS)) - $display ("%m: at time %t WARNING: tWLS violation on DQS bit %d positive edge. Indeterminate CK capture is possible.", $time, i); - if (DEBUG) - $display ("%m: at time %t Write Leveling @ DQS ck = %b", $time, diff_ck); - dq_out_en_dly[i*`DQ_PER_DQS] <= #(TWLO) 1'b1; - dq_out_dly[i*`DQ_PER_DQS] <= #(TWLO) diff_ck; -`ifdef WL_ALLDQ - for (j=1; j<`DQ_PER_DQS; j=j+1) begin - dq_out_en_dly[i*`DQ_PER_DQS+j] <= #(TWLO) 1'b1; - dq_out_dly[i*`DQ_PER_DQS+j] <= #(TWLO) diff_ck; - end -`else - for (j=1; j<`DQ_PER_DQS; j=j+1) begin - dq_out_en_dly[i*`DQ_PER_DQS+j] <= #(TWLO + TWLOE) 1'b1; - dq_out_dly[i*`DQ_PER_DQS+j] <= #(TWLO + TWLOE) 1'b0; - end -`endif - end - if (dqs_in_valid && ((wdqs_pos_cntr[i] < wr_burst_length/2) || b2b_write)) begin - if (dqs_in[i] ^ prev_dqs_in[i]) begin - if (dll_locked) begin - if (check_write_preamble[i]) begin - if ($time - tm_dqs_pos[i] < $rtoi(TWPRE*tck_avg)) - $display ("%m: at time %t ERROR: tWPRE violation on %s bit %d", $time, dqs_string[i/32], i%32); - end else if (check_write_postamble[i]) begin - if ($time - tm_dqs_neg[i] < $rtoi(TWPST*tck_avg)) - $display ("%m: at time %t ERROR: tWPST violation on %s bit %d", $time, dqs_string[i/32], i%32); - end else begin - if ($time - tm_dqs_neg[i] < $rtoi(TDQSL*tck_avg)) - $display ("%m: at time %t ERROR: tDQSL violation on %s bit %d", $time, dqs_string[i/32], i%32); - end - end - if ($time - tm_dm[i%32] < TDS) - $display ("%m: at time %t ERROR: tDS violation on DM bit %d by %t", $time, i, tm_dm[i%32] + TDS - $time); - if (!dq_out_en) begin - for (j=0; j<`DQ_PER_DQS; j=j+1) begin - if ($time - tm_dq[(i%32)*`DQ_PER_DQS+j] < TDS) - $display ("%m: at time %t ERROR: tDS violation on DQ bit %d by %t", $time, i*`DQ_PER_DQS+j, tm_dq[(i%32)*`DQ_PER_DQS+j] + TDS - $time); - check_dq_tdipw[(i%32)*`DQ_PER_DQS+j] <= 1'b1; - end - end - if ((wdqs_pos_cntr[i] < wr_burst_length/2) && !b2b_write) begin - wdqs_pos_cntr[i] <= wdqs_pos_cntr[i] + 1; - end else begin - wdqs_pos_cntr[i] <= 1; - end - check_dm_tdipw[i%32] <= 1'b1; - check_write_preamble[i] <= 1'b0; - check_write_postamble[i] <= 1'b0; - check_write_dqs_low[i] <= 1'b0; - tm_dqs[i%32] <= $time; - end else begin - $display ("%m: at time %t ERROR: Invalid latching edge on %s bit %d", $time, dqs_string[i/32], i%32); - end - end - tm_dqss_pos[i] <= $time; - tm_dqs_pos[i] = $time; - prev_dqs_in[i] <= dqs_in[i]; - end - endtask - - always @(posedge dqs_in[ 0]) if ( dqs_in[ 0]) dqs_pos_timing_check( 0); - always @(posedge dqs_in[ 1]) if ( dqs_in[ 1]) dqs_pos_timing_check( 1); - always @(posedge dqs_in[ 2]) if ( dqs_in[ 2]) dqs_pos_timing_check( 2); - always @(posedge dqs_in[ 3]) if ( dqs_in[ 3]) dqs_pos_timing_check( 3); - always @(posedge dqs_in[ 4]) if ( dqs_in[ 4]) dqs_pos_timing_check( 4); - always @(posedge dqs_in[ 5]) if ( dqs_in[ 5]) dqs_pos_timing_check( 5); - always @(posedge dqs_in[ 6]) if ( dqs_in[ 6]) dqs_pos_timing_check( 6); - always @(posedge dqs_in[ 7]) if ( dqs_in[ 7]) dqs_pos_timing_check( 7); - always @(posedge dqs_in[ 8]) if ( dqs_in[ 8]) dqs_pos_timing_check( 8); - always @(posedge dqs_in[ 9]) if ( dqs_in[ 9]) dqs_pos_timing_check( 9); - always @(posedge dqs_in[10]) if ( dqs_in[10]) dqs_pos_timing_check(10); - always @(posedge dqs_in[11]) if ( dqs_in[11]) dqs_pos_timing_check(11); - always @(posedge dqs_in[12]) if ( dqs_in[12]) dqs_pos_timing_check(12); - always @(posedge dqs_in[13]) if ( dqs_in[13]) dqs_pos_timing_check(13); - always @(posedge dqs_in[14]) if ( dqs_in[14]) dqs_pos_timing_check(14); - always @(posedge dqs_in[15]) if ( dqs_in[15]) dqs_pos_timing_check(15); - always @(posedge dqs_in[16]) if ( dqs_in[16]) dqs_pos_timing_check(16); - always @(posedge dqs_in[17]) if ( dqs_in[17]) dqs_pos_timing_check(17); - always @(posedge dqs_in[18]) if ( dqs_in[18]) dqs_pos_timing_check(18); - always @(posedge dqs_in[19]) if ( dqs_in[19]) dqs_pos_timing_check(19); - always @(posedge dqs_in[20]) if ( dqs_in[20]) dqs_pos_timing_check(20); - always @(posedge dqs_in[21]) if ( dqs_in[21]) dqs_pos_timing_check(21); - always @(posedge dqs_in[22]) if ( dqs_in[22]) dqs_pos_timing_check(22); - always @(posedge dqs_in[23]) if ( dqs_in[23]) dqs_pos_timing_check(23); - always @(posedge dqs_in[24]) if ( dqs_in[24]) dqs_pos_timing_check(24); - always @(posedge dqs_in[25]) if ( dqs_in[25]) dqs_pos_timing_check(25); - always @(posedge dqs_in[26]) if ( dqs_in[26]) dqs_pos_timing_check(26); - always @(posedge dqs_in[27]) if ( dqs_in[27]) dqs_pos_timing_check(27); - always @(posedge dqs_in[28]) if ( dqs_in[28]) dqs_pos_timing_check(28); - always @(posedge dqs_in[29]) if ( dqs_in[29]) dqs_pos_timing_check(29); - always @(posedge dqs_in[30]) if ( dqs_in[30]) dqs_pos_timing_check(30); - always @(posedge dqs_in[31]) if ( dqs_in[31]) dqs_pos_timing_check(31); - - always @(negedge dqs_in[32]) if (!dqs_in[32]) dqs_pos_timing_check(32); - always @(negedge dqs_in[33]) if (!dqs_in[33]) dqs_pos_timing_check(33); - always @(negedge dqs_in[34]) if (!dqs_in[34]) dqs_pos_timing_check(34); - always @(negedge dqs_in[35]) if (!dqs_in[35]) dqs_pos_timing_check(35); - always @(negedge dqs_in[36]) if (!dqs_in[36]) dqs_pos_timing_check(36); - always @(negedge dqs_in[37]) if (!dqs_in[37]) dqs_pos_timing_check(37); - always @(negedge dqs_in[38]) if (!dqs_in[38]) dqs_pos_timing_check(38); - always @(negedge dqs_in[39]) if (!dqs_in[39]) dqs_pos_timing_check(39); - always @(negedge dqs_in[40]) if (!dqs_in[40]) dqs_pos_timing_check(40); - always @(negedge dqs_in[41]) if (!dqs_in[41]) dqs_pos_timing_check(41); - always @(negedge dqs_in[42]) if (!dqs_in[42]) dqs_pos_timing_check(42); - always @(negedge dqs_in[43]) if (!dqs_in[43]) dqs_pos_timing_check(43); - always @(negedge dqs_in[44]) if (!dqs_in[44]) dqs_pos_timing_check(44); - always @(negedge dqs_in[45]) if (!dqs_in[45]) dqs_pos_timing_check(45); - always @(negedge dqs_in[46]) if (!dqs_in[46]) dqs_pos_timing_check(46); - always @(negedge dqs_in[47]) if (!dqs_in[47]) dqs_pos_timing_check(47); - always @(negedge dqs_in[48]) if (!dqs_in[48]) dqs_pos_timing_check(48); - always @(negedge dqs_in[49]) if (!dqs_in[49]) dqs_pos_timing_check(49); - always @(negedge dqs_in[50]) if (!dqs_in[50]) dqs_pos_timing_check(50); - always @(negedge dqs_in[51]) if (!dqs_in[51]) dqs_pos_timing_check(51); - always @(negedge dqs_in[52]) if (!dqs_in[52]) dqs_pos_timing_check(52); - always @(negedge dqs_in[53]) if (!dqs_in[53]) dqs_pos_timing_check(53); - always @(negedge dqs_in[54]) if (!dqs_in[54]) dqs_pos_timing_check(54); - always @(negedge dqs_in[55]) if (!dqs_in[55]) dqs_pos_timing_check(55); - always @(negedge dqs_in[56]) if (!dqs_in[56]) dqs_pos_timing_check(56); - always @(negedge dqs_in[57]) if (!dqs_in[57]) dqs_pos_timing_check(57); - always @(negedge dqs_in[58]) if (!dqs_in[58]) dqs_pos_timing_check(58); - always @(negedge dqs_in[59]) if (!dqs_in[59]) dqs_pos_timing_check(59); - always @(negedge dqs_in[60]) if (!dqs_in[60]) dqs_pos_timing_check(60); - always @(negedge dqs_in[61]) if (!dqs_in[61]) dqs_pos_timing_check(61); - always @(negedge dqs_in[62]) if (!dqs_in[62]) dqs_pos_timing_check(62); - always @(negedge dqs_in[63]) if (!dqs_in[63]) dqs_pos_timing_check(63); - - task dqs_neg_timing_check; - input i; - reg [5:0] i; - reg [4:0] j; - begin - if (write_levelization && i<32) begin - if (ck_cntr - ck_load_mode < TWLDQSEN) - $display ("%m: at time %t ERROR: tWLDQSEN violation on DQS bit %d.", $time, i); - if ($time - tm_dqs_pos[i] < $rtoi(TDQSH*tck_avg)) - $display ("%m: at time %t ERROR: tDQSH violation on DQS bit %d by %t", $time, i, tm_dqs_pos[i] + TDQSH*tck_avg - $time); - end - if (dqs_in_valid && (wdqs_pos_cntr[i] > 0) && check_write_dqs_high[i]) begin - if (dqs_in[i] ^ prev_dqs_in[i]) begin - if (dll_locked) begin - if ($time - tm_dqs_pos[i] < $rtoi(TDQSH*tck_avg)) - $display ("%m: at time %t ERROR: tDQSH violation on %s bit %d", $time, dqs_string[i/32], i%32); - if ($time - tm_ck_pos < $rtoi(TDSH*tck_avg)) - $display ("%m: at time %t ERROR: tDSH violation on %s bit %d", $time, dqs_string[i/32], i%32); - end - if ($time - tm_dm[i%32] < TDS) - $display ("%m: at time %t ERROR: tDS violation on DM bit %d by %t", $time, i, tm_dm[i%32] + TDS - $time); - if (!dq_out_en) begin - for (j=0; j<`DQ_PER_DQS; j=j+1) begin - if ($time - tm_dq[(i%32)*`DQ_PER_DQS+j] < TDS) - $display ("%m: at time %t ERROR: tDS violation on DQ bit %d by %t", $time, i*`DQ_PER_DQS+j, tm_dq[(i%32)*`DQ_PER_DQS+j] + TDS - $time); - check_dq_tdipw[(i%32)*`DQ_PER_DQS+j] <= 1'b1; - end - end - check_dm_tdipw[i%32] <= 1'b1; - tm_dqs[i%32] <= $time; - end else begin - $display ("%m: at time %t ERROR: Invalid latching edge on %s bit %d", $time, dqs_string[i/32], i%32); - end - end - check_write_dqs_high[i] <= 1'b0; - tm_dqs_neg[i] = $time; - prev_dqs_in[i] <= dqs_in[i]; - end - endtask - - always @(negedge dqs_in[ 0]) if (!dqs_in[ 0]) dqs_neg_timing_check( 0); - always @(negedge dqs_in[ 1]) if (!dqs_in[ 1]) dqs_neg_timing_check( 1); - always @(negedge dqs_in[ 2]) if (!dqs_in[ 2]) dqs_neg_timing_check( 2); - always @(negedge dqs_in[ 3]) if (!dqs_in[ 3]) dqs_neg_timing_check( 3); - always @(negedge dqs_in[ 4]) if (!dqs_in[ 4]) dqs_neg_timing_check( 4); - always @(negedge dqs_in[ 5]) if (!dqs_in[ 5]) dqs_neg_timing_check( 5); - always @(negedge dqs_in[ 6]) if (!dqs_in[ 6]) dqs_neg_timing_check( 6); - always @(negedge dqs_in[ 7]) if (!dqs_in[ 7]) dqs_neg_timing_check( 7); - always @(negedge dqs_in[ 8]) if (!dqs_in[ 8]) dqs_neg_timing_check( 8); - always @(negedge dqs_in[ 9]) if (!dqs_in[ 9]) dqs_neg_timing_check( 9); - always @(negedge dqs_in[10]) if (!dqs_in[10]) dqs_neg_timing_check(10); - always @(negedge dqs_in[11]) if (!dqs_in[11]) dqs_neg_timing_check(11); - always @(negedge dqs_in[12]) if (!dqs_in[12]) dqs_neg_timing_check(12); - always @(negedge dqs_in[13]) if (!dqs_in[13]) dqs_neg_timing_check(13); - always @(negedge dqs_in[14]) if (!dqs_in[14]) dqs_neg_timing_check(14); - always @(negedge dqs_in[15]) if (!dqs_in[15]) dqs_neg_timing_check(15); - always @(negedge dqs_in[16]) if (!dqs_in[16]) dqs_neg_timing_check(16); - always @(negedge dqs_in[17]) if (!dqs_in[17]) dqs_neg_timing_check(17); - always @(negedge dqs_in[18]) if (!dqs_in[18]) dqs_neg_timing_check(18); - always @(negedge dqs_in[19]) if (!dqs_in[19]) dqs_neg_timing_check(19); - always @(negedge dqs_in[20]) if (!dqs_in[20]) dqs_neg_timing_check(20); - always @(negedge dqs_in[21]) if (!dqs_in[21]) dqs_neg_timing_check(21); - always @(negedge dqs_in[22]) if (!dqs_in[22]) dqs_neg_timing_check(22); - always @(negedge dqs_in[23]) if (!dqs_in[23]) dqs_neg_timing_check(23); - always @(negedge dqs_in[24]) if (!dqs_in[24]) dqs_neg_timing_check(24); - always @(negedge dqs_in[25]) if (!dqs_in[25]) dqs_neg_timing_check(25); - always @(negedge dqs_in[26]) if (!dqs_in[26]) dqs_neg_timing_check(26); - always @(negedge dqs_in[27]) if (!dqs_in[27]) dqs_neg_timing_check(27); - always @(negedge dqs_in[28]) if (!dqs_in[28]) dqs_neg_timing_check(28); - always @(negedge dqs_in[29]) if (!dqs_in[29]) dqs_neg_timing_check(29); - always @(negedge dqs_in[30]) if (!dqs_in[30]) dqs_neg_timing_check(30); - always @(negedge dqs_in[31]) if (!dqs_in[31]) dqs_neg_timing_check(31); - - always @(posedge dqs_in[32]) if ( dqs_in[32]) dqs_neg_timing_check(32); - always @(posedge dqs_in[33]) if ( dqs_in[33]) dqs_neg_timing_check(33); - always @(posedge dqs_in[34]) if ( dqs_in[34]) dqs_neg_timing_check(34); - always @(posedge dqs_in[35]) if ( dqs_in[35]) dqs_neg_timing_check(35); - always @(posedge dqs_in[36]) if ( dqs_in[36]) dqs_neg_timing_check(36); - always @(posedge dqs_in[37]) if ( dqs_in[37]) dqs_neg_timing_check(37); - always @(posedge dqs_in[38]) if ( dqs_in[38]) dqs_neg_timing_check(38); - always @(posedge dqs_in[39]) if ( dqs_in[39]) dqs_neg_timing_check(39); - always @(posedge dqs_in[40]) if ( dqs_in[40]) dqs_neg_timing_check(40); - always @(posedge dqs_in[41]) if ( dqs_in[41]) dqs_neg_timing_check(41); - always @(posedge dqs_in[42]) if ( dqs_in[42]) dqs_neg_timing_check(42); - always @(posedge dqs_in[43]) if ( dqs_in[43]) dqs_neg_timing_check(43); - always @(posedge dqs_in[44]) if ( dqs_in[44]) dqs_neg_timing_check(44); - always @(posedge dqs_in[45]) if ( dqs_in[45]) dqs_neg_timing_check(45); - always @(posedge dqs_in[46]) if ( dqs_in[46]) dqs_neg_timing_check(46); - always @(posedge dqs_in[47]) if ( dqs_in[47]) dqs_neg_timing_check(47); - always @(posedge dqs_in[48]) if ( dqs_in[48]) dqs_neg_timing_check(48); - always @(posedge dqs_in[49]) if ( dqs_in[49]) dqs_neg_timing_check(49); - always @(posedge dqs_in[50]) if ( dqs_in[50]) dqs_neg_timing_check(50); - always @(posedge dqs_in[51]) if ( dqs_in[51]) dqs_neg_timing_check(51); - always @(posedge dqs_in[52]) if ( dqs_in[52]) dqs_neg_timing_check(52); - always @(posedge dqs_in[53]) if ( dqs_in[53]) dqs_neg_timing_check(53); - always @(posedge dqs_in[54]) if ( dqs_in[54]) dqs_neg_timing_check(54); - always @(posedge dqs_in[55]) if ( dqs_in[55]) dqs_neg_timing_check(55); - always @(posedge dqs_in[56]) if ( dqs_in[56]) dqs_neg_timing_check(56); - always @(posedge dqs_in[57]) if ( dqs_in[57]) dqs_neg_timing_check(57); - always @(posedge dqs_in[58]) if ( dqs_in[58]) dqs_neg_timing_check(58); - always @(posedge dqs_in[59]) if ( dqs_in[59]) dqs_neg_timing_check(59); - always @(posedge dqs_in[60]) if ( dqs_in[60]) dqs_neg_timing_check(60); - always @(posedge dqs_in[61]) if ( dqs_in[61]) dqs_neg_timing_check(61); - always @(posedge dqs_in[62]) if ( dqs_in[62]) dqs_neg_timing_check(62); - always @(posedge dqs_in[63]) if ( dqs_in[63]) dqs_neg_timing_check(63); - -endmodule diff --git a/devices/Micron/ddr4/ruckus.tcl b/devices/Micron/ddr4/ruckus.tcl deleted file mode 100644 index a177edc773..0000000000 --- a/devices/Micron/ddr4/ruckus.tcl +++ /dev/null @@ -1,38 +0,0 @@ -# Load RUCKUS environment and library -source $::env(RUCKUS_PROC_TCL) - -# Check for non-zero Vivado version (in-case non-Vivado project) -if { $::env(VIVADO_VERSION) > 0.0} { - - # Load target's source code and constraints - loadSource -lib surf -sim_only -dir "$::DIR_PATH/tb" - - # Set the top-level DDR module as Verilog - set_property FILE_TYPE {Verilog Header} [get_files {arch_defines.v}] - set_property FILE_TYPE {Verilog Header} [get_files {arch_package.sv}] - set_property FILE_TYPE {Verilog Header} [get_files {ddr4_model.sv}] - set_property FILE_TYPE {Verilog Header} [get_files {interface.sv}] - set_property FILE_TYPE {Verilog Header} [get_files {MemoryArray.sv}] - set_property FILE_TYPE {Verilog Header} [get_files {proj_package.sv}] - set_property FILE_TYPE {Verilog Header} [get_files {StateTable.sv}] - set_property FILE_TYPE {Verilog Header} [get_files {StateTableCore.sv}] - set_property FILE_TYPE {Verilog Header} [get_files {timing_tasks.sv}] - - # Note: Don't forget to add a SystemVerilog (.sv) file to your - # project to define the type of DDR4 memory that you are simulating - ####################################### - # Example: ddr4_sdram_model_wrapper.sv - ####################################### - #`define DDR4_4G_X16 - #`define DDR4_750_Timing - #// Added define SILENT to avoid timeset setting display messages in transcript - #`define SILENT - #`define FIXED_2666 - # - #`include "arch_package.sv" - #`include "proj_package.sv" - #`include "interface.sv" - #`include "ddr4_model.sv" - ####################################### - -} diff --git a/devices/Micron/ddr4/tb/MemoryArray.sv b/devices/Micron/ddr4/tb/MemoryArray.sv deleted file mode 100644 index 63b24d5958..0000000000 --- a/devices/Micron/ddr4/tb/MemoryArray.sv +++ /dev/null @@ -1,320 +0,0 @@ -`pragma protect begin_protected -`pragma protect version = 1 -`pragma protect encrypt_agent = "XILINX" -`pragma protect encrypt_agent_info = "Xilinx Encryption Tool 2015" -`pragma protect key_keyowner = "Cadence Design Systems.", key_keyname = "cds_rsa_key", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 64) -`pragma protect key_block -MvH1+ext0W/9Gayularhe2zvdFDkB3VRF5NrA2mCAadeWWhR8/Zd8j419ypmyHVmY9DBjIG76z9w -zEuHRVfJ7Q== - -`pragma protect key_keyowner = "Mentor Graphics Corporation", key_keyname = "MGC-VERIF-SIM-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -OiR9k2g6wPZAriX/bBytrxdgko1kSCAbGNTq5O1LkvJ7uS5js8cdcxvqtGS56w3jLnjgNoFVSsXs -QFOrF0IcDepvltesU7t/u+RbtporZxINnRZZeXM+I8osW44IiK8BFWkE6ybFgGDuG9Xq0PfTF3NF -Wz5TDi6YX6BDfBPI1E4= - -`pragma protect key_keyowner = "Synopsys", key_keyname = "SNPS-VCS-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -j44dDJpPIRMl7/1Ic1Af8fDaw4DdXA92MMSTVik/jQVxjTxy487hOdu3GK87nyCpBmNwztfHGDbD -TVJ/nkaYIs9wBfClxorUgenNjscZ+S67GCL24li/r8INvXXXc+F+HyK2+O0qm/FtzJtbSY8Gc6vP -dWmQr3MgDMHd14NtwKI= - -`pragma protect key_keyowner = "Aldec", key_keyname = "ALDEC15_001", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -Lia1J8liJNcDaSn5jpXIyPC9iTTpZyezvyfxIx3S5Gw7+IX3oSNWaUXa58F9Syw5YLrrFirADtrl -5IgBe8bpsXsf+skFpWO0Dft+cIxRkuxv38jhOYP4FuXEsq00lJmbl4E8hdG4qw9Dv9wkQGEbGy1B -2ME9bEgAr1Rm4lXDz6UyFDSKrF8CDesAtNUAaO1jBj97iN+AbnmCfRuQ4tbrKnBiTe8KoLjn5xiH -lnjCTs8MRHhTHaXapfvU9SMzR7AB72kV+QfOQ03fmWmdQJrt1fbdkAmUFicuZnn+YBKBlGXqRKPI -2Rdml8c7K5c7lsGgpu2DFe/+4KSRQ+iqDI6QKw== - -`pragma protect key_keyowner = "ATRENTA", key_keyname = "ATR-SG-2015-RSA-3", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -I3j8XINxcyMnvwvw+5eoUv16lgfNprr6kpzTKWljkJjcGuwS1Uno9TFu7I0+54dXnXjD2Zkrs+On -1cCM1Z703dfvnAgEtPvJxKIcTHpWf/uDHvGEMpqjZL/7xusuLdD0WT0D3JqktVLftOq7kloB0inK -c8yrftk0g7u+dTVONcVjAlS+k6t0mgNuTAIpwYO7jDRMwImowq1ca92bwJiOpEEq6uK+dKl/fZue -dBJces4S7utetZTx9iez2n6g3FvDQ2FcXdR6eFYQfkDCnB89lJQ5zQCYaah2bqpa3z3/xwpqbzBR -KYfFISxdgoM7n+cUkvmJYLXefY6N815rYfBTjA== - -`pragma protect key_keyowner = "Xilinx", key_keyname = "xilinx_2016_05", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -rdMteE4bQ7bs3fvZa2ez95qF2REE7/5oLG5IkDbnT5zGv7RJDeZ2jgWAJDIfQbgqutq4zjuLCsl9 -uACwCPXT5Iq0ZXfiSnHXzsicuXyFyTlZWun2iNACNhotKK3M7RWXFb/Mlye2SPcuXfRs5bVemCIa -h4CYt4o0XW4Jdw6kYvxK+rtaJCn9qUtoV94nxTcuEnGGz4KmLfKPzvfesl6PMLY56gLzzuAGpfi0 -2gjdT/S9B90OkqmnDORaIcKzArypNrXVQS6h0WmBI98rpjd1P9oi0K8M8biPYPudyNV+qy4hRPav -/EB+T7bLaxLfSGc+/AUd7uaN3L6Le9JqtiSUrw== - -`pragma protect data_method = "AES128-CBC" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 15104) -`pragma protect data_block -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 -`pragma protect end_protected diff --git a/devices/Micron/ddr4/tb/StateTable.sv b/devices/Micron/ddr4/tb/StateTable.sv deleted file mode 100644 index d87a5132f4..0000000000 --- a/devices/Micron/ddr4/tb/StateTable.sv +++ /dev/null @@ -1,111 +0,0 @@ -`pragma protect begin_protected -`pragma protect version = 1 -`pragma protect encrypt_agent = "XILINX" -`pragma protect encrypt_agent_info = "Xilinx Encryption Tool 2015" -`pragma protect key_keyowner = "Cadence Design Systems.", key_keyname = "cds_rsa_key", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 64) -`pragma protect key_block -qWIj44uDTKWTZ+1mHcC9GhHtznfXek6+SThg9ej3m7L/Lc/XyHOIQvWEsASy+eJtF24bXBkTA04U -4aubic3PYA== - -`pragma protect key_keyowner = "Mentor Graphics Corporation", key_keyname = "MGC-VERIF-SIM-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -FuHJ2twPEmSQBC5MXoX/q8+spKC4AYXcmGeCfyN3AribUkV3QF0QxpZ/gnmpm8HCvq6wWX4u9Ozf -PC+a8cwNwYkYHBVjw8m2vRVJsxeaTB4Hgwcut4afp959aT0OfuN5FzSNC/xk9bIMDNJrCHMGe1LU -mIh49gA8oUT0QfCnrq8= - -`pragma protect key_keyowner = "Synopsys", key_keyname = "SNPS-VCS-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -bA3lomTKIBe9pwigCbapcDGETp1XXuOxxiukByJ3JYOGFmb5qJakTizx2sh+MaxJADkn7K1+M9Zo -QSxqSOHgDdn9Yatx9rhFZaVnqSk8zCFurjxL3xa7FkrfQrF9FdC7+1iZq1tajS1eMmlZZId4nxlg -Z28O/YLbPbfWCL32nzE= - -`pragma protect key_keyowner = "Aldec", key_keyname = "ALDEC15_001", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -ND8eM+xO5f4CH7mpptPfhVOilvME/9UDwNiI+515S2DlbAGsnIgvwtc+ueUEeT1Gip2yjqJAtQy5 -hsu76DWErskRP/FiMCOun3uZ4pJWLpuBL3lsk9f7/13Wa2nXMT6qEi5VbRgwgA/7hVTUY80vmhTu -hjcB9hNPJMIoMSImlOczIoIO4FEY3SW+FO9+Rw2dAO+Vtonx73vBhPmugNwHCK5LwOxoJjM0dUCt -MuI/090uYu8cZUhZUBJaE3mSuSE8yMJgsKUPmJLLomUbXWOAghJo/6LZsFqre4gernB/uCl07+W7 -n1X8VmJ7kd5bTkCRg6kWVO0ITpq9M29/gDeTHw== - -`pragma protect key_keyowner = "ATRENTA", key_keyname = "ATR-SG-2015-RSA-3", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -Q0w9iswld7AxcoW0jbqdJQ0MImkqs8w6MEWcx1Hlwsw2ItrPDzgY69grM5qiTgARbaw5pMBlD5pA -dWLMdg9BWvbTAIIJSK/sg+TR84f9DLhy0Le7ie1+kX9WermOdFZf+mEHKetxG7hftFD4gF1ehux9 -ikeGpBLLx4mo8OSmuXT8MV0Ib8A1zcpdUU3lBcU0GHZhtNw32PicrkC0UiHpxn2zj2X8XPYZux8D -9BnhBIjeBcskMbCaPQGeizx9iMEz6Esebm50BImuhN50jetTLRj6bech2vNUYzFuUapR97m6kuLA -BZZaJIJ6j6J27dyWAfIxkpJIGBemZrClfZ/o6w== - -`pragma protect key_keyowner = "Xilinx", key_keyname = "xilinx_2016_05", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -PKkRlaOjodauNK8Etola960WD57dmghcTLLZFk7vLULnB7/rzJbwk1yC5ldSlLVQcGknezziOZ4x -ACO1Af7uQl9DWpR76WlEODfURaDDn/ZzrK/2UNB27nZSfbrkSzF1itCxobccRkILSY5TnEg6K5We -9FAebFO3228lher3DRpq2OhSfNk3yoAXs6ooliqz0v+sSJ+cyGGJG1sWGw14h8Zt6X4Ydsx7PI3z -tWDxi6VcjrmIIXG/HgM3uJtEE6sq2kzwm0EaqPR5F3kA5IPmluVRJUbwvgxQdGN959VHIAV4vpD3 -75ny3D6Warg6soJMTEKy6hb/h5opq7Sxq6mrng== - -`pragma protect data_method = "AES128-CBC" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 3136) -`pragma protect data_block -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 -TA== -`pragma protect end_protected diff --git a/devices/Micron/ddr4/tb/StateTableCore.sv b/devices/Micron/ddr4/tb/StateTableCore.sv deleted file mode 100644 index d8ff8289fe..0000000000 --- a/devices/Micron/ddr4/tb/StateTableCore.sv +++ /dev/null @@ -1,2719 +0,0 @@ -`pragma protect begin_protected -`pragma protect version = 1 -`pragma protect encrypt_agent = "XILINX" -`pragma protect encrypt_agent_info = "Xilinx Encryption Tool 2015" -`pragma protect key_keyowner = "Cadence Design Systems.", key_keyname = "cds_rsa_key", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 64) -`pragma protect key_block -J/2CPEUwld8+lsVZLfA+qextSaLLmdhxiMM55IX72kFvJTNco1vGIpgzw2fUQpwR+bogOz10ysjD -mlWpB4q30w== - -`pragma protect key_keyowner = "Mentor Graphics Corporation", key_keyname = "MGC-VERIF-SIM-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -hAQzEmYX9j6Ng+2sJ9WMp2/GTEcdPGQ7ZhGD5PiXNzv130JHl4Fs8QV9Nfsp24XJdJuTaT/Sg21t -p8Tb0u1SKqt0x++DuVIGxyRBuIXpwvs86v5f1swVzbrS72iyqSyW2Y/a4Tqiismk3kf+qvtV2C60 -8+uCXI4NPLZLL5esQFE= - -`pragma protect key_keyowner = "Synopsys", key_keyname = "SNPS-VCS-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -aYvUzBCGuiD/JXFbI8KAbBaJtraSIxziVUtvclIlHZqMaJ9kbt1d/V3BLj/aBaCnM1RWXeiGQmL2 -ZH3th6fEGFjayXbTm0YPPJXzcoAvPz36JUh9EIHUqryO2Ejo1rU8kxzVH58hj8Nrs7N+PL/lDUV/ -kTCvZkVtD3Oy2X45Dwk= - -`pragma protect key_keyowner = "Aldec", key_keyname = "ALDEC15_001", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -J4B4PB6u909DdPOwVDcvDqhDfqlT1k+7deo6NmaZ2L61dOvt2LHULjgvfytFWo4GL4/Ie0nLKHwy -hfE/k/WCiq34PF7G9BtyqOamDgw6ZnPqI+PVzgS4RnskCX27sIbWOgCh6xv8qcBd8HKRcOMW5F4B -PK6cPsINX5/CzJ32+DFby3jsmFH36ouXeuv1NxnMz8Q9T28kLebB4RN/h9wK6EhMAStN2v4ifbOw -AHbb+t4YR0jl7v9MruX3elAXVjyr2SDVoIUWDrpXNI0RJBwsGlaN9EoT1M9/E3RoUsb9EYiEbp4/ -YOq2NmONTH+EQe18ckJoe0VIDYbNX45S5PMoMw== - -`pragma protect key_keyowner = "ATRENTA", key_keyname = "ATR-SG-2015-RSA-3", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -IKcEDAAtO/fqeeG2ndb+GWV6OxmwWmqle61ZdF+QgyBSHTQtl3LZcoBnRUayFhKSARCNUyUUdi70 -pkm0EuRlKBAXiJygieOLL6OMmqQvexz8o4exuXC9J1LzoERE8yQM4vSlnikMLVJ5ojJAqIVPQDA/ -PV350XXGl+9bhPIVlz/rW3BuQGnyJLw1B5mRFjYn6QkXND92/hKDJRR4cg6hQqAIATTEjj/OaWQK -nBsNp/tDuPfniiE2Oh9SIBJ8WfqnqIfVESLn2+WEJOlvBUmOgktza3bjrQ9wuWBeUKmwQ2H6VuIm -P+3uEaYyyWjlqHvwcmA48qbPnGhZTMd7o35izQ== - -`pragma protect key_keyowner = "Xilinx", key_keyname = "xilinx_2016_05", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -sMFy15GYUP/Gn+pgxN3QG2LGVACENfPyezu3kS9nskaiwAnpBRUfUt53SMGX0nQjHkHH375zmtZC -v8sq29iXuyQHAuZLDdvkpdfaPSY/QhRP8frUntmUosQxcQg9XdpkBqqa0er93h4QvgM1K2nGN906 -sT05b4ANr5jzLyT4J5tfeZRy/Q6AkYsLOvQgMyB+cIcU+dEkbpJaRcWZrAQ07R0L5tcpe01WyXWn -QxqJgYrh8KFzwouKIZ2gug/3cZ2LTE/TyXSHSkDmrfyY5Wn8f1pRo24qvxy1zTmyozKhl6IwEC/c -veVaSztPsssuu9JOMfdcEORCektTOSO9oYaBlA== - -`pragma protect data_method = "AES128-CBC" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 151824) -`pragma protect data_block -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 -`pragma protect end_protected diff --git a/devices/Micron/ddr4/tb/arch_defines.v b/devices/Micron/ddr4/tb/arch_defines.v deleted file mode 100644 index fd2522d68b..0000000000 --- a/devices/Micron/ddr4/tb/arch_defines.v +++ /dev/null @@ -1,50 +0,0 @@ -// MICRON TECHNOLOGY, INC. - CONFIDENTIAL AND PROPRIETARY INFORMATION -`ifdef DDR4_2G_X4 - `define DDR4_X4 - `define DDR4_2G -`endif -`ifdef DDR4_2G_X8 - `define DDR4_X8 - `define DDR4_2G -`endif -`ifdef DDR4_2G_X16 - `define DDR4_X16 - `define DDR4_2G -`endif -`ifdef DDR4_4G_X4 - `define DDR4_X4 - `define DDR4_4G -`endif -`ifdef DDR4_4G_X8 - `define DDR4_X8 - `define DDR4_4G -`endif -`ifdef DDR4_4G_X16 - `define DDR4_X16 - `define DDR4_4G -`endif -`ifdef DDR4_8G_X4 - `define DDR4_X4 - `define DDR4_8G -`endif -`ifdef DDR4_8G_X8 - `define DDR4_X8 - `define DDR4_8G -`endif -`ifdef DDR4_8G_X16 - `define DDR4_X16 - `define DDR4_8G -`endif -`ifdef DDR4_16G_X4 - `define DDR4_X4 - `define DDR4_16G -`endif -`ifdef DDR4_16G_X8 - `define DDR4_X8 - `define DDR4_16G -`endif -`ifdef DDR4_16G_X16 - `define DDR4_X16 - `define DDR4_16G -`endif - diff --git a/devices/Micron/ddr4/tb/arch_package.sv b/devices/Micron/ddr4/tb/arch_package.sv deleted file mode 100644 index d14e8d5cf0..0000000000 --- a/devices/Micron/ddr4/tb/arch_package.sv +++ /dev/null @@ -1,1004 +0,0 @@ -// MICRON TECHNOLOGY, INC. - CONFIDENTIAL AND PROPRIETARY INFORMATION -`ifndef DDR4_PARAMS_PKG - `define DDR4_PARAMS_PKG - -package arch_package; - timeunit 1ps; - timeprecision 1ps; -`include "arch_defines.v" - parameter int MAX_DM_BITS = 2; - parameter int MAX_DBI_BITS = MAX_DM_BITS; // DM/DBI share pins in current spec. - parameter int MAX_ADDR_BITS = 21; - parameter int MAX_ROW_ADDR_BITS = 18; - parameter int MAX_COL_ADDR_BITS = 13; // Include AP/BLFLY - parameter int MAX_BANK_BITS = 2; - parameter int MAX_RANK_BITS = 3; - parameter int MAX_DQ_BITS = 16; - parameter int MAX_DQS_BITS = 2; - parameter int MAX_CRC_EQUATION = 8; - parameter int MAX_CRC_TRANSFERS = 2; - parameter int MAX_BANK_GROUP_BITS = 2; - parameter int MAX_BURST_LEN = 8; - parameter int AUTOPRECHARGEADDR = 10; - parameter int BLFLYSELECT = 12; - parameter int BANK_GROUP_SHIFT = MAX_ADDR_BITS + MAX_BANK_BITS; - parameter int BANK_SHIFT = MAX_ADDR_BITS; - parameter int MAX_MODEREGS = 2**(MAX_BANK_BITS+MAX_BANK_GROUP_BITS); - parameter int MODEREG_BITS = MAX_ADDR_BITS + MAX_BANK_BITS + MAX_BANK_GROUP_BITS; - parameter int MAX_MODEREG_SET_BITS = 14; - parameter int MAX_BANKS_PER_GROUP = 2**(MAX_BANK_BITS); - parameter int MAX_BANK_GROUPS = 2**(MAX_BANK_GROUP_BITS); - parameter int MAX_RANKS = 2**(MAX_RANK_BITS); - parameter int RTT_BITS = 16; - typedef enum { - // Keep these in order of slowest to fastest for comparisons. - TS_1875, TS_1500, TS_1250, TS_1072, TS_938, TS_833, TS_750, TS_682, TS_625, - NUM_TS - } UTYPE_TS; - - typedef enum { - TCK_MIN, TCK_MAX, TCK_RANDOM - } UTYPE_tCKMode; - - typedef struct packed { - UTYPE_TS ts_loaded; - UTYPE_tCKMode tck_mode; - int ClockDutyCycle, tCHp_min, tCHp_max; - int tCK, tCK_min, tCK_max, tCK_shmoo, tOffset; - int tDQSQ, tQHp, tDS, tDH, tIPW; - int tRPREp, tRPSTp, tQSHp, tQSLp; - int tWPSTp, tWPREp; - int tDQSCK, tDQSCK_min, tDQSCK_max, tDQSCK_dll_on, tDQSCK_dll_off, tDQSCK_dll_off_min, tDQSCK_dll_off_max; - int tDQSLp, tDQSLp_min, tDQSLp_max, tDQSHp_min, tDQSHp_max, tDQSHp; - int tDQSSp, tDQSSp_min, tDQSSp_max, tDQSSp_2tCK_min, tDQSSp_2tCK_max, tDQSSp_1tCK_min, tDQSSp_1tCK_max; - int tDLLKc; - int tRTP, tRTPc, tRTP_min, tRTPc_min; - int tWTR_L, tWTRc_L, tWTR_L_CRC_DM, tWTRc_L_CRC_DM; - int tWTR_S, tWTRc_S, tWTR_S_CRC_DM, tWTRc_S_CRC_DM; - int tWR, tWRc, tWR_CRC_DMc, tWR_MPRc; - int tCAL_min, tCALc_min; - int tMRDc, tMOD, tMODc, tMPRRc; - int tRCD, tRCDc, tRP, tRPc, tRAS, tRASc, tRC, tRCc; - int tCCD_L, tCCDc_L, tCCD_S, tCCDc_S; - int tRRD_L, tRRDc_L, tRRD_S, tRRDc_S, tRRDc_dlr, tFAW, tFAWc_dlr, tIS, tIH, tDIPW; - int tZQinitc, tZQoperc, tZQCSc, tZQRTT, tZQRTTc; - int tRFC, tRFCc, tRFC1, tRFC1c, tRFC2, tRFC2c, tRFC4, tRFC4c, tRFCc_dlr; - int tXPR; - int tXS, tXSc, tXS_Fast, tXS_Fastc, tXSDLLc, tCKESRc, tCKSRE, tCKSREc, tCKSRX, tCKSRXc, tXSR; - int tXP, tXPc, tXPDLL, tXPDLLc, tCKE, tCKEc, tCPDEDc, tPD, tPDc; - int tACTPDENc, tPREPDENc, tREFPDENc, tMRSPDENc, tMRSPDEN, tRDPDENc, tWRPDENc, tWRAPDENc; - int tODTHc, tAON, tAON_min, tAON_max, tAOFp, tAOFp_min, tAOFp_max, tADCp, tADCp_min, tADCp_max; - int tAONPD, tAONPDc, tAONPD_min, tAONPD_max, tAOF, tAOFPD, tAOFPDc, tAOFPD_min, tAOFPD_max, tAOFASp, tAONASp_min, tAONASp_max, tAOFASp_min, tAOFASp_max; - int tWLMRDc, tWLDQSENc, tWLS, tWLS_nominal, tWLSc, tWLH, tWLHc; - int tWLO_nominal, tWLO_min, tWLO_max, tWLOE_min, tWLOE_nominal, tWLOE_max, tWLOc_min, tWLOc_max, tWLOEc_min, tWLOEc_max; - int tPAR_ALERT_ON_CYCLES, tPAR_ALERT_ON, tPAR_ALERT_ON_max, tPAR_ALERT_OFF, tPAR_CLOSE_BANKS, tPAR_tRP_tRAS_adjustment, tPAR_tRP_holdoff_adjustment; - int tPAR_ALERT_PW, tPAR_ALERT_PW_min, tPAR_ALERT_PW_max, tPAR_ALERT_PWc, tPAR_ALERT_PWc_min, tPAR_ALERT_PWc_max; - int tCRC_ALERT, tCRC_ALERT_min, tCRC_ALERT_max, tCRC_ALERT_PWc_min, tCRC_ALERT_PWc_max, tCRC_ALERT_PWc; - int tSDO, tSDOc, tSDO_max, tSDOc_max; - int tSYNC_GEARc, tCMD_GEARc, tGD_TRANSITIONc; - int tMPED, tMPEDc, tCKMPE, tCKMPEc, tCKMPX, tCKMPXc, tMPX_H, tXMPDLLc, tXMPc; - int tPWRUP, tRESET, tRESETCKE; - int tBSCAN_Enable, tBSCAN_Valid; - int tWLO_project, tRP_ref_internal, tRPc_ref_internal; - } UTYPE_TimingParameters; - parameter int FAW_DEPTH = 4; - - typedef enum{ - cmdACT, cmdPRE, cmdWR, cmdRD, cmdPREA, - cmdNOP, cmdDES, cmdRDA, cmdWRA, cmdBST, - cmdREF, cmdREFA, cmdSREFE, cmdSREFX, - cmdNOCLK, cmdLMR, cmdPDX, cmdAPDE, cmdPPDE, cmdZQ - } UTYPE_cmdtype; - - // Decoding table for commands pins. - parameter // {cs, act, ras, cas, we} - LOAD_MODE_CMD = 5'b01000, - REFRESH_CMD = 5'b01001, - PRECHARGE_CMD = 5'b01010, - ACTIVATE_CMD = 5'b00xxx, - WRITE_CMD = 5'b01100, - READ_CMD = 5'b01101, - ZQ_CMD = 5'b01110, - NOP_CMD = 5'b01111, - SELF_REF_CMD = 5'b01001, - DESEL_CMD = 5'b1xxxx - ; - - class DDR4_cmd; - UTYPE_cmdtype cmd; - UTYPE_cmdtype raw_cmd; - int rank; - int bank_group; - int bank; - int addr; - bit odt; // Defaults to 0. - int sim_time; // Population optional. - int cycle_count; // Population optional. - int tCK = 10000; - function new(); - cmd = cmdNOP; - raw_cmd = cmdNOP; - rank = -1; - bank_group = -1; - bank = -1; - addr = -1; - odt = 0; - sim_time = 0; - cycle_count = 0; - tCK = 10000; - endfunction - function void Clone(DDR4_cmd rhs); - this.cmd = rhs.cmd; - this.raw_cmd = rhs.raw_cmd; - this.rank = rhs.rank; - this.bank_group = rhs.bank_group; - this.bank = rhs.bank; - this.addr = rhs.addr; - this.odt = rhs.odt; - this.sim_time= rhs.sim_time; - this.cycle_count = rhs.cycle_count; - this.tCK = rhs.tCK; - endfunction - function void Populate(UTYPE_cmdtype cmd_, int rank_, int bank_group_, int bank_, int addr_, int tCK_); - cmd = cmd_; - rank = rank_; - bank_group = bank_group_; - bank = bank_; - addr = addr_; - tCK = tCK_; - endfunction - endclass - - typedef enum {rBL8=0, rBLFLY=1, rBL4=2} UTYPE_blreg; - typedef enum {rAL0=0, rALN1=1, rALN2=2, rALN3=3} UTYPE_alreg; - typedef enum {SEQ=0, INT=1} UTYPE_bt; - typedef enum {ODI_34=34, ODI_48=48, ODI_40=40, ODI_RES3=3} UTYPE_odi; - typedef enum {RTTN_DIS=0, RTTN_60=60, RTTN_120=120, RTTN_40=40, RTTN_240=240, RTTN_48=48, RTTN_80=80, RTTN_34=34} UTYPE_rttn; - typedef enum {RTTW_DIS=0, RTTW_120=120, RTTW_240=240, RTTW_Z=3, RTTW_80=80, RTTW_RES5=5, RTTW_RES6=6, RTTW_RES7=7} UTYPE_rttw; - typedef enum {SERIAL=0, PARALLEL=1, STAGGERED=2, MPR_RES3=3} UTYPE_mpr; - typedef enum {MPR_PATTERN=0, MPR_PARITY=1, MPR_MODEREG=2, MPR_PAGE3=3} UTYPE_mprpage; - typedef enum {DELAY_WRITE_4=4, DELAY_WRITE_5=5, DELAY_WRITE_6=6, DELAY_WRITE_RES3=3} UTYPE_delay_write_crc_dm; - typedef enum {LPASR_NORM=0, LPASR_REDUCED=1, LPASR_EXTENDED=2, LPASR_AUTO=3} UTYPE_lpasr; - typedef enum {REF_1X=0, REF_2X=1, REF_4X=2, REF_RES3=3, REF_RES4=4, REF_FLY2X=5, REF_FLY4X=6, REF_RES7=7} UTYPE_refmode; - typedef enum {CAPARITY_L0=0, CAPARITY_L4=4, CAPARITY_L5=5, CAPARITY_L6=6, CAPARITY_L8=8, CAPARITY_RES5, CAPARITY_RES6, CAPARITY_RES7} UTYPE_caparity_latency; - typedef enum {RTTP_DIS=0, RTTP_60=60, RTTP_120=120, RTTP_40=40, RTTP_34=34, RTTP_48=48, RTTP_80=80, RTTP_240=240} UTYPE_rttp; - typedef enum {VREF_DQ_RANGE1=0, VREF_DQ_RANGE2=1} UTYPE_vrefdqrange; - - typedef struct packed { - UTYPE_blreg BL_reg; // BL value in the register. - int BL; // Burst length. - UTYPE_bt BT; // burst_type. - int CL; - bit DLL_reset; - int write_recovery; - bit DLL_enable; - UTYPE_odi ODI; - UTYPE_alreg AL_reg; // AL value in the register. - int AL; // Actual AL in clks. - bit write_levelization; - UTYPE_rttn rtt_nominal; - bit tDQS; - bit qOff; - int CWL; // cas_write_latency. - UTYPE_lpasr LPASR; - UTYPE_rttw rtt_write; - bit write_crc_enable; - bit trr_enable; - int trr_ba; - int trr_bg; - UTYPE_mprpage MPR_page; - bit MPR_enable; - bit gear_down; - bit perdram_addr; - bit temp_sense_enable; - UTYPE_refmode refresh_mode; - UTYPE_delay_write_crc_dm delay_write_crc_dm; - UTYPE_mpr MPR_mode; - bit DCC; - bit MPS; - bit TCR_range; - bit TCR_mode; - bit vref_monitor; - int CAL; // command_address_latency. - bit fast_self_refresh; - bit preamble_training; - int rd_preamble_clocks; - int wr_preamble_clocks; - bit ppr_enable; - UTYPE_caparity_latency CA_parity_latency; - bit crc_error; - bit CA_parity_error; - bit odt_buffer_disable; - UTYPE_rttp rtt_park; - bit sticky_parity_error; - bit dm_enable; - bit latched_dm_enable; - bit write_dbi; - bit latched_write_dbi; - bit read_dbi; - bit latched_read_dbi; - bit dll_frozen; - int vref_training_offset; - bit vref_training_range; - bit vref_training; - int tCCD_L; - // Calculated values not directly tied to LMR bits. - int RL, WL_calculated; - } UTYPE_DutModeConfig; - - parameter int MIN_BL = 4; - parameter int DEF_BL = 8; - parameter int MAX_BL = MAX_BURST_LEN; - parameter UTYPE_bt DEF_BT = INT; - parameter int MIN_CL = 5; - parameter int MAX_CL = 32; - parameter int DEF_CL = 12; - parameter int MIN_AL = 0; - parameter int MAX_AL_REG = 2; - parameter int MAX_AL_CLKS = MAX_CL - 1; - parameter int MIN_CWL = 9; - parameter int MAX_CWL = 20; - parameter int DEF_CWL = 12; - parameter int MIN_RL = MIN_CL - 1; // subtract one for the DLL disable mode. - parameter int MAX_RL = MAX_CL + MAX_AL_CLKS; - parameter int MIN_WL = 5; - parameter int MAX_WL = MAX_CWL + MAX_AL_CLKS; - parameter int MIN_WR = 10; - parameter int MAX_WR = 28; - parameter int DEF_WR = 12; - parameter int MAX_CAL = 8; - parameter int DEF_CAL = 0; - parameter UTYPE_lpasr DEF_LPASR = LPASR_NORM; - parameter UTYPE_rttw DEF_RTTW = RTTW_DIS; - parameter UTYPE_mpr DEF_MPR_MODE = SERIAL; - parameter UTYPE_delay_write_crc_dm DEF_DELAY_WRITE = DELAY_WRITE_4; - parameter int MPR_DATA_BITS = 8; - parameter int MPR_SELECT_BITS = 2; - parameter int MAX_MPR_PATTERNS = 2**(MPR_SELECT_BITS); - parameter int MPR_TEMP_BITS = 2; - parameter int MAX_MPR_TEMPS = 2**(MPR_TEMP_BITS); - parameter int MPR_TEMP0 = 'b0000_0000; - parameter int MPR_TEMP1 = 'b0000_0001; - parameter int MPR_TEMP2 = 'b0000_0010; - parameter int MPR_TEMP3 = 'b0000_0011; - parameter int MAX_MPR_DEFAULT_PATTERNS = 4; - parameter int MPR_PAT_DEFAULT0 = 'b0101_0101; - parameter int MPR_PAT_DEFAULT1 = 'b0011_0011; - parameter int MPR_PAT_DEFAULT2 = 'b0000_1111; - parameter int MPR_PAT_DEFAULT3 = 'b0000_0000; - - typedef enum {_2G=2, _4G=4, _8G=8, _16G=16} UTYPE_density; - typedef enum {DDR4, PRE_DDR5} UTYPE_archtype; - typedef struct packed{ - UTYPE_archtype arch_type; - UTYPE_density density; - int by_mode; - int banks_per_group; - int bank_mask; - int bank_groups; - int bank_group_mask; - int ranks; - int banks_per_rank; - int rank_mask; - int row_addr_bits; - int row_cmd_bits; - int row_bits; // Total row bits - WITH cmd pins. - int row_mask; // Total row bit mask - WITH command pins. - int row_addr_mask; // Mask for ONLY the addr lines - NOT INCLUDING cmd pins. - int col_mask; - logic[MAX_DQ_BITS-1:0] dq_mask; - int num_dqs; - logic[MAX_DQS_BITS-1:0] dqs_mask; - int num_dqss; - logic[MAX_DM_BITS-1:0] dm_mask; - int num_dms; - // Design specific limits. - int min_CL, max_CL; - int max_CL_dbi_enabled, max_CL_dbi_disabled, min_CL_dbi_enabled, min_CL_dbi_disabled; - int min_CWL, max_CWL; - int min_CL_dll_off, max_CL_dll_off; - int min_CAL, max_CAL; - // Design specific feature enables. (1 === feature_available) - bit CAL_feature; - bit tDQS_feature; - bit LPASR_feature; - bit gear_down_feature; - bit trr_feature; - bit ppr_feature; - bit write_crc_feature; - bit write_dbi_feature; - bit read_dbi_feature; - bit dm_enable_feature; - bit rd_preamble_clocks_feature; - bit wr_preamble_clocks_feature; - bit preamble_training_feature; - bit TCR_feature; - bit MPS_feature; - bit perdram_addr_feature; - bit refresh_mode_feature; - bit parity_error_feature; - bit CA_parity_latency_feature; - int max_CA_parity_latency; - bit crc_error_feature; - bit parity_alert_feature; - bit sticky_parity_error_feature; - bit temp_sense_feature; - bit rtt_park_feature; - bit dll_frozen_feature; - bit cl_17_19_21_feature; - bit cl_a12_feature; - bit extended_wr; - bit ignore_dbi_with_mpr; - } UTYPE_dutconfig; - - function void dut_config_populate(inout UTYPE_dutconfig dut_config); - dut_config.arch_type = DDR4; - dut_config.col_mask = 16'b0000_0011_1111_1111; - dut_config.row_addr_bits = 13; - dut_config.row_addr_mask = 16'b0001_1111_1111_1111; - if (4 == dut_config.by_mode) begin - dut_config.dq_mask = 'b0000_0000_0000_0000_0000_0000_0000_1111; - dut_config.dqs_mask = 'b0001; - dut_config.dm_enable_feature = 0; - dut_config.dm_mask = 'b0001; - dut_config.num_dqs = 4; - dut_config.num_dqss = 1; - dut_config.num_dms = 1; - dut_config.banks_per_group = 4; - dut_config.bank_mask = 4'b0011; - dut_config.bank_groups = 4; - dut_config.bank_group_mask = 4'b0011; - end else if (8 == dut_config.by_mode) begin - dut_config.dq_mask = 'b0000_0000_0000_0000_0000_0000_1111_1111; - dut_config.dqs_mask = 'b0001; - dut_config.dm_enable_feature = 1; - dut_config.dm_mask = 'b0001; - dut_config.num_dqs = 8; - dut_config.num_dqss = 1; - dut_config.num_dms = 1; - dut_config.banks_per_group = 4; - dut_config.bank_mask = 4'b0011; - dut_config.bank_groups = 4; - dut_config.bank_group_mask = 4'b0011; - end else if (16 == dut_config.by_mode) begin - dut_config.dq_mask = 'b0000_0000_0000_0000_1111_1111_1111_1111; - dut_config.dqs_mask = 'b0011; - dut_config.dm_enable_feature = 1; - dut_config.dm_mask = 'b0011; - dut_config.num_dqs = 16; - dut_config.num_dqss = 2; - dut_config.num_dms = 2; - dut_config.banks_per_group = 4; - dut_config.bank_mask = 4'b0011; - dut_config.bank_groups = 2; - dut_config.bank_group_mask = 4'b0001; - end else begin - $display("ERROR: Unsupported DDR4 part width %0d", dut_config.by_mode); - $finish; - end - dut_config.banks_per_rank = dut_config.banks_per_group * dut_config.bank_groups; - if ((_2G == dut_config.density) && ((8 == dut_config.by_mode) || (16 == dut_config.by_mode))) begin - dut_config.row_cmd_bits = 1; - dut_config.row_bits = 14; - dut_config.row_mask = 20'b0000_0011_1111_1111_1111; - end else if (((_2G == dut_config.density) && (4 == dut_config.by_mode)) || - ((_4G == dut_config.density) && ((8 == dut_config.by_mode) || (16 == dut_config.by_mode)))) begin - dut_config.row_cmd_bits = 2; - dut_config.row_bits = 15; - dut_config.row_mask = 20'b0000_0111_1111_1111_1111; - end else if (((_4G == dut_config.density) && (4 == dut_config.by_mode)) || - ((_8G == dut_config.density) && ((8 == dut_config.by_mode) || (16 == dut_config.by_mode)))) begin - dut_config.row_cmd_bits = 3; - dut_config.row_bits = 16; - dut_config.row_mask = 20'b0000_1111_1111_1111_1111; - end else if (((_8G == dut_config.density) && (4 == dut_config.by_mode)) || - ((_16G == dut_config.density) && ((8 == dut_config.by_mode) || (16 == dut_config.by_mode)))) begin - dut_config.row_cmd_bits = 4; - dut_config.row_bits = 17; - dut_config.row_mask = 20'b0001_1111_1111_1111_1111; - end else if ((_16G == dut_config.density) && (4 == dut_config.by_mode)) begin - dut_config.row_cmd_bits = 5; - dut_config.row_bits = 18; - dut_config.row_mask = 20'b0011_1111_1111_1111_1111; - end else begin - $display("ERROR: Unsupported DDR4 density(%0d) and width(%0d) combination @%0t", - dut_config.density, dut_config.by_mode, $time); - $finish; - end - dut_config.min_CL = MIN_CL; - dut_config.max_CL = MAX_CL; - dut_config.max_CL_dbi_enabled = MAX_CL; - dut_config.max_CL_dbi_disabled = MAX_CL; - dut_config.min_CL_dbi_enabled = MIN_CL; - dut_config.min_CL_dbi_disabled = MIN_CL; - dut_config.min_CL_dll_off = MIN_CL; - dut_config.max_CL_dll_off = MAX_CL; - dut_config.min_CWL = MIN_CWL; - dut_config.max_CWL = MAX_CWL; - dut_config.min_CAL = 3; - dut_config.max_CAL = MAX_CAL; - dut_config.max_CA_parity_latency = 8; - dut_config.CAL_feature = 1; - dut_config.tDQS_feature = 1; - dut_config.LPASR_feature = 1; - dut_config.gear_down_feature = 1; - dut_config.trr_feature = 0; - dut_config.ppr_feature = 1; - dut_config.write_crc_feature = 1; - dut_config.write_dbi_feature = 1; - dut_config.read_dbi_feature = 1; - dut_config.rd_preamble_clocks_feature = 1; - dut_config.wr_preamble_clocks_feature = 1; - dut_config.preamble_training_feature = 1; - dut_config.TCR_feature = 1; - dut_config.MPS_feature = 1; - dut_config.perdram_addr_feature = 1; - dut_config.refresh_mode_feature = 1; - dut_config.parity_error_feature = 1; - dut_config.sticky_parity_error_feature = 1; - dut_config.CA_parity_latency_feature = 1; - dut_config.crc_error_feature = 1; - dut_config.parity_alert_feature = 1; - dut_config.temp_sense_feature = 1; - dut_config.rtt_park_feature = 1; - dut_config.dll_frozen_feature = 1; - dut_config.cl_17_19_21_feature = 1; - dut_config.cl_a12_feature = 1; - dut_config.extended_wr = 1; - dut_config.ignore_dbi_with_mpr = 1; - endfunction - - // Mode Register Definitions - parameter int MODE_REG_WIDTH = MODEREG_BITS; - parameter reg[MODEREG_BITS:0] MR0 = '0; - parameter reg[MODEREG_BITS:0] MR1 = MR0 | 2'b00 << BANK_GROUP_SHIFT | 2'b01 << BANK_SHIFT; - parameter reg[MODEREG_BITS:0] MR2 = MR0 | 2'b00 << BANK_GROUP_SHIFT | 2'b10 << BANK_SHIFT; - parameter reg[MODEREG_BITS:0] MR3 = MR0 | 2'b00 << BANK_GROUP_SHIFT | 2'b11 << BANK_SHIFT; - parameter reg[MODEREG_BITS:0] MR4 = MR0 | 2'b01 << BANK_GROUP_SHIFT | 2'b00 << BANK_SHIFT; - parameter reg[MODEREG_BITS:0] MR5 = MR0 | 2'b01 << BANK_GROUP_SHIFT | 2'b01 << BANK_SHIFT; - parameter reg[MODEREG_BITS:0] MR6 = MR0 | 2'b01 << BANK_GROUP_SHIFT | 2'b10 << BANK_SHIFT; - parameter reg[MODEREG_BITS:0] MR7 = MR0 | 2'b01 << BANK_GROUP_SHIFT | 2'b11 << BANK_SHIFT; - - // VCS cannot use MRn in the parameter definitions below so use `MRn. - `define MR0 '0; - `define MR1 (2'b00 << BANK_GROUP_SHIFT | 2'b01 << BANK_SHIFT) - `define MR2 (2'b00 << BANK_GROUP_SHIFT | 2'b10 << BANK_SHIFT) - `define MR3 (2'b00 << BANK_GROUP_SHIFT | 2'b11 << BANK_SHIFT) - `define MR4 (2'b01 << BANK_GROUP_SHIFT | 2'b00 << BANK_SHIFT) - `define MR5 (2'b01 << BANK_GROUP_SHIFT | 2'b01 << BANK_SHIFT) - `define MR6 (2'b01 << BANK_GROUP_SHIFT | 2'b10 << BANK_SHIFT) - `define MR7 (2'b01 << BANK_GROUP_SHIFT | 2'b11 << BANK_SHIFT) - - // MR0 Codes - parameter reg[MODEREG_BITS:0] MR0_RESERVED_BITS = 'b0011_1100_0000_1000_0000; - - parameter reg[MODEREG_BITS:0] MR0_BL8 = 'b0000_0000_0000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_BLFLY = 'b0000_0000_0000_0000_0001; - parameter reg[MODEREG_BITS:0] MR0_BL4 = 'b0000_0000_0000_0000_0010; - parameter reg[MODEREG_BITS:0] MR0_BLRES = 'b0000_0000_0000_0000_0011; - parameter reg[MODEREG_BITS:0] MR0_DEF_BL = MR0_BLFLY; - parameter reg[MODEREG_BITS:0] MR0_BL_MASK = 'b0000_0000_0000_0000_0011; - parameter int NUM_BLMODE = 4; - - parameter reg[MODEREG_BITS:0] MR0_SEQ = 'b0000_0000_0000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_INTLV = 'b0000_0000_0000_0000_1000; - parameter reg[MODEREG_BITS:0] MR0_DEF_BT = MR0_SEQ; - parameter reg[MODEREG_BITS:0] MR0_BT_MASK = 'b0000_0000_0000_0000_1000; - parameter reg[MODEREG_BITS:0] MR0_CL9 = 'b0000_0000_0000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_CL10 = 'b0000_0000_0000_0000_0100; - parameter reg[MODEREG_BITS:0] MR0_CL11 = 'b0000_0000_0000_0001_0000; - parameter reg[MODEREG_BITS:0] MR0_CL12 = 'b0000_0000_0000_0001_0100; - parameter reg[MODEREG_BITS:0] MR0_CL13 = 'b0000_0000_0000_0010_0000; - parameter reg[MODEREG_BITS:0] MR0_CL14 = 'b0000_0000_0000_0010_0100; - parameter reg[MODEREG_BITS:0] MR0_CL15 = 'b0000_0000_0000_0011_0000; - parameter reg[MODEREG_BITS:0] MR0_CL16 = 'b0000_0000_0000_0011_0100; - parameter reg[MODEREG_BITS:0] MR0_CL18 = 'b0000_0000_0000_0100_0000; - parameter reg[MODEREG_BITS:0] MR0_CL20 = 'b0000_0000_0000_0100_0100; - parameter reg[MODEREG_BITS:0] MR0_CL22 = 'b0000_0000_0000_0101_0000; - parameter reg[MODEREG_BITS:0] MR0_CL24 = 'b0000_0000_0000_0101_0100; - parameter reg[MODEREG_BITS:0] MR0_CL23 = 'b0000_0000_0000_0110_0000; - parameter reg[MODEREG_BITS:0] MR0_CL17 = 'b0000_0000_0000_0110_0100; - parameter reg[MODEREG_BITS:0] MR0_CL19 = 'b0000_0000_0000_0111_0000; - parameter reg[MODEREG_BITS:0] MR0_CL21 = 'b0000_0000_0000_0111_0100; - parameter reg[MODEREG_BITS:0] MR0_CL25 = 'b0000_0001_0000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_CL26 = 'b0000_0001_0000_0000_0100; - parameter reg[MODEREG_BITS:0] MR0_CL27 = 'b0000_0001_0000_0001_0000; - parameter reg[MODEREG_BITS:0] MR0_CL28 = 'b0000_0001_0000_0001_0100; - parameter reg[MODEREG_BITS:0] MR0_CL29 = 'b0000_0001_0000_0010_0000; - parameter reg[MODEREG_BITS:0] MR0_CL30 = 'b0000_0001_0000_0010_0100; - parameter reg[MODEREG_BITS:0] MR0_CL31 = 'b0000_0001_0000_0011_0000; - parameter reg[MODEREG_BITS:0] MR0_CL32 = 'b0000_0001_0000_0011_0100; - parameter reg[MODEREG_BITS:0] MR0_CL_MASK = 'b0000_0001_0000_0111_0100; - parameter reg[MODEREG_BITS:0] MR0_DEF_CL = MR0_CL12; - parameter reg[MODEREG_BITS:0] MR0_DLL_RESET = 'b0000_0000_0001_0000_0000; - - parameter reg[MODEREG_BITS:0] MR0_WR10 = 'b0000_0000_0000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR12 = 'b0000_0000_0010_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR14 = 'b0000_0000_0100_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR16 = 'b0000_0000_0110_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR18 = 'b0000_0000_1000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR20 = 'b0000_0000_1010_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR24 = 'b0000_0000_1100_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR22 = 'b0000_0000_1110_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR26 = 'b0000_0010_0000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR28 = 'b0000_0010_0010_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR_RESA = 'b0000_0010_0100_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR_RESB = 'b0000_0010_0110_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR_RESC = 'b0000_0010_1000_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR_RESD = 'b0000_0010_1010_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR_RESE = 'b0000_0010_1100_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR_RESF = 'b0000_0010_1110_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_WR_MASK = 'b0000_0010_1110_0000_0000; - parameter reg[MODEREG_BITS:0] MR0_DEF_WR = MR0_WR12; - - // MR1 Codes - parameter reg[MODEREG_BITS:0] MR1_RESERVED_BITS = 'b0011_1110_0000_0110_0000 | `MR1; - - parameter reg[MODEREG_BITS:0] MR1_DLL_DIS = 'b0000_0000_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_DLL_ENB = 'b0000_0000_0000_0000_0001 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_DLL_MASK = 'b0000_0000_0000_0000_0001 | `MR1; - - parameter reg[MODEREG_BITS:0] MR1_ODI_34 = 'b0000_0000_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ODI_48 = 'b0000_0000_0000_0000_0010 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ODI_40 = 'b0000_0000_0000_0000_0100 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ODI_RES3 = 'b0000_0000_0000_0000_0110 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ODI_MASK = 'b0000_0000_0000_0000_0110 | `MR1; - - parameter reg[MODEREG_BITS:0] MR1_AL0 = 'b0000_0000_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ALCLN1 = 'b0000_0000_0000_0000_1000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ALCLN2 = 'b0000_0000_0000_0001_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ALCLN3 = 'b0000_0000_0000_0001_1000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_ALRES = 'b0000_0000_0000_0001_1000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_AL_MASK = 'b0000_0000_0000_0001_1000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_DEF_AL = MR1_AL0; - - parameter reg[MODEREG_BITS:0] MR1_WL_DIS = 'b0000_0000_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_WL_ENB = 'b0000_0000_0000_1000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_WL_MASK = 'b0000_0000_0000_1000_0000 | `MR1; - - parameter reg[MODEREG_BITS:0] MR1_RTTN_DIS = 'b0000_0000_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_60 = 'b0000_0000_0001_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_120 = 'b0000_0000_0010_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_40 = 'b0000_0000_0011_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_240 = 'b0000_0000_0100_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_48 = 'b0000_0000_0101_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_80 = 'b0000_0000_0110_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_34 = 'b0000_0000_0111_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_RTTN_MASK = 'b0000_0000_0111_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_DEF_RTTN = MR1_RTTN_DIS; - - parameter reg[MODEREG_BITS:0] MR1_TDQS_DIS = 'b0000_0000_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_TDQS_ENB = 'b0000_0000_1000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_TDQS_MASK = 'b0000_0000_1000_0000_0000 | `MR1; - - parameter reg[MODEREG_BITS:0] MR1_QOFF_ENB = 'b0000_0000_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_QOFF_DIS = 'b0000_0001_0000_0000_0000 | `MR1; - parameter reg[MODEREG_BITS:0] MR1_QOFF_MASK = 'b0000_0001_0000_0000_0000 | `MR1; - - // MR2 Codes - parameter reg[MODEREG_BITS:0] MR2_RESERVED_BITS = 'b0011_1100_0000_0000_0000 | `MR2; - - parameter reg[MODEREG_BITS:0] MR2_TRR_BA0 = 'b0000_0000_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BA1 = 'b0000_0000_0000_0000_0001 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BA2 = 'b0000_0000_0000_0000_0010 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BA3 = 'b0000_0000_0000_0000_0011 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BA_MASK = 'b0000_0000_0000_0000_0011 | `MR2; - - parameter reg[MODEREG_BITS:0] MR2_TRR_BG0 = 'b0000_0000_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BG1 = 'b0000_0000_0000_0000_0100 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BG2 = 'b0000_0000_0001_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BG3 = 'b0000_0000_0001_0000_0100 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_BG_MASK = 'b0000_0000_0001_0000_0100 | `MR2; - - parameter reg[MODEREG_BITS:0] MR2_CWL9 = 'b0000_0000_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL10 = 'b0000_0000_0000_0000_1000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL11 = 'b0000_0000_0000_0001_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL12 = 'b0000_0000_0000_0001_1000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL14 = 'b0000_0000_0000_0010_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL16 = 'b0000_0000_0000_0010_1000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL18 = 'b0000_0000_0000_0011_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL20 = 'b0000_0000_0000_0011_1000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CWL_MASK = 'b0000_0000_0000_0011_1000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_DEF_CWL = MR2_CWL12; - - parameter reg[MODEREG_BITS:0] MR2_LPASR_NORM = 'b0000_0000_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_LPASR_RED = 'b0000_0000_0000_0100_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_LPASR_EXT = 'b0000_0000_0000_1000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_LPASR_AUTO = 'b0000_0000_0000_1100_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_LPASR_MASK = 'b0000_0000_0000_1100_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_LPASR_DEF = MR2_LPASR_NORM; - - parameter reg[MODEREG_BITS:0] MR2_RTTW_DIS = 'b0000_0000_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_120 = 'b0000_0000_0010_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_240 = 'b0000_0000_0100_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_Z = 'b0000_0000_0110_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_80 = 'b0000_0000_1000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_RES5 = 'b0000_0000_1010_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_RES6 = 'b0000_0000_1100_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_RES7 = 'b0000_0000_1110_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_RTTW_MASK = 'b0000_0000_1110_0000_0000 | `MR2; - - parameter reg[MODEREG_BITS:0] MR2_CRC_WRITE_DATA_DIS = 'b0000_0000_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CRC_WRITE_DATA_ENB = 'b0000_0001_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_CRC_WRITE_DATA_MASK = 'b0000_0001_0000_0000_0000 | `MR2; - - parameter reg[MODEREG_BITS:0] MR2_TRR_DIS = 'b0000_0000_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_ENB = 'b0000_0010_0000_0000_0000 | `MR2; - parameter reg[MODEREG_BITS:0] MR2_TRR_ENB_MASK = 'b0000_0010_0000_0000_0000 | `MR2; - - // MR3 Codes - parameter reg[MODEREG_BITS:0] MR3_RESERVED_BITS = 'b0011_1110_0000_0000_0000 | `MR3; - - parameter reg[MODEREG_BITS:0] MR3_MPR_PATTERN = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_PARITY = 'b0000_0000_0000_0000_0001 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_MODEREG = 'b0000_0000_0000_0000_0010 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_PAGE3 = 'b0000_0000_0000_0000_0011 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_PAGE_MASK = 'b0000_0000_0000_0000_0011 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DEF_MPR_PAGE = MR3_MPR_PATTERN; - - parameter reg[MODEREG_BITS:0] MR3_MPR_DIS = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_ENB = 'b0000_0000_0000_0000_0100 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_ENB_MASK = 'b0000_0000_0000_0000_0100 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DEF_MPR_ENB = MR3_MPR_DIS; - - parameter reg[MODEREG_BITS:0] MR3_GEARDOWN_HALF = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_GEARDOWN_QUARTER = 'b0000_0000_0000_0000_1000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_GEARDOWN_MASK = 'b0000_0000_0000_0000_1000 | `MR3; - - parameter reg[MODEREG_BITS:0] MR3_PERDRAM_DIS = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_PERDRAM_ENB = 'b0000_0000_0000_0001_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_PERDRAM_MASK = 'b0000_0000_0000_0001_0000 | `MR3; - - parameter reg[MODEREG_BITS:0] MR3_TEMP_DIS = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_TEMP_ENB = 'b0000_0000_0000_0010_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_TEMP_MASK = 'b0000_0000_0000_0010_0000 | `MR3; - - parameter reg[MODEREG_BITS:0] MR3_REFMODE_NORM = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_2X = 'b0000_0000_0000_0100_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_4X = 'b0000_0000_0000_1000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_RES3 = 'b0000_0000_0000_1100_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_RES4 = 'b0000_0000_0001_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_FLY2X = 'b0000_0000_0001_0100_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_FLY4X = 'b0000_0000_0001_1000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_RES7 = 'b0000_0000_0001_1100_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_REFMODE_MASK = 'b0000_0000_0001_1100_0000 | `MR3; - - parameter reg[MODEREG_BITS:0] MR3_DELAY_WRITE_4 = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DELAY_WRITE_5 = 'b0000_0000_0010_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DELAY_WRITE_6 = 'b0000_0000_0100_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DELAY_WRITE_RES3 = 'b0000_0000_0110_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DELAY_WRITE_MASK = 'b0000_0000_0110_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DEF_DELAY_WRITE = 'b0000_0000_0000_0000_0000 | `MR3; - - parameter reg[MODEREG_BITS:0] MR3_MPR_SERIAL = 'b0000_0000_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_PARALLEL = 'b0000_0000_1000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_STAGGERED = 'b0000_0001_0000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_RES3 = 'b0000_0001_1000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_MPR_MODE_MASK = 'b0000_0001_1000_0000_0000 | `MR3; - parameter reg[MODEREG_BITS:0] MR3_DEF_MPR_MODE = MR3_MPR_SERIAL; - - // MR4 Codes - parameter reg[MODEREG_BITS:0] MR4_RESERVED_BITS = 'b0011_1100_0000_0010_0000 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_MPS_DIS = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_MPS_ENB = 'b0000_0000_0000_0000_0010 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_MPS_MASK = 'b0000_0000_0000_0000_0010 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_TCRR_NORM = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_TCRR_EXT = 'b0000_0000_0000_0000_0100 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_TCRR_MASK = 'b0000_0000_0000_0000_0100 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_TCRM_DIS = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_TCRM_ENB = 'b0000_0000_0000_0000_1000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_TCRM_MASK = 'b0000_0000_0000_0000_1000 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_VREFMON_DIS = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_VREFMON_ENB = 'b0000_0000_0000_0001_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_VREFMON_MASK = 'b0000_0000_0000_0001_0000 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_CAL0 = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL3 = 'b0000_0000_0000_0100_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL4 = 'b0000_0000_0000_1000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL5 = 'b0000_0000_0000_1100_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL6 = 'b0000_0000_0001_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL8 = 'b0000_0000_0001_0100_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL_RES6 = 'b0000_0000_0001_1000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL_RES7 = 'b0000_0000_0001_1100_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_CAL_MASK = 'b0000_0000_0001_1100_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_DEF_CAL = MR4_CAL0; - parameter int MR4_CAL_SHIFT = 6; - parameter int MR4_CAL_BITS = 3; - - parameter reg[MODEREG_BITS:0] MR4_SREF_SLOW = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_SREF_FAST = 'b0000_0000_0010_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_SREF_MASK = 'b0000_0000_0010_0000_0000 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_PRETRAIN_DIS = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_PRETRAIN_ENB = 'b0000_0000_0100_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_PRETRAIN_MASK = 'b0000_0000_0100_0000_0000 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_RDPRE_1CLK = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_RDPRE_2CLK = 'b0000_0000_1000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_RDPRE_MASK = 'b0000_0000_1000_0000_0000 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_WRPRE_1CLK = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_WRPRE_2CLK = 'b0000_0001_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_WRPRE_MASK = 'b0000_0001_0000_0000_0000 | `MR4; - - parameter reg[MODEREG_BITS:0] MR4_PPR_DIS = 'b0000_0000_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_PPR_ENB = 'b0000_0010_0000_0000_0000 | `MR4; - parameter reg[MODEREG_BITS:0] MR4_PPR_MASK = 'b0000_0010_0000_0000_0000 | `MR4; - - // MR5 Codes - parameter reg[MODEREG_BITS:0] MR5_RESERVED_BITS = 'b0011_1100_0000_0000_0000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_0 = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_4 = 'b0000_0000_0000_0000_0001 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_5 = 'b0000_0000_0000_0000_0010 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_6 = 'b0000_0000_0000_0000_0011 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_8 = 'b0000_0000_0000_0000_0100 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_RES5 = 'b0000_0000_0000_0000_0101 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_RES6 = 'b0000_0000_0000_0000_0110 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_RES7 = 'b0000_0000_0000_0000_0111 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_LATENCY_MASK = 'b0000_0000_0000_0000_0111 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_CRC_CLEAR = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_CRC_ERROR = 'b0000_0000_0000_0000_1000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_CRC_MASK = 'b0000_0000_0000_0000_1000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_PARITY_ERROR_CLEAR = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_ERROR_ERROR = 'b0000_0000_0000_0001_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_PARITY_ERROR_MASK = 'b0000_0000_0000_0001_0000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_ODT_BUFFER_ENB = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_ODT_BUFFER_DIS = 'b0000_0000_0000_0010_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_ODT_BUFFER_MASK = 'b0000_0000_0000_0010_0000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_RTTP_DIS = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_60 = 'b0000_0000_0000_0100_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_120 = 'b0000_0000_0000_1000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_40 = 'b0000_0000_0000_1100_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_240 = 'b0000_0000_0001_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_48 = 'b0000_0000_0001_0100_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_80 = 'b0000_0000_0001_1000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_34 = 'b0000_0000_0001_1100_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_RTTP_MASK = 'b0000_0000_0001_1100_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_DEF_RTTP = MR5_RTTP_DIS; - - parameter reg[MODEREG_BITS:0] MR5_STICKY_PARITY_DIS = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_STICKY_PARITY_ENB = 'b0000_0000_0010_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_STICKY_PARITY_MASK = 'b0000_0000_0010_0000_0000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_DM_DIS = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_DM_ENB = 'b0000_0000_0100_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_DM_MASK = 'b0000_0000_0100_0000_0000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_WRITE_DBI_DIS = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_WRITE_DBI_ENB = 'b0000_0000_1000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_WRITE_DBI_MASK = 'b0000_0000_1000_0000_0000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_READ_DBI_DIS = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_READ_DBI_ENB = 'b0000_0001_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_READ_DBI_MASK = 'b0000_0001_0000_0000_0000 | `MR5; - - parameter reg[MODEREG_BITS:0] MR5_DLL_FROZEN_DIS = 'b0000_0000_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_DLL_FROZEN_ENB = 'b0000_0010_0000_0000_0000 | `MR5; - parameter reg[MODEREG_BITS:0] MR5_DLL_FROZEN_MASK = 'b0000_0010_0000_0000_0000 | `MR5; - - // MR6 Codes - parameter reg[MODEREG_BITS:0] MR6_RESERVED_BITS = 'b0011_1110_0000_0000_0000 | `MR6; - - parameter reg[MODEREG_BITS:0] MR6_VREF_OFFSET_MASK = 'b0000_0000_0000_0011_1111 | `MR6; - parameter int MR6_VREF_OFFSET_SHIFT = 0; - - parameter reg[MODEREG_BITS:0] MR6_VREF_RANGE_1 = 'b0000_0000_0000_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_VREF_RANGE_2 = 'b0000_0000_0000_0100_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_VREF_RANGE_MASK = 'b0000_0000_0000_0100_0000 | `MR6; - - parameter reg[MODEREG_BITS:0] MR6_VREF_DIS = 'b0000_0000_0000_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_VREF_ENB = 'b0000_0000_0000_1000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_VREF_MASK = 'b0000_0000_0000_1000_0000 | `MR6; - - - parameter reg[MODEREG_BITS:0] MR6_tCCDL_4 = 'b0000_0000_0000_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_5 = 'b0000_0000_0100_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_6 = 'b0000_0000_1000_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_7 = 'b0000_0000_1100_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_8 = 'b0000_0001_0000_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_RES5 = 'b0000_0001_0100_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_RES6 = 'b0000_0001_1000_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_RES7 = 'b0000_0001_1100_0000_0000 | `MR6; - parameter reg[MODEREG_BITS:0] MR6_tCCDL_MASK = 'b0000_0001_1100_0000_0000 | `MR6; - - // MR7 Codes - parameter reg[MODEREG_BITS:0] MR7_RESERVED_BITS = 'b0011_1111_1111_1111_1111 | `MR7; - - // Avoid name conflicts. - class Class_CRC; - bit _debug; - int _by_mode; - int _num_dms; - - function new(int by_mode, bit debug = 0); - _by_mode = by_mode; - if (16 == _by_mode) - _num_dms = 2; - else - _num_dms = 1; -`ifdef DEBUG_CRC - _debug = 1; -`else - _debug = debug; -`endif - if (_debug) - Verify(); - endfunction - function void BuildFrame(input logic[MAX_DQ_BITS*MAX_BURST_LEN-1:0] dq_in, - input logic[MAX_DBI_BITS*MAX_BURST_LEN-1:0] dbi_in, - output logic[MAX_DQ_BITS*(MAX_BURST_LEN+MAX_CRC_TRANSFERS)-1:0] dq_out, - output logic[MAX_DBI_BITS*(MAX_BURST_LEN+MAX_CRC_EQUATION)-1:0] dbi_out); - logic[(MAX_DQ_BITS+MAX_DBI_BITS)*MAX_BURST_LEN-1:0] d; - logic[MAX_DQ_BITS-1:0] dq_crc; - - dq_crc = Calculate(dq_in, dbi_in); - if (1'bx === &dq_crc) - dq_crc = 'x; - if (_debug) - $display("BuildFrame() CRCs %0h @%0t", dq_crc, $time); - dbi_out = '1; - dbi_out[MAX_DBI_BITS*MAX_BURST_LEN-1:0] = dbi_in[MAX_DBI_BITS*MAX_BURST_LEN-1:0]; - dq_out = AddCRC(dq_in, dq_crc); - endfunction - function logic[(MAX_DQ_BITS+MAX_DBI_BITS)*MAX_BURST_LEN-1:0] BitOrder(logic[MAX_DQ_BITS*MAX_BURST_LEN-1:0] dq_in, - logic[MAX_DBI_BITS*MAX_BURST_LEN-1:0] dbi_in); - logic[(MAX_DQ_BITS+MAX_DBI_BITS)*MAX_BURST_LEN-1:0] d; - int i; - - i = 0; - d = '1; - // Place bits in expected data map order. - // All unused bits are 1 (check for dq/dm out of range for the given part width). - for (int dbi=0;dbi> 72) & 72'hffffffffffffffffff, d & 72'hffffffffffffffffff, $time); - end - return d; - endfunction - function logic[MAX_DQ_BITS*(MAX_BURST_LEN+MAX_CRC_TRANSFERS)-1:0] AddCRC(logic[MAX_DQ_BITS*MAX_BURST_LEN-1:0] dq_in, - logic[MAX_DQ_BITS-1:0] crc_in); - logic[MAX_DQ_BITS*(MAX_BURST_LEN+MAX_CRC_TRANSFERS)-1:0] dq_out; - - dq_out = '1; - dq_out[MAX_DQ_BITS*MAX_BURST_LEN-1:0] = dq_in[MAX_DQ_BITS*MAX_BURST_LEN-1:0]; - for (int i=0;i<_by_mode;i++) begin - dq_out[MAX_BURST_LEN*MAX_DQ_BITS + i] = crc_in[i]; - end - if (4 == _by_mode) begin - for (int i=4;i<8;i++) begin - dq_out[(MAX_BURST_LEN+1)*MAX_DQ_BITS + i%4] = crc_in[i]; - end - end - if (_debug) begin -// $display("AddCRC Input :%36h @%0t", dq_in, $time); -// $display("AddCRC Output:%36h @%0t", dq_out, $time); - end - return dq_out; - endfunction - function logic[MAX_DQ_BITS-1:0] GetCRC(logic[MAX_DQ_BITS*(MAX_BURST_LEN+MAX_CRC_TRANSFERS)-1:0] dq_in); - logic[MAX_DQ_BITS-1:0] crc; - - for (int i=0;i<_by_mode;i++) begin - crc[i] = dq_in[(MAX_DQ_BITS*(MAX_BURST_LEN)) + i]; - end - if (4 == _by_mode) begin - for (int i=4;i<8;i++) begin - crc[i] = dq_in[(MAX_DQ_BITS*(MAX_BURST_LEN+1))+i%4]; - end - end - return crc; - endfunction - function logic[MAX_DQ_BITS-1:0] Calculate(logic[MAX_DQ_BITS*MAX_BURST_LEN-1:0] dq_in, - logic[MAX_DBI_BITS*MAX_BURST_LEN-1:0] dbi_in); - logic[(MAX_DQ_BITS+MAX_DBI_BITS)*MAX_BURST_LEN-1:0] d; - logic[MAX_DQ_BITS-1:0] crc; - - d = BitOrder(dq_in, dbi_in); - for (int i=0;i 7) begin - x16 = 72; - eq_number = eq_number % 8; - end - result = 0; - case (eq_number) - 0: begin - result = d[69+x16] ^ d[68+x16] ^ d[67+x16] ^ d[66+x16] ^ d[64+x16] ^ d[63+x16] ^ d[60+x16] ^ - d[56+x16] ^ d[54+x16] ^ d[53+x16] ^ d[52+x16] ^ d[50+x16] ^ d[49+x16] ^ d[48+x16] ^ - d[45+x16] ^ d[43+x16] ^ d[40+x16] ^ d[39+x16] ^ d[35+x16] ^ d[34+x16] ^ d[31+x16] ^ - d[30+x16] ^ d[28+x16] ^ d[23+x16] ^ d[21+x16] ^ d[19+x16] ^ d[18+x16] ^ d[16+x16] ^ - d[14+x16] ^ d[12+x16] ^ d[8+x16] ^ d[7+x16] ^ d[6+x16] ^ d[0+x16]; - end - 1: begin - result = d[70+x16] ^ d[66+x16] ^ d[65+x16] ^ d[63+x16] ^ d[61+x16] ^ d[60+x16] ^ d[57+x16] ^ - d[56+x16] ^ d[55+x16] ^ d[52+x16] ^ d[51+x16] ^ d[48+x16] ^ d[46+x16] ^ d[45+x16] ^ - d[44+x16] ^ d[43+x16] ^ d[41+x16] ^ d[39+x16] ^ d[36+x16] ^ d[34+x16] ^ d[32+x16] ^ - d[30+x16] ^ d[29+x16] ^ d[28+x16] ^ d[24+x16] ^ d[23+x16] ^ d[22+x16] ^ d[21+x16] ^ - d[20+x16] ^ d[18+x16] ^ d[17+x16] ^ d[16+x16] ^ d[15+x16] ^ d[14+x16] ^ d[13+x16] ^ - d[12+x16] ^ d[9+x16] ^ d[6+x16] ^ d[1+x16] ^ d[0+x16]; - end - 2: begin - result = d[71+x16] ^ d[69+x16] ^ d[68+x16] ^ d[63+x16] ^ d[62+x16] ^ d[61+x16] ^ d[60+x16] ^ - d[58+x16] ^ d[57+x16] ^ d[54+x16] ^ d[50+x16] ^ d[48+x16] ^ d[47+x16] ^ d[46+x16] ^ - d[44+x16] ^ d[43+x16] ^ d[42+x16] ^ d[39+x16] ^ d[37+x16] ^ d[34+x16] ^ d[33+x16] ^ - d[29+x16] ^ d[28+x16] ^ d[25+x16] ^ d[24+x16] ^ d[22+x16] ^ d[17+x16] ^ d[15+x16] ^ - d[13+x16] ^ d[12+x16] ^ d[10+x16] ^ d[8+x16] ^ d[6+x16] ^ d[2+x16] ^ d[1+x16] ^ d[0+x16]; - end - 3: begin - result = d[70+x16] ^ d[69+x16] ^ d[64+x16] ^ d[63+x16] ^ d[62+x16] ^ d[61+x16] ^ d[59+x16] ^ - d[58+x16] ^ d[55+x16] ^ d[51+x16] ^ d[49+x16] ^ d[48+x16] ^ d[47+x16] ^ d[45+x16] ^ - d[44+x16] ^ d[43+x16] ^ d[40+x16] ^ d[38+x16] ^ d[35+x16] ^ d[34+x16] ^ d[30+x16] ^ - d[29+x16] ^ d[26+x16] ^ d[25+x16] ^ d[23+x16] ^ d[18+x16] ^ d[16+x16] ^ d[14+x16] ^ - d[13+x16] ^ d[11+x16] ^ d[9+x16] ^ d[7+x16] ^ d[3+x16] ^ d[2+x16] ^ d[1+x16]; - end - 4: begin - result = d[71+x16] ^ d[70+x16] ^ d[65+x16] ^ d[64+x16] ^ d[63+x16] ^ d[62+x16] ^ d[60+x16] ^ - d[59+x16] ^ d[56+x16] ^ d[52+x16] ^ d[50+x16] ^ d[49+x16] ^ d[48+x16] ^ d[46+x16] ^ - d[45+x16] ^ d[44+x16] ^ d[41+x16] ^ d[39+x16] ^ d[36+x16] ^ d[35+x16] ^ d[31+x16] ^ - d[30+x16] ^ d[27+x16] ^ d[26+x16] ^ d[24+x16] ^ d[19+x16] ^ d[17+x16] ^ d[15+x16] ^ - d[14+x16] ^ d[12+x16] ^ d[10+x16] ^ d[8+x16] ^ d[4+x16] ^ d[3+x16] ^ d[2+x16]; - end - 5: begin - result = d[71+x16] ^ d[66+x16] ^ d[65+x16] ^ d[64+x16] ^ d[63+x16] ^ d[61+x16] ^ d[60+x16] ^ - d[57+x16] ^ d[53+x16] ^ d[51+x16] ^ d[50+x16] ^ d[49+x16] ^ d[47+x16] ^ d[46+x16] ^ - d[45+x16] ^ d[42+x16] ^ d[40+x16] ^ d[37+x16] ^ d[36+x16] ^ d[32+x16] ^ d[31+x16] ^ - d[28+x16] ^ d[27+x16] ^ d[25+x16] ^ d[20+x16] ^ d[18+x16] ^ d[16+x16] ^ d[15+x16] ^ - d[13+x16] ^ d[11+x16] ^ d[9+x16] ^ d[5+x16] ^ d[4+x16] ^ d[3+x16]; - end - 6: begin - result = d[67+x16] ^ d[66+x16] ^ d[65+x16] ^ d[64+x16] ^ d[62+x16] ^ d[61+x16] ^ d[58+x16] ^ - d[54+x16] ^ d[52+x16] ^ d[51+x16] ^ d[50+x16] ^ d[48+x16] ^ d[47+x16] ^ d[46+x16] ^ - d[43+x16] ^ d[41+x16] ^ d[38+x16] ^ d[37+x16] ^ d[33+x16] ^ d[32+x16] ^ d[29+x16] ^ - d[28+x16] ^ d[26+x16] ^ d[21+x16] ^ d[19+x16] ^ d[17+x16] ^ d[16+x16] ^ d[14+x16] ^ - d[12+x16] ^ d[10+x16] ^ d[6+x16] ^ d[5+x16] ^ d[4+x16]; - end - 7: begin - result = d[68+x16] ^ d[67+x16] ^ d[66+x16] ^ d[65+x16] ^ d[63+x16] ^ d[62+x16] ^ d[59+x16] ^ - d[55+x16] ^ d[53+x16] ^ d[52+x16] ^ d[51+x16] ^ d[49+x16] ^ d[48+x16] ^ d[47+x16] ^ - d[44+x16] ^ d[42+x16] ^ d[39+x16] ^ d[38+x16] ^ d[34+x16] ^ d[33+x16] ^ d[30+x16] ^ - d[29+x16] ^ d[27+x16] ^ d[22+x16] ^ d[20+x16] ^ d[18+x16] ^ d[17+x16] ^ d[15+x16] ^ - d[13+x16] ^ d[11+x16] ^ d[7+x16] ^ d[6+x16] ^ d[5+x16]; - end - default: begin - $display("ERROR: Invalid CRC equation:%0d @%0t", eq_number, $time); - end - endcase - return result; - endfunction - function void Verify(); - endfunction - endclass - -endpackage -`endif diff --git a/devices/Micron/ddr4/tb/ddr4_model.sv b/devices/Micron/ddr4/tb/ddr4_model.sv deleted file mode 100644 index a1d04e8b0a..0000000000 --- a/devices/Micron/ddr4/tb/ddr4_model.sv +++ /dev/null @@ -1,2440 +0,0 @@ -`pragma protect begin_protected -`pragma protect version = 1 -`pragma protect encrypt_agent = "XILINX" -`pragma protect encrypt_agent_info = "Xilinx Encryption Tool 2015" -`pragma protect key_keyowner = "Cadence Design Systems.", key_keyname = "cds_rsa_key", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 64) -`pragma protect key_block -GEfvXn+CYJWnRpahCRd6lGW2ZOPGm+FvVePMj0wm98TtxkexpqjKimyYHP3tDAXfLzzZxks9U4G0 -VEr/MFT2fQ== - -`pragma protect key_keyowner = "Mentor Graphics Corporation", key_keyname = "MGC-VERIF-SIM-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -oYvnUGXz/ynKVacP65M/XJqOmbIsKVnpEWci3of0oRPZ8FIAu8fomjmAPl1jbMstZtZ1dVpNyW/Q -9SNzooLfc/eiU0VbxthuRR1VdtTNKiMhfR+pJ4ynS0vbh8JUynCj3fW4+NvFnC0pVaI/BmRiggNX -Wwx4OTANjlKG0g4vvqs= - -`pragma protect key_keyowner = "Synopsys", key_keyname = "SNPS-VCS-RSA-1", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 128) -`pragma protect key_block -UajxnPAMvL9P66D+gvtZtOWSWQosuM22jDUJow37J9t3wEl/qpKxMIm1oYL76aKKPcyM1hkouVPV -R4bVz92cs3STyEmW6AQaFyPbutUJKQ1DI5IbxzDP5QsxYPlS1726brZjmVOPHLhqSHftfV1+yW8j -9cISe2a7AIpiJw2gHWU= - -`pragma protect key_keyowner = "Aldec", key_keyname = "ALDEC15_001", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -kkWKcNfeQRsnys921mm7wDIkarrnlnOR5BOd2CHwJ+0MOeaI6NDXAlNUD0il0RWAPltNXC8cu0tw -jYePAHWicDk6CGzMlQ59CxFKMd/ygzMUiOhHJCJgYjuxQ/YHylF/bBrVR8ALGL94k784C5pXEC0Y -/HYJ3Le4qQbBGe9bOZG5X1FyVqZ5PaLrUwVD0ppRfhiVe0Nd6wOn/8Qba3PIksAaN9U9uthJUHnL -fYxbTEaNjBJ8KO0WN6ZXlLMgXFVJABum2V2hq131C3Hig5ebSbUnH74FAMTUoyyWERWs302lOYXp -IF6bi7NJ13vZo8Ya5thIzJcIMvvLr6McCwM/0w== - -`pragma protect key_keyowner = "ATRENTA", key_keyname = "ATR-SG-2015-RSA-3", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -Wjiw4qdfvbJLOPknf/5meBgqJxV3tV3yfLBiYrXnouh3dDe0ClSR9LCu3a2cOK24iS0ivP1XnPQv -PLtZuoNfB/8ohGKtz2wdNLS6mAWGT4piCe7tFh7IoPq94zR31KPKOg5LiDP1o2JOkrvZzfEEoYij -jfumJf3qONCPzIQijSWh2kl6FWX/AF/xokanwRLCy51gLSKAXZiK6wDuXgWK9cMxlw1ZPdWrjLiA -pr5w5o1bOGWBUXlrb+z6QYU2sHPZ9LzhS5lS1CuQtsEdO2muUgYbzKn5aGMeeFnTgDG00IxufWf4 -0rhSdVMcY/Q09EPMJd/AHEoqlx2GvcdbY3jxxA== - -`pragma protect key_keyowner = "Xilinx", key_keyname = "xilinx_2016_05", key_method = "rsa" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 256) -`pragma protect key_block -reFJr7mSlypn/enU7H5TZvAI/ZyTp9+kctgFsmumqE7GOBxqSUowG6MGAaQYIE1hOE4uT3VBFWJw -iQsxWtnwhq9VwskR7NbSyN5SPFzDEVDI0NAwcjLNEP8WcGxI4mtuwNaIDEKTKZM76+MTJ4N6FkWJ -ngmihXto3VLJs0AE9DrVsluixT/LsxkGIzuVG0wNsUsx1UoBoUOqyhKp2a2TITKIAUuONBlvWYPm -PSR3aSnsCKnaU8ongyZz0K2Okj0Sv2V3jEK0eRsg49lcZyCHBuZOYWvaFZN+EgYasLjS64yuj9eb -ucldGP6eUfbVRTANgpxKv3RolOBABC7o7hSngA== - -`pragma protect data_method = "AES128-CBC" -`pragma protect encoding = (enctype = "BASE64", line_length = 76, bytes = 135936) -`pragma protect data_block -BnAR5YpZ8O0NjodbyjsOzg7Dq7Y2Ud+fn4ebewNNqxPk/okNCmPCwG5sot0e8bM9l/1rBhLN4Shy -JDYN8Yf9NmRs76TshyHCmwQO/E/CxijOX/s2srzJw6rw4QYclzbWsYVMIa60wk8AEMGUtRgI3GZo -VF5Tauj/fHYx7Q+eVGVsAae/PRUfh1jseGHIbzBbg67ugz8hFwZwpgMepA5JLuRZJbpxu9TjbJl/ -4B+P+NVohiSNZVFWMjLa/RnB6NuktnNxxqhcWymIHcYPOOdFuyj3iPZH7tBdWWr89ybeJaePUdle -Dha1IXBC3A50lZLU6JL464gLWcxk/6KNAkd9nEC+QfhIcUmruHxzfY7RwxZk7ZWWGQmvya8IS0Qy -w705ZjMgx+Knw6g3geQgT1Hfa8MlfG4VmitGTqwUGhlu4LXqH+OLPiPpDP3OsHgkgXbI6C2kXGC6 -XHfpabyaEyHfprJkTVfT/6+OTEBoaJJgZ4WyDsoJWw3G9OA3SrlidfwZoNWwCkqcTbDT6oHsg8bw -VGQnebwCr+HCWbLFgFYgwBFJ1B4sw8rz16fB8z2vy2AZT956x1a2dewVxC0mWPtCRE1Y6OC4JPqV -4r7IT3G582FV3Z0Jzgju1Qn4/nqA9ctJYBWNaTxuG5WqqWkna3cX2eZ7VQZra9CMdjG1c8tB/eaY -aL+OhyftQXpS1v16yaoeFMoIRj5Uoy7P2v2LyVhd+N9GfgoU+8iS1JDQ5N1H4nrX5B51byvKlqvN -JvPV0FGtW56vEcIOV7Rf0GtJkD8B/78UYC104Q1m49jCKkNufnCTylcoJaYjnj/EXqhJhrZ8Vd5o -lQOE2kCTyKvqjOyMJN+xqVOCU30iDfVityI4Xw1DWc1nbILXCWIx+QSTc3oGlNzbbvBkgJpDEdpF -8B/NfpeWM4SQTyZtIKfCyJ9D/jcsZoo1mtOT5coYB0Mz0M2fdahi7rXGcxiuTqpvAup0gQs29+Iw -MjG/yqH6Sp1ySRk7uCik65Dvnh40p1m55O9W0KyxpU242zRW0f1KttFUcJSXr8fjpa4qTUjf4QCh -euCx+Qew/GGI2eHbhI5mhfqeAxuadP6hggKq6EaBY1FfHFv6Wbwf8cFSBKmToaY7j8aNgs4mBnen -uHUj7qA6IkvzSV8xjCPsYQ97x3+yPrdi0U5DXKLX31Hl08lYkYx1RJ1k/xIPaK1zA7QZMUCpqMEK -DcB1G5lQzPIWMw0MUcRTad7WrcOzNRmyXxBYcAWx5n+aMOkMqZxX43VkvkYssWgSp5SwDqHrCbzl -M7EZI7bNy7lfXQJ6SN7hwEgEoPDB6va9EQ3XkPez00mRvYLvOcI9t2zUgiumHhajVJkZ+2fnZTv+ -21XhboBMqx+k+Kpcs9TyMUnnjYi3m3AxgfNs4KRk9m82dGooDltlGBXscxdkaLzra+BRWdV48yCz -QmTVQGPrk6Ns2v4LEnWrcla+ZW+j1c8XXU64UJ2DaQbV27Zz+i333jV1MZFKs/SiBZ8URe3N1NTd -BELHVAtU9uPUkYTfPQl9ET7rE1aiglbz1wccUb2GVL6PEz3cYNj1pK9eVZIZ0fUPWEVe/9D2qLUj -HIPs39aY2/j5KL6Og19HYizknLOHB/zyUsXDp/50RLOEYuQRsaNwSy0EIisfY1806VJWbhCc1XTA -ScSvFccvk2lwt+1mhuN1skPrtZxoJXLKJWnvhCnq8O6dXRljJLEkNvmT0G71yQ7uUw4zEuPbORHN -YoP8Mgyv3CNbvxN3LtlFJ7cnxYnIaM7emJvT9BqD3LlQAsZsIIJvG5j7eCdV2EPaII5v0NAeQXCN -DSvVQOIBisU/ktoeGpgMSUbOpti7WgT0oc2US10BcWf6+AmLeeeiYlfLcf0UXeaUUkY9z8FJTjos -yRY1qJFLNrgf1JIuGCUYh7RpeQHT8gvF7SO8dw7Ig0cEfDEAXg0dSQkp1CetOMWR4fycSwdxCToC -o3+NIQJahhXn+c7T5rLOQs60q0E71p9BfQ6hqP/dMVHKzEt/zOxIukOyc6h8OgTJNuyW3oJ7sM1W -zEW147R0fQUZyMe4iNstCHENu9lixPkD8BJ0D8fiVNDpl31x49XwolQ12A+STFlHVGwRziEq6Oz3 -SXVLUT5+OJV7aPuDaOnm50M4ksXpa5MPPHmrYL+FxA0xCz7wT540693PMpvGGcBaQlUt5ITcaukq -lKQepwGjnnmRIZqNtFqLKahjyObUoyg35F2+PX1qJTu7zZ0d6gMgHq3qR6FshTBBvbwZOfazJqrZ -CNIkx+4jxAu/FSJ0OfWjNkyvd96TFroFxz+Sana/TRK/jbr22Qwjm7IAnlCF+5+i47bgGFPlitBm -yl3l/x5da14aObo6CLrZRuchw22HSDULaCixOrartFjAxlsPccXMc5yoGZazxjqoqBGR43BrC6vZ -X2mi2R0THBiD/zg3ZXK00DywfS0gF8/mLeOc5ihDSVjVCiw9voaSdRhB91N9t5kbskJMqX3gu72L -agjWIL4k80atA2KDe/ARaAbQA0gkNuO8azbcROUtg5lF0AdvuR+i9o9OIYkBs4+Ot3JFjFyNoyWQ -0CJ4imJW+weObA9TBc8h65pGgVQjLgSRpVKqsuVQYt7jGMNj3g4yTpYOakqqk1b6p2GKAVoAVoSZ -VAFgfs7gMt2aEzCOb3L/4LRmPW+2nq9RaqGL5a59HgdE96KKAJpeMA8Os90R3UQxm19u/HeTwTfV -TCN4JJANo4PQEF9dWAh3ldqmKkUyJT44mlqFe7R2mLcY6uZWfEVixlAUXubIK8LFE+DXvCeocGdr -B3EWkGyrWfx6i5jhnxdJSNAM7G7KUGhtXRYEdqpsmuNN+XrsZg2HgvH6DQmvGa66O4YGAe+DA9pT -x/Mln4A7Zb34JNxBo8VgrNokPbmh4Jry0r2RkZKNjgR994aFLDm3boJt7MRus2i7Z1WxpgkNmEId -3Bjfy48/VERatI3IP2syLEne4Cc/hcyjWcw9Zga5VVvLMJTdSn26Dq3uAcSY5Vsdpbg2tYcgocGE -67qIw/Bp+UDw+031u+yWTd+4sPj4tWn/vRtFA5S+UGeU4DUHHiuQ7n1w79sh8GSirRJmpWUvDzUv -jjAkHfPLkiEnjKHhRdDnB44Ws936Q+P8k1IbqXVTMrxyAfKmkhPLqW0YafEzv92MPt2CVWdCy3Ve -PH++0ES8x1yVpkPWQ91sjZ0yyoSHcn6PucwIAz//+OkxUrGPHfeCSNxkLdERrhLtZPuPT/sHuYE4 -p2BjcGPcPlisxUWad0LAGe/KuTstAbL2AbwqT8KaJ0Cu701pVoLOMeuwiylNsWYuZJ6mNUR26X3x -RgvWwFuLTS09FTQExCrHz2E3OBygBRX3P9y7/osdXqFS+SsE65WCqVmI+ifiZHol7Z/WfVrcaPjh -go6dBGNzURQY0uTS4SxmLZH+leZKwo8amG1zoKfGydxXWqFyUmz8NrYUdn+pQ9h8NCmzcDUYW1c3 -F9bCXvKl98SHmjQPgQvCaM/tZOt/75A/masA2TGhdC8RkZw7jvBqoEB43A+3+tjjRGH5D66Ncm08 -MPsut91Xe4fFc5OE2sdf2Ya0Bloi16UrgzoBs47nV74WIzcm5++g4sU6TvmC0Lfo+hVnAzOuuYS9 -PgAE8LCa9nf7qL3PafDJhRucV1K/LcB3NfB0Cfsrs+2FXd8mV2KFdU/LyklFjKtna9SwelkDYMIi -y+nupuODwRbOBtAuBExZY0HFZVLFegof9TeTEgQ+KUWR3nFIyA48htW89MWs5iewag+9E/5tyS16 -MyPrllj+tzYJSxM8FBPP5UW1ODVNvxivbRPbHiKMqryzNBw8sM7dZEuf0vqNLGSyJJfC8hh/X0+t -K4b5qBL/YJMfaDcBDrHEzXnnvym+C9ti/9zIjJdH6P2bHX9BCMY0TPV4Wg2jrZJ+4O4NSdIT9kuO -bz/fFHb9bdgZrsFf9Z/qyWn6cFVWvcIEsgDHfwFoma8ENSYaGcivEP23SUA2JK2a+eZjfg5Rmx75 -sVxF1Zz4aVXIbXFZcgguX7FjW8gqgoTPMzo+GUCK+/MxGERVDqhpUU5A+ON0zJls3P6K6Ta2RO1G -Cof2GBQYPBsxbL0KoSR6aYMxtcBZnllROkFrAOkBOmuSm++KHZHR15qdelLBdyoBj5MwrtIMEUbK -XXlrNad8chMFR1n3dvyhFi2qrDl8yt+698960pnw6rhaRKrHHW78iBd9vuBLC8FT1Urv3vp+O7Of -FNiNdSv3dpQMWSCZ+yQacIOTCmUFVuIUd9LaJEGwZGTMsr+4GlTRySAnyqfnu4zP3Cd6sll5+zLE -/9x+KsknGbOt6pXgLj6BpNFTheANBsoMmpdtXFeiGXxeOMy3CzwPk7ZkjSLSDPn+qpvwKv3+BSrR -ZJK/jtuaYeHxShWiRdp3EybZ7YXSSADruCZiMB5TD5pl0WP5KC6K78VlgmfRQRn04LPX8zuftN1E -PzKL1qhMWaQqOTLxzoZXupmGo1CC73H/kUuC5v47LxPFNrywUee46wczVuXgeIGjXT/oTtTIlEYU -DOsaRDMalnUB6idmZLaYmu2jxZ78An9Pa4UYRa3ublnIe82+CIbAsfuIpD676a9VKMoAj1H4Fnyz -Y4+v1raCXYaozeSh6VoNVoCgn5ZUEBMv4baBLXQyaBAytkwhE2oMuvt26L4cU2Tab8FdGxoBNy2A -OhU65JajfHaFH6dl9XMW30TCmFD6zE0PQNBpGFf0CnBewo5yyQ4iARTgn9lbp/bAnWZaSS+931Uz -I7gYx2DA6ulOwjF9jVNnUTB0ZZZiTpdqE0sLiF54Em0yaqrmag3JztTyYg9G8Hin/BIdKL+rOwb1 -GD4lIQTFFHEL0hfKwnS9hWY7zwmkngFpfR7fRKRodrvb8xoL1vz58qFhvM94pYMEAxFoK4l1RCTZ -8/gxmJmYXYh4xzaMyaK+92+/iKuwYpxsFiMwcuI8/utrOYsLWpaYXIJrnqNhc7shV/+MgPvhIrGa -29TrSgvqC3HWCqnshWPkIAooIaR8AwuUTzJRDY2e6uLweoK+fEM14TlQHjpDUeWMZ0CBEmT6Wt3C -ifQOdzDsJgbnrWedzGFj+u4RDe9nmc0ePJ0MTrv02GsuMnrhaoObiFscor2KADlCdmVYnA7R4s8H -qwMJAxBwhu9w19Fae0acoPqljR8iacfuAPussdMWCVoSp43F6oRreLP1Ncm8PyfFU/tvP8JpiwqS -MaHF1YpTvv2at4Wx6r5XGEs9pSKI6HjryZ6FHTPwlwVCIt3SIS8dBdeRhHlbuiUhAR3ZDol8X27G -GemcdWS/W8CbtWJlKG0eAGxAkHJNvQLNc2utMhA/6q/99ttNfmg+oP6j9dNV5hZwQHNhJYtxNwDR -9++lF2X/tI7ws2ik/a8LhxuX1jLfzz/Ji/apfEAH/YQU3eYA+f7Rctjj+uBr82Ms8y1uqt2KMY7q -TJgMEofNPqNdhkJSIDFrVITcCRVDlDAynfp3ho0kEB7va/AfWeUzLBHUGSRbSXxTbDHLsuHgBRKd -op6o3Ypmc1C3C8bk0JyL58ylScw3NRFgiaH1nH4EPleWVNVsAw5VITIsIC1Cz8944K99QkVMMb8O -S3e2jrMliVq1zjH01+dWpjwtdLDrn+4apXGUkQZhChXhbK8nK/IrYXGR7rQFmOd2Bpjwdh6h30PJ -P9mw7Icqq6txUPEC1PBVZt6wZRW+L2WSzloK1wcymh8iZaz7fFHOFloU+NNML6ol9fGyW/P+ueNH -JyeYDXOyDOVc7N3YZNnyYdvk4lihmCpmRsz5v0g8WRXwczbvCxgXXhAk78PadbxmdfhKvzPYqJB+ -/7RJaV1seAbbS+TgAICLsoBPjt0ehzoCl5RPhVb+EoUl6HO3BB6wVIgaQnkikh2H3ZdEHHoOhOM2 -Qfbu+yujzBbc4UCXPGKpWBEhRh9CbtpJsJ8/bV8R+N9hlZnf4UYVqTjOzNvYAt7lalgub8hXCUJk -fk2KesKxfhShKwMGUTg5tZes8Tni12Ng6sKrRywBApTT7+aL6UrsnAVYkLD5dSdEdKbJksk38tkt -voNUVdHxTfh8Une5rZ9kv3BWNiS5DGNgQLSye8HcWtnwZPW5SvddivpimSxCPmvXKnbRjiof6kx4 -shxn5AEJ6HPAn1sJpomHtbxkDSW18YH6r93khk+PwCLq70sxChON5qamdQ5dUez3oHLs8rOYpl+9 -GUPRJGEs+Bet3MtD1pyMOVDklOBpCCyfbIXbwlwCRsKkRwqxk8iuv1nTuuA27yfZoGUQcvThoHQn -7Zq2UOE0a0hi15ofmtq8ODfYTV7lJdASiIbXhK2hShn1Nrhk4cX54006h3QYYXuxcSWTvBfHAPjS -13TFtqRJqS4sgmrXHO5nthjPY145RVYSWMPlqKjiRCFGXCGJwPtk2J92SqfoxOp7efl+lhGznE/W -sRKUCCVJuH1vU8vngZQ+f+Gylbsb8b/8LK8R85npdozQFaVL5J7FtwGMQO53sBPPr4gB1rORvMyU -xYrm0ntexoEZ6hOV1p3MX6Up+I28eslJuEPc9bumHHnbI2TWEFx1jUbHlBXSrwcv9hHPlpcaoChf -6cRsHAzE7s/TUiZWfQCbSLuroHGJ7LepInum/Xyvo0rsrW4pg4jBXSelTF269MAMN4jQCn1C6Qvo -FNTL9GFK1MMUQvkCrgYoi+MUmQmSAla6snTTDG6YjVUIJYJOnP/EMV3tWZxHPiwfWBtwj/pXRsr3 -C54L41Jotd2EFK7N/v5ag8zQFxv4AnJs7FxhnyDmDSvymPaTw/xhMp2GjjBDRN38FTbat3R0ZbnA -moZcCkwR1cMiUUi6BCSNqli3NjbOKMiV3tTi9fyoEvEchDgfhGUYdR0b3imYqIiyAOerDEvzDRqI -TNyNBYE0fqXM5bzw+UzOt/FNU8V2nPhDNbczcoevPLu3hXZfRxvKYZDeHu06zVOVWMzTNkee6Kp6 -meeto6YN34JnRFQ2s10CVSSEWOjmk6uctkxnka6e7PfFJjmqlykXx9MlkwZ0msfFuGwlX3G42IDC -viJGvrWSuG5IvNtpWqqaWPvMsx8lgjK3xpcjonlrGeZv+3bKoTqHhtkwQLWhx66TN4xJ30chv3Tq -2Sry+hlwVvWZdo45AUKBpNn5/MoM/tzq/Jg8akBa2S6UfB0lZ7G0erzPINn2NeAxuKpKvGs0pCHG -71kyinhRRo/ePpChSoFWWoUytWTsErQBU79QmdF9coco7YflgL05CV0uaQcpvw4oP2kJYcHTRkqu -oNmPd7M2qBSuQPofP1wg/GVwav2iFrNcZz/DDmEluC4dyhh2bs04FdfJOlQJtvGmm7xa2TQTnVWl -Wor9YMcwtC8+TsLZdZofYW9jHCp52SiGJs26WEGJsZKBJnytl0Wi1f/wFvsIKQdg2dmcdUgjAsnE -MiJAm/T8Qr2s3jpSsLq+S+XE5f6esuZHccjdwja73hVeQUbb2tB+jFeO7TCnoCUjepDEGqV3Tein -Oop82qibvES7hOe0buDO/d+xDHI2N2g/hgUlj2rssE7kCjE3UfSE4xAjyH2sAgdzF8R8PSvT3xHG -cb0fTHsWkkshvnVSRXMpfzstP6qiyexFO+aDoiOEImDI9U+m6yIMjA9Nsz9ejhcGHnq+yuR7SXNO -93BaeexUhBBx7ex8yubyCnTd4N0Rq8G70uADlMg2XQXbflOUDUUUOixM6CO8+utLut58TmWz1iTe -7hNO0TVnXgQ7xXtC0YH5qAPZ3PJvS3h3see1ajAP898t8ZK3SMNmZ+e4PgcY88JOzjahWXPNyO0V -mubNgH694sQHdL470UGmo6znraF48yFsH9QWNRgVhMD+DMIB9yP9U+3y/+YaMeBrTr51zR63v7cs -6N0nuBMJo4UaXWppZnMdwVI/iDyvWzh1+1lrOUBOLwYPM6r4ofM5MvQm8/DfUMZq7RyHxE4YjpN2 -MTeCiBC0zwei8eoCzEpVkFTgvP9IIvOqQcqjFxykY+UtSFWQzD+wih8nZ379faoRzjeAGDY6b8wh -wyv2R02GJ+Xfsmq43lJOzCuemaHwcr0nwv4451SixjyjJpd8PO93hmMfcJ2qyOb/JlSGaWXANZLA -PhQwsjUJw4sJWE8/Jp1Xe0nMrh6xPPyX3s+CEVIRD4ZW1oX7UsqJJiI+1dY1D/XfaqCYdNeH3kPl -c+39HvT1XgO2VxQiJodhL5lN9FTp3B+6YteckNED2glYneoRJpz37RvV0/qGK/ygMj+l8W4661EA -oONkzIASLeU52HcKAN6MD0eFczHlzsntj0z6lUpu37RCFmVw9C0h6QJN4e8ilu/rI/WxybX5iAWR -M1QKTstjWrYI5pVHp5ciDk4jsoRxOfdZaOEOCgZ3khEegvMOQzts8XkvFPfInNCL0UErf1EToUqG -qppOnjCPQuxykkxQmokRBKby7JfRef0o2GpARG6M0yjMUO94f4h98xnX/8Aa77u0pcOnNt2WSyXl -yHtHEsepZYPbzxCvjYB0Q6IN0ukOwgr6vQTgSr/a1hgMBb2mWFNTbnN0YPD3mPc95HG5C5g3FKQ1 -ajAVGL5XfCM0xXZVEr48P9nDrw1R0SrcuDwIrSMFP9Q96eut9ISWu/V/7b/Py4Cdg94oe5EtaeUk -DJUUVKMvO4QIGyUmS+UYrkWNWtfQ6+/jFSQpCPycZNGDWaETCZN+krCVe0ubH27RmEZM1ZAmaYrd -2x5MuYrCUIeXd4EfaE//EZGCkbPMijGfdyDzG8FidviNcKnzrg5zQ4mhHyTjEoCgyf9q9r2M+ffc -YvlEG8Hn15lgWFWux5VMSAm4gpLP8eJX5UEkCCG5+rkJvsNdTqwlNKp1cy73ORI8L3DkS9PxLIMe -yMt7gebTEhSLZPehv/UAG5vMC5s8TfdRn8OTiGCpZQg3bLUjxVqOgjacyKASwImS5qKHEXsRrQ2R -1nag3Vw2lh7T1V/Aq7Paojv9VwWBVsh9znLeXArM4Sk05AARnPaX91225oqtk5opioC/YfVWNyeL -V+SVB0iWRWzTY8ir73diu+zHdSdpdHH5/8jr7Oxs58RsM4OJCi3RVZj8SmHwEfLi0Rruk21e8u6s -gLWMcuUSkxWjqAbeomJ8vGk8JPS7lr3cDqpkYjZ3mylyan1kx+DV5rw3RG2zGOJooBewFAWIv+V/ -hkkS+0a2LpjiwI0FQgYFX/lo7VsPZS6fwVwk8HjQhWEPfQD1lEgen1+t+QWAjuF7WcxhSGQG94Aa -Phvhj1O45vDxTdTk+pvf0BESLFMOHKwaJ2lYU5s9a682BbmDgyyjHHIz2iy2+VCMtV59UsgYsFb1 -eGw7fwg7hCa7oqdd0Ae5+XLv9kquUd1JiySXxlLgVujSFAXuCmc5AW4lEkhS0S3HoQLPEFKNXEX8 -T9GE9NFy72Kf7RvXayFF2OamX5soDWz8hju/CgtnuVq3dRAuo+VSo8QWaxuqWjldDCwEcgpJLrD3 -NM5shyGoZ1FcCw0DOs8rHn9Y3SWLq3GiZr7ddKhw/I9QYpZUCu4pxHjEqW4y498Q+wLUgR3MIJyP -kwyZ1Z/dfFMDytRGM3rWJEx8gTnX/kqzMeg6gPSavWvZGNTPDOvpfiIWIk3S5aL2oYWLlT0hsbJQ -lpmLNMSMfnho8W2sf0a+SqKM968UyqxlDvovODeXja525oLlZhqZKiXN70QkGhlj/klwjGgtkPoJ -5GmhwmuVqSr7+54rTQrknKkzzJtKNZC7JtPPotF/c+o+SZc3MSWq4+UD4GK1qjrDfKNrH1C/vycc -HnHQX2U2OsCiNDvxYJ7TTt56kvWPKEW0XUEzJ6jFgHczuAv8TjZnPNed4JNUJ8r6gKCZu17dFoPv -oxg4odtmEAAH8gcHm7HTYE4J8rfMtBaCVFoeu+gT03YpuJtwIemrezLZk6fU+DsQx4sSIb/wEM2E -SNFAu6WCvUIrWR/jEsTnHCu9uZN4pfxu+0pdAie7OmYowydxeYacnmeeP1UPhwro/whC/HvLgPR2 -Xac3gtbUHxX0FcnzcRYFfVkt7D1IvIrdk4ch+CivUvG/lE0Y6+V7Ifsldq/N3+ANivF7GXRoTgIy -Il02mH7nplcSed63wPiUzKX+dskqT3pSwKHq1e1s/VmjXY5Fd8FN2vmA0xp+CLE+2QsDUheptCMv -QDFl9V/Hl3sC/3C/7YDoXl1snP+Lb1MkYsZp1uVRSSUjwfa+i21LmaiJ75WSHCPQCL8y5eONU9/h -8I5CFwLgkThPYgCs2VqWuJ5CJOdg8aYfTvWrEaWsHwB29tXBJ8aIigKtj+H54hqNmb/f8ftABaDT -EfXx/5n27ZrHH8HAHNH2CIcHkdIyCWlueLxmhQ8i2L6q5FlIS3jtPw5sfljLkW9eD1Lb1SVzwiTN -2LPjMUgWTUFnJq+jLPlXb2l3jB6E3dizFVkBDIuGtp5dqnyZZxNjHnX6qM8PH/V57qrmrAZBdgyr -I36r/mSgab+poiHzAHc9yeiLs5v8WmomlPzu7tfNT6JO7Tc70Qrd+qV32H1QI8mhK7huJg2UuwWD -p0/TexKMfEW3TaQ6yHbKrKzLTtp93uGHKP2MKaaxovSLTwIowsmvwWm1/O+ZmKBEmaiWY5Bunfbq -DgJj8eeD7MnFBZjiWKOVNCK7rs2jih4NzvbVnFSQ4Kps0MlinHhvPPq7TYTLEe07uL9Lw4w9Wk0r -B62AC3MnOyqaQJ2mV/IzgkylFRBwfMi6C2C6rdCfAJJWUJz9w6W0BkhwBOu44iY02h1CigDFq0KC -gNuBZZ/pZ5gkpPICt3NxwSbOxXeL/mVZ6C7kLOYpVIKJXqwD3SlEUkL9QqKgosjseoXnfxDss5KZ -JdbDHTnQqWsbyETaLNPTi/k9/UyvJIr4F/aJGr1zxAqk5VqpftJl37aAZsYwg0LlMcv8FF1eI+J6 -EbA8hMI9Cmfa6bti5clSo1+J8KDHPUtM8oylBAVz0fOubpJEkVCpPRo8sfxqTAN7pt78wkFGY7PX -cy4/0T6ocPGIwkGDgw9XHHTUCdSowqPKq73Agirq2A5UR+0cLdG+PuEoxfaF2agQ6K3hSpFzvFaC -8/LawxPs8RkUbtS2CRp2DP1LzJQtpPWTGb2io8LKQ6tvToFI2eiUoePAtDNBikYgvn26QCjgaE7u -Bzvji/uYUKnHiUH9AhiAW4jAEey1dYdJqvzLT4PE1O5eXuuNdWL+p3X/yOql7aWdguzjM79Aj6No -99bkNPNwcqGRkmI4pSma8RshxR86nFisO0F0kkfHCCGDf42h8qW7B+xxVfNZ401zriv1IywdVz5r -pQFRF1S3/9vDs9/taKUy47P14wZon9tdLzRN4qOUMQ/1AsPbwzRMZ8YdwgVs+0MroMhmrsRfvBeF -QllAWpXeb0csJCdvb2nL6y1nGavcjqQ0Q+Q8Dw8tSd8Wx03qDyjspw3PttQmLvwpweVujMTnxi/P -iH7ploQ1gZU4wfo+CHWp1IRXTSjPxmFDhCi4dMvhwpGbVAdGkam1AlVhAmBDOgrYuLdUm8dMkHeC -VgYZS3irJ0ZdxcStPg4j5Tq/gZWdwYM0Bul7UsDff82Nv5Hs4gXnWfrNaIvX6L4diDotNHEIZq46 -y3OPYeAendtJNkcBRCiuWabGv1NQOXkq97RzF+2M4Fa+w07R5JNRU9qn8nYFXy+O1XxfrxGq6Qaj -rfTwOZ/faLNg1+ifHmx+BmcRHinKtiofzZ23x1bBr0uCZssJ5Zdg5rm3xE09dzX3OmWWyI1ABbHD -6/xRNcA8F84Dxc65WUQM7mNiNVP8eIh7Ey6yZN4eMNLXxXwBGhwFuUdQSF8YVB07h/Zpt3WUB/e/ -bAZRmnYKx9QoIBmB5afyfFUk+Hd5Io7aA2EJbdjm3kjcTPhu6iiZJhQUmNywLNYGncJ7GjTu69BP -HJ7bnxIC44BSQgc7/7lFL1w9SU3omLEu93v6einYEv4V0fMrAM83L2tBRKLYPa2h3W/yxY4whH7m -pHl1cOlyudQytKMTayp7VU8A6ldO6TpR8R2J8rabRG9YjYwnOCmOKs4eBrN5vwA4M75yuoAnfmQ8 -FVUSpQ0Nme1FSvilGM64duH6gk9gmemkMMuQWbS65SAPxhKyMKM9rORr0hPwdSZGLgJCZegvt6XF -LG3xlsmlZ/Dtx73zmL+hc7LeEAthRDmD0s6dY8HGCYGcxCqpDhVKK5yl/cZgzqIy4gmryvoXWGSj -c+n6cyTYrTb2Fskb1yN+96aT3hjzwGrA/c3w6aJ8uV/Uk8yhiJS5ng0dpDESPMsRjAeadBbqFmeC -WVhwre757Ew6DnC5ljMdgAJKa+rAhJkr8leRZ3ai2wMa34hWYrlYZ7w1lyy0dojri1HAvUcBPJo/ -CfbReeHVJmonRJhfMF7zhjyrk/i2j1cAg486QQ4BvmQGu4VoS9As/rd1+TObS83Ji759aq0sCtVv -rEBGS7F22IjImlxwMADGEDlKs9LoSEJzpLkehNuHQZqgTOPSpeM0P2x9p1DkBzdCdKeo50GGCwz7 -6t1xsIuUMTfQlobOsVdhw+Q9++jZkLBMHMp3dKWEmZ9VxTYtxhN45Ol422TMdIZQpD3DKCrpYeNp -56ZbqZ57Og+bdQCuDc7ktFOVXpSlPynO/kGy1u0lk2Lz2MKb5wIh3p5Hf3eeeSNIp+nTOiRRIWFH -ELn1T1CSCfExiT5UWGCRiLA1Wwm055Zrk305BfUYbyBazS5rTh3rcvLVU6Ryn/wDW0X1yBbFmGlX -xt6k6lZDDYT3GVud1t+fEIZHlklgHah+mi/yJL9C7uC4HZ30p34DimLnL0bPvWVkfFiCxRjZeD0a -kP7YnO+sZYz1vr5F024v5wUMTtRlVuvWJYpwJnB1TEEZN+j5p8SytTIh6S731MN73T0guBDlZKxx -DLM56uLbh4w9fVh8icKuOfOH3nNkowJZmcaM12s1jo3ybFqEHt929o8TS0k069CLsX2YPaVH+Zq2 -8gJaNOErYQeUbopJglOk96h8dosHMW/O9qnbNo2TTpGFz+6ieKC/r+sqKKXkDP/b/xmB4WDZfe2b -KU8UfJPWJ2hf69iwWa4brzV3mHjnPxqq8LufOikZJ/zXm8fh55DtweL0mib4LGcDH7xJSUIOwQnb -Y3VaicLIl/EuA9WjeRXoC7oltz88xxv/1Rc2dQB4MX+9f/QqMtctLrB0pZlvc9QA73NjTo4ob9Mo -8AyNCBpmIsZS90+d8lsrJ10Srgzo/O/6a1LUrWge7GQC8ul20zPHgd7Rey/JQ38ofApe/pjmam2J -7dS+KcRrmO0Jpz/3ShVSit+ueyofvFwWbEqqDJeSL+AU9HzSm5N20BSz8OlkUYkueCHo9f3msppL -9op7Ej4EQrJC3nEPKs2I/qcKkG/iockRRAKc+kT+fetOZfo4Zw8k9wdj1fMAYunBY149U1CaZ2Ss -/W+sZyt/UDAwKAOW6jLV6ODYt0C+u0MVVvmklSrBk1mwX8CWS+0JrdYFdLnFO//XvQBC77o/JX5P -a8xGhrbcgFOpsYvhkbtD/ksMyGX+uwKinUn7Ohp7+3uqQcqaQmYH9Ikd9K+qDYZOFixSWf0Z/Pw4 -zvX6pMpYMb4/WvIX7IwKGRKSw/VbCDzStKV8Hcq35iWtPuaOaTYBEk9w/FP4rimHKs4vZ1+ouPFo -GYrHUaYqHHzEovg7ZBwkIkbtveXQ2bB/Mao6CGOCbMaWCdenIWxYxt1KNlqFC2qpWCpgeyUn4MhM -DNJBTI9vM2rIpReBVp0kpSvc4F6lFD1k9LNOSnKo4kqnp8E6AlnT1DmSMxOumU2EDeAKfUQsnQq0 -JT3iqv4UQFJzSGpArzY1dQnJWRHtNW9+nQePK7OqUbrrZCO+H0M6H+VIf9iv3ipVQaSshe6O5VjC -pW7IlFfHozKvJ/hfglGh95sPolAXRb4/o5MZcmAamoVFrBVJzO2ZN3AY7rdB87+nYSPX5dZ0Eu2X -Si/AHbxovexrz9T3hXXI28HArYerziVV7XDjN9aTJPNvD4wlfmMKqDxYfjhgieNTI0XlCjlXcknn -jqiPRb0SoIiUvfCPs7YJYJIBhTwe0388hgHQPDuBYEfozzcN9O0Jbf/xxryuhW38E6k44Lb1D1lx -2pZKQYMjJAduuaor0+bXRkUbynllb9lB+lGHD1Q5FPMvN3ZIJ0pmVQ0q4HF8Ihx2V6nz+WhiB4h5 -2gWvQtonRGC1Jqbjj9r4U0+zg6u3VuFQNvHCrHxwsmoPdj4wfNU3OebwcV5x1quTpx+ZTRBYYLej -YywJmDcvjq6xRiK9AKs650C7+PWooojUOtuQI12idWcRngnjEnDYaNf1BqVn3CdYogZo/FWo+UzF -m8bEbscbMgTRz7f04SRMQYvFb851dUaWN+s98cILLSROtVrd295qi5NcfaDZkmM+qky7ZoCOawvk -slwGeXB6aKRptO8qbjVQ51vl+qkwcIYS8kEAvwPYfVg5Sf4APoNQB0uXknF2LQxTUJlvmVDpE/IC -wFoIc69RWMM3k4T5Dh6sjNhTGvV1cTNtIByh6ESHD/toPcwypG1dBzyAl7D0OJ3iLPWKgAxYF8Hp -2A+rWtWztQ2nGcbHpfMD1e5MihcPHIvl4V/pn0sdZl7+YIbuX4nuWHj0FkWn8K/FlIx/e2t9tpVd -mvQr8T6ZMe5vzuPQFhwkrAHQN9VSnoDpXPj9OSGCy5r6ysu/OoofKNgKjiaWDCVTRYkkYNlM7fiO -J7Ebrjas8SkR7BaE76Xh8Z9Dj/Fprbkl4vj6KYO1Wy/H55+DI3ZzgLdn9UBa9DlxrkrCMBNnLZHx -TlsfWLtuhuFfKvbCDJHkxZhlfOESqMplIJH2cTs13KYCTi/gW0q98W6YiY96OKnf6+rpuaW2bLST -iXBk3+bVhlEyBa6zuXXWHos2MmLD4QZw4t/ThQjclDNiV8cHjzc21LSmdw3qX+ntHEaqEeOXd/WF -E2BEGaPYYIOkeDgGlopMAPNXmts+N1QsxKrwyac9SnoJSWBJFXVAHO9t8lN3Rze8nlXmBSgw8T/7 -8U5SlgqdHIrjVZL38/C39EKwJLgjB3rY6dbWqLWzkMGBgFDY9BF5A0W33q6YgB5oOQPbXO4iSst6 -EeyHqFOm5wkIZM8YRc+GspMeuWkwmDLLOmXZX8yKe3YQFU4tM5nFxZlabxVQc3KtgQ0iPS28YVJZ -NSl8aBXIOS3MW63c7vfrZcI5z7X+6dgatHvOyzOzjae6jnNBj6vPsJrvpHdC1A4SOFJYjh4N716l -OYN3L3FYadJpAWvj9oCpzsTRZZfNEK2P4/1eI/nQ+glXMgJZ4KMKSQwMizvpJaYWjI1WiA0Wovbg -ycbGGoOmtVkIIS5BH1+czbZq/xXxsKd5U4UCpg6FoOjBGeMNmJ+oag+Pu4s3vamZ4Jpx6ogk4YaF -gOam+nIVOKpumTsDZBIiVf2tXAuA9XIfRvG5kPfeUejj4RlwvuWoaiksajHv/o9DFAiDW+mN6Rhi -4110Bj3Peq81crAlKZS/dPmK/NgWhA6kbtPfGq0ZCiYkKTKEbHOv0+MfRSP5KlV/y2llbzkt6sgW -X1pt/jmPnqdEMaoq+m8xmyqOJgW++9ABghoQnPhfeuCrEhguw3AIXvsqLctFdlwPuR6bkJI/tcbi -0TFUFTCkbd3Gf3aH/b4O9KfegdDnieKyulSdudEEnsxD+o14T8NOzgtUjrYl32T5FR8f2D0w2Dme -wIA1MzI1P1SIujYxwZ3eepscZTx7a9eNufLyLSCo31ZbTCrg6S6bHIPLbrY95VFVd3B+DNCAATqB -1/uCuGPjICtu+ujs/xeadk4AfjYETkD2EFA2VPQpa9JA7OoQ/9Bms+n1lPc3bozozA57gfgfI/IK -YB7usaqLIzxR8SUGNulZn2diP9As9sqjKXw66pJOG2sFANK/D7yaixeKNTMaTQtNbYaozH/q7rHx -htLldN3cHjKr4KGjNebW997nMfNnsfwAkmnyct2jUTcxfdNuiiWzUBuoDK4GAU2PKduqhBS5+IY7 -rKlkEfPkltnlkekyvxA2ECRAba7/bszwXinG92m2FtnLoSqAIvTwaXhwvDtVHx57Sf4Myxb60C07 -KfKCAlUz4xujzDXNdaAoUofJNWcaOv/m3M0u/rmNt3pmB4Uv4ENvIEFQ76SSgPxFwfNoNMBpvOqw -KJql/jm/ypYIEbz8PCPP6ZZ4mWijLli0bbX33qbFGiRyRlSU/Cxn+owEo2zxNx2mxzT5BlXo+uFL -xZ4Ptyfjt1zhwf7+wwuM/Gzs4AZXEYlKc5bm0ifQsyMF8BhKWzhjE933OWzyl78cc6DkDftBJLsa -F7IFVFy8OfguwAachMUDiZwzCgxopRyw7Vn2toWtpEPxNB09E9/Ek40mp7BUCqSfLdD7hSkV1sc4 -vZA/e2r7T1Ur1jpmzflyBETlozRo/u9bnZe6TcSGvzuXdhqfJTubc+PCRti9ddwlbMpKoxdUPDra -qyt6yEUFk8HDm7ba1NJasARDJXHuMzOpamMVAkAHi1ySgzkUK801iyfEkNGNcon3hZUMiKUKu5fv -EJ03wneOCAjs934//DAGihF9hVCZ6lMnvw78T2Ao/oWKvGC6u/GWXAvvnh1TZ2vWWkx82iiH5cK8 -9lLf2tUySCr9/J1TrlaxC+cVtsd6/jXEdvpmOh0I0okAQFBd4QUNjhnsmi3JLF1FWjTSYFifo49t -QozS2zcCgNdXYZTQZ1nhGJwJOMRCActgTTNHaGEVHE7qxJReE2wWvP0rlTuAMp89nPm8Qn0vL7gX -ZeYTNS6U+zyNUoc+2xOQoNV47X+IrjZ824D28PkuKN6H/WwGdnlQ5CwRX5mfJ81SJTxD7x3PPWXe -h5vjoas53gzKdeE58Cl2kSVqFF0y3Wt3m9Ab2eJ0LMVPVzBIeQ/pDoy5RR/YMzlSJ/sAe+l0YcNq -39vWbD9GrN89Tl/1LiABEcJW/ktLPaDDl/XQFc0F69U+DLR4vtPb7CoxhNtgPK7aHRroZTTHfaFd -jcowLl8tRQNrUhRQsSt48PUsBC6euEXDmvvwuMR+4zwDNV0/gVjCXUuAyg4Qp+lr1au2vKeEFeOH -ORJqS4Ix2J7sxn0hzAVN+gH/0FUxdy80jh2mAjlNCCiySnX59QO2VVILNIMaM0ISAF9kK6s18Vsv -PcsYi9D/CgbjcRtjfcXYlGcLSNtVY4+y2qWEjo4baIqZmnVK57EsTU/UJnpW/npd2q2hF1hGcOE4 -qu/GFC7351MxQyB+WZ8N/Y0c8ENFDhY7+J5mKpKNZ9XmVOOY9UrnODFSEkmBWGSa2PLXcGL/czWt -RZawK/FpcGNYdyDYqKXdzS74x0JGPAeKeF84UGwxuclf3DtaWtThbS/yPeXVUZvWZ5GVm242SuQP -E+9KSS+7mv4sxoaaDIPeEYcQUFRcLnkUHlRLHx4aMml7RIASdUto7+914RIU5a5/XsTAjLSvoeyZ -mjwEiQZhhGFNH99BdJiu3LySAexs3PlA7qFdpwKd4TLNV7IhwMGRITxn6pQY98O2zFq/THYXNjF9 -uS4ME5C/yBWcxnUaTVJ6FPZH47/HFh/pDwa25+mH6h57IpJQbfFw6ZDK/HgJaV0yc5eUFcd5/R0l -mkzmOqphyh9U0+wymF056rGWbZSde7KrJLWzcnmGAx1X3xFSbjgXVLi3eoiMy8SAtcT+ja3c5lxg -BXijlSsLVgaLJwYTpDaFN8NcrdpbcQVlPrkOINtls4fLSlSn82APhSAbo0hKD99RRYVGnE28Ezz1 -OwTAB33/Pz38hax7txiq2OomiJEIBOipMDFqEw/3amhT9fHb1dXo5//q8iH6JP5DHoTZXw5YvjBN -9ooObti0OHz1hDOw1lqTsV0NlCzG9px2ufIvqnnltu/BKm9H/RpmRMLD4CgspAHYf1/a/ecFwhOB -FHIL8UC4vM9NDDEzATCL68nNqcTB+aCNbTXtZJgsCnN1FqAPNXUNdmSL1hhYLx2+Nhq7rbMn9NfS -KmbWtcJbWSRLeM9EM28N5Jt1LJj6o2oPRi0ZRrptyIG3Vrl50XPmKFcEGlzcKsDGnj64J2X/vBCb -bglginQj9tlaTaulY6celieH7mp4FI+KSjUHxU+b4E2MpmodLG0cWwLpAQ2wYSbAxN6pUnrlTWXm -ZlHHYrKmo2PZDIbOCEcw20c7NFKEq5xzBKBmoaesg+p/f3JjtereDU6hzeJb7ACvgIefQltnpQIB -f1oojOlTZPqaL1NVnTb1cqFP5N5BBMJH1Bj9wzotuLFqzG0Np5aX5luMmEyRujKqi0uqLq4DVv5m -axwpV/weEwMJrFqwWeStUV+JwqS5oSMkC/cPjS9wL27dcH+f6yLbErnqqJS2W3+xIzetdM6BReLU -SrDpRzOdreMsbRHqLbmVL3zvHQGracXPI7vNloalLfgUrdZUNFSa+1yB2Vjv7BWGjpyJzkoMMZ9k -T31sEwgVOxRgJHhRBntkoz1IqA9U2bbRDTAxI0EbrYaFA2Uv6kxQNsnUFYvSWVlt5gj6fK5IXlUo -T5uAvebUBiPdzrNNJn/weI3K42VxpTwWb5BA3ur2mWapwHKnX9m6ep7F3x6ZCmvI0r28jh3M3zYw -WL6wOdlqL90BAPb1Si1wsPGJra6v69VaucLIhCc3pPzZt8oaBvVE4h3Yd8s1UUjmsrsIEvW0hOil -JtIHjPNQTNWyvsdXdjpF9ekWCSce4WJOrcyFYgA5RvddlBcPIuLewKGyjRjerHX6blUSmFIpRTKD -GRpSEmfWvlqv0/jo4PW23+dVdGLl0m/AKobz3VPibH2Ji8ynnav/17Rkuo8Cqgd88CoC2dTnpJA3 -EmzEm2qyG/ypyYsY0wdKuFdJljvzCQzYt8DjhfAuZ/epBYbhx7R8kijITry+oERhSGqeYpG+AdQb -dTvDY1o3AVeQbi2qUdnC0SHxZdt+cXJ0Jj8Ob75ffhCZdGC++8yaJdbgkiENoK7Tv45VmHd13eSA -Xg0qKki4/rDrtoy+ppb8tOQaqjTB7iqHAXcGah2LHLvyEwmFhqC7Ih11umAbLTkCvRYKrEo1CjkW -Wke2M7GZZkYqmp+vqEpVG0Kc1C4UXacx0fSYA2VXu50duyEML7rZ2gpV1KG5tgENXIUZeiY5DXSI -+gQqm8jZA5Hv4GRHvkrMAMsjhT+0PpWu3zxEfY6Zt4BqbfrDOoOqZK/8Tx8OI87Lv53PuoLo2E/e -rK8X0F2XVYGnB6ZECnQWggQ0UwnT4cnpNnbZ8f0+ynQizluo3X6N3BNAVCReAKwGiMqa2Y4/9FK5 -hrz+nZfKvJBCqnfrduKtD8/1qLzWuHhRG8oTgOxgQFdUufy9NFm1lT69IAmKsfMXs2h+HX7hqMU/ -GAqPD2wjgQnKvw/JuTKVQ3GguqDZ531MFW5k/8I8u8OswpVnmPP+ftKc7lPbw1pkfLtN0h4nm5fd -TwX3aSFSax0XW0Tkz9NKBcDwrkpxT3QruPlJDl5BYRutvxfAn/q/iY/9uARu4thDR81Tf7MWy6sl -Qi5Esu6YRC0Vb6IHApdIR4M7Gz/HodLdN/7ssb3bC/yfR3G1X7vekySUguPYkS1EQP3NDq8L3qDz -ORPOYWBjx3I8arK/4F59aLoAf+6JGQP9h2HS5CbvmbgMpjhN0RFI/jA5cFRGxKiwOt2CV4urx6Jx -+JZlbFn1qLM2wdR/MAuGYYvT6l1Cb1xIERfJFxFNWr13nlmv18b1tMKrFSQGewPOZSf9Fgozlnay -ncD6s/kBJJOxafZN1VMix9D1UyrXPxxFpdGeFioZsveyklGvYkeJyAyhyekvbpP2OGREte3c27HR -aekiseRfDXrzBc0Hia+8/6Rj8NLL/Y1U27FquVla90HbZa7VTHPrbjkPOejXGWao8woGQg0iHWsR -ku4B+YaKnmQA8ElKSjZO0PZFvPdQDEcTWx8Ig53pfVK4mn0v0S54c+TlMYU6KmNrfIA2dpcruyyM -dMJshetOSiqYpgb1w/o6yeytxazHdC54qvkHI8j4ASWt/zOxbnAujCFQ2MeqFhPXtdc3s1CMczFU -jPwSq04jz3BcZr2vAdjcNCXutVxLlaAqPaf4UN1VwfgkHHN+YbTlmUn03+zDR+vh8OexUcxaveHE -zma6ARwl2e22dEEX2m1V4s9T9TKjQMV24Gt5879k4zO4b6cyndzt3LTlGtVJhlZopfnrG4N6hf3t -NvCaacbRea01EOTW38qebQMClNzezuKQ2hb3T/ynCkhTk8vyQA4fYrTcf0BDWgZUiBp6MvBv2AeD -WnPhQCNMIw7r0+sXpmX7CzUeIJNbqT5YuiA7YiHB2lTFIoR/YlzdK59O8mMRE9Dy6j1o/zX8kxko -PqpnHhOeVymYRono5nBvi4erl3Ai6O1Z0UdwRSw2FPrqcKTf9lfTzRu2SXyxqa9d09VhtT0rFF8q -jimS4j6OZfU+nk1Dj1kSgdvPWR55OOIjmQZuQkSfEAPLaFE+gyEQOFjB3IQtJ9d8GqLItbgXX0dW -TDOcnINSeFdSFWFLYWlw8PA7zN4gqj+pe9Akyjralv9m7kPWxd3Oy+rhQ6sE6Fy4Rc5OXU0Tkwyr -RVDySq+63A3pks/3e7H3yV+KwBEHsQlv5kj1ppdWx9jSps1rnFU7dAqTeLRK6ZM0SuRLd7/X1lp3 -ztcyYuVuE/IiOBMiWI/JZ7GOkOnOc8bEOQQT4tdbDBqjlSv20l/mmMIC7VCw3udT1sZEnKQxNDZ2 -jm52yh9DCTK0BhrTmyuh4v0Yq/cz/2aYGhxmTMz04nhFrBeIPg2wxS5DuXvNnwLwDyg3iupZbRB7 -b1h/uccw6kUf7I0HUaGftWF2IgetcGZunnhZylLFhE1wBZcqwumJD/6mm6iJjdDNV6YHwm12AvRL -S+cD5K3j6siYAwt3wHDF3PNymrN2lpNgc4lnuwYH0kufQKDbRtW4bxQCqo0QTHUNZiRhphHmG3p2 -ETVQsmG1Dq7p24VpeesCcgfwLblXyXNach/dFQKAB8OmlTifuo+wGvuBt+CqVTLvV+3JUeI8HXlC -3A/dlR3HkAPVcEJ1JE9Yqxg0xXD+vNRFhV7VpM8TLzrJtbzw0hTQ55rxmJwexhD4yyvS/BJQaAab -vLm7h/U6VBQOXQcJbyWMf6+q4HsyFjo/ovOa3ZqUqUPRowUhxS+MM/xp/ZRLF73vk2ggpjgXf0iE -GgxNAtz7lfkTrPOC5piclfVSmae8uVl933xlkklO3wRcdxGREd4O4nXjgU88Acn+6I8fNvveRrtk -APoCyVQrzuookpT7IeP/a5xImC1SI7DJx/9Wq2Xi6Cwm3MsWfVaVdko86ezLTQ2L1glTW9D6OWfW -hfnQuF+LEIEhpbwlGJTimmiN1J9ej+z5GRVQ1Zs49s5o8SZ+iIaqkS71wg8+UZ86YN9ubwPk1rbN -wiK08uYTauBUvvNZ1zivdole8PRH8JMsbiKITGOOBfvAGoI+TBN5CDVAo/rZKwmU10cbF3Ysa/DT -qPZPPFgUt+xE9y3GjpmAL8fKiAI5rHqM6Ep75oT1EMIi1GV27DT90MR/2qXZMhrWF6AVA6nmbMg8 -cKJEUFWvhqyPQ8icKQv85BJWVDAlvn5LlqvnkhYo4ya9grce09mOsCSzBKNXkLNephhVqBidG3BI -yPN4vvr1Dw3ZN9+0tLkJ2QU9WGF7a9DnRodD6LDUblqOuWMPFRDHEag2Sb0ktriXXnZ/aI18+1DK -WVRXwvgBsZeGyOYTddw+CFV+fxM8T2PQTgN8QZAX0ot1/AgOmbVRlKVDpQN+pJy5qi0JC8mzNZvQ -euWPavl320HS3fiUTYuuxBxwShATDotg0vLcYGFPZ9jyuBxegMkLiFkWGGSpep0uu/wRe1ZTA7Do -6nVgs3VrtYe7/bBRKI46gS1atgS7+HndTbG8p8pq6GOwnOX2CxSpCTCwxxL3eNwPEgNPrcW6zCCp -ANV+nvNEdy4tY6te7v3qYS5DDr8YJ5rT6DnXAVRXtUFmCoJ2Ar+XrCiEoQ5C76AYNogOuHxZZg6y -t3nSeQdbvmHKTsP/gRmlhXU+h1+nCApiH8KqtdhPliswCLubwgJx2hdtnEOJQZaHUHNU0ANGT/LA -CMx5n9PxZLTDQBAvg1jW3Mo7YcOEaS/ZtKHqj+JDpj06T5FaAruKBZpvVCG81X50ncmaCTBe0Bgu -ta2PGjDdBlz5ADGsGKY72nK+UzfhmFzyZejP1HtCobQb0wb/7V5MSoctwJ6EWzb0uIAxjT8Ic6Ld -5pGOqeJ/Mxp7j5dLg2zYBHifAST1nNSMkdG3kUsLFgfaikELaCWzigOp6RKDN9qBbPlSlNQW3IB+ -fmJDVAWmgLdG9ppFF917RQN4vKAQicr/bmkiOubqJVNKVNvqN20Le7+C/Cn2DHTW14+M6noeM5p2 -/z3GH8NvRN7biFbeK6Z6x2gYzuc5iUvaD//MS8IkhAvYjxvPxOm6P+NNRKef0GIgdGHPoCzGc2gM -ZWGDlCw5ArL6dnZwc8A0f9JZ7FoutoJL/WgBWpxUmdO+Mz8FUcS3ojErj7kokI+iSrvLjQeto7FL -jbCspngxl2mAkDtvu4lqE+orxPp6D4lGZcd0TRKt8xb7q5WR25FER0uBUIOnEnd1/n/gJKURYoBb -hO9NX6nM6ynVEft5LaXYHioQbquhky4iDz856xgbP3Zu9WqykR1KANef3nqjasrF6ZF9Frqeyjc0 -uctjCXn7MJt2Hn6+9gStPKF0h+6BC1JGlvV1oLMG3ozQs9LgkuRNyRZuMkdbtm6BeeA2fxJzkyDy -KSEVekTHaXF3SLHh7AI7pPo5niGxmKIOdzdBUq+DMb5GO/hyG1iKr1JLXDsFlxpUqT/sb38hssry -n8F9e5eJB6pEqZdFPWU2e3oDHQJ5UbiYS13cPZGeLaPkxGbeW+Gbl4TXUarX5n9Z6/QqjkoPT3/n -QeFHv+qOopDfJBkf0KKatnG0/uIsKuDryzb2EvzWu+vP8rKSpKMIcCJj7XxbrJXueLt29uhcdqP6 -gc/Pwhoc6/zP8Bc0dCgJXEZ+JDlTTKNOPTkYKgPhU6wZo4cEOVBPqOEuIoHpquhBY4Nlqq2htVEA -il13EermOcUM+PCbqeoT0qTvUlrB9a13sHsT4zGk8Y6KT8F87qtdyYMZuD1fJbluHGl44Yf8jXTP -rAwHhJPiZ25aq9SJhMacBEOSlDs1vN7hQQ2yOuVA/ddOv8znTf6PYXgCqEy2mm32g7EX+yJTS1lX -/zAsfLbvFq7gZw24A/mXclvrxvrPahD9h/QX4Sikz0HcGZL4VqUiRt899i6QVLM3v1B9zWqmrZkk -65J6Or72EhS/jBdYgwvDSI+h1NYzoIhZBZXkO8NSUpZPIy5D9y21r807664yjZVQf9fYO2aZ7oPO -xCEjyekwizkj4G7LR4CjLvnSjC6rY9xILwDp82oMwsJ8g/hzOaWhHTFySXQZy1KZtnOqCJ/FM6F+ -dzeElOaFYLXtZN7ooyKJZ7nUYG/xGq0TdrSSmNkEZApAIBwHfz1LJBvUomiO8fhOUb9U1cld9KsY -PORKlcsqKRw+aQm1DnI7w2ZJWXOqNOcN7VODN9t/yJAQcsUCocDyQ1XPT+vBpsqIE3Nbw5FU5FTz -sqjTsPy7MGMyLL6hiwwMn1a8il/Sh3YhDV/qBoAZ/R9Y9BShVrHZH6PLs5eFjoR4VFmLdyXvHIt6 -rKjfg0BPJzbXlrJaUlHgDZZ1+m3dJMpZkRLiJpVKtHTn9Oh8nKIK/eNPMoSQRdlS+q+6saI5owB/ -LB3zRxaP76KzUqi495rMvczZ9j7hDRuWn0pcchZsvQFRAWvjTCiYshj46i4B9en8zU/SyXN/sjBV -hitFbfLKuPeVi6v6j2wn6h3RagvdmPqM4teM3fhhCOGqrYfYs86P+6kW7KYathcIv1RcB9D7monm -d3TfEASfPMiDC59StMODRylFB0aBcY0qLzF0/sXOHhp/h7qNjpHzl0jGBHf1qWfdcy7qBPwVUCLZ -jmKs8zKgSo/g7HR6PXa5jVTFCnTNW1EgSm+K7hPYmICj5VyQdSy8SAUH0NCik7kKK6HCyGWgQv0z -2I3nprTNRfl3Z0Tdwxqg7dFYHJAATnWFH8Vlsbs8K8+oMaB9xcgBaq8J/Hcjxxs7zrqEl1w3seXF -uRRNkFB2al8k/QX+0guSPUv3d2cMBNu+R2HEUXPNvRyb+u5H89L86YPcolLsQT/Ep8aINCYcXqWF -W/WH4O7BhqvnFX9Lsm3z/uq6g2NtzH94DhyjYcBAZHAZfeqnCPdfBN4y4EAtgLRI0ZIp19hGOiK2 -IY3i+86xPfFOFAvff7ed9cMEU7He6DcNz+UMLiY7F6tct5AILLDUE1A+uNvfCIM436ZoEDDHO8nb -Q9JUeU0j3FS9b5tvaKeqBOvxY6PG7gGBmeP9dwAfkgsBPbwwbGHpSVfEyjssoirj2LF90uuqRDTK -1TOBaeOWflSxCeUUWjuPJElrCeqAgUgKECotF/pyxH+tQdbMmTL+kHhDpGu16eqCceznmk01PH8l -T5/n5IBYpU1je2hDGLNxfs5/3WDNmb8sAbrX/BT2ecYP+7tKM6xkU6R7xKZWHLCu78OyeBDReEZ5 -OOpLUDpXtB1BBTBTOj9Qgi/DaUMgQFEbY4qenEskMMRdrkPBR3Akp4lkczClu7s1etNLlJOL93wG -8UqmaFO/xF7frbW2yuRYqfApg9Alq2g3UfWv8cCkrR2OaRmNVcy1/HnsS8MukhFYasnVK8VgbZ5s -R5oYDSYwMVDKGoFU5U/9bUHPAFw7Oto3E0C0olSucbv4JaMSgV7G2OqneIMiW7U9b9ZDVny/6x8U -UKDCbCOFXao4QJMtha3tNGdSVP1ejYq5/FgsjXP42inNxWmJw9smsiWhE6EBaMmgxTDzL4TBwxIf -hHY98UoMJTazrCdbptNhqA2qKhnrN10cCU9djvmzIgoy02ZuXQv6PXKV+1CFkdCvWtAJ8AMZ1M65 -XjeWTjPZ5CZ3TojrW2eivAbe4Ak2kpZUiQEabiAbEKFDAMJJz3Ci+HIEitRIi9rc2JZ7js0T1DUI -nOlqekzPs08GoLiuUwLYyFqGvc36rZiMOoAWrkmweS6dvND9vH2qFcS+KXsYQV/IMAHtHgG7g5S9 -WefJImtHP8zEzSx4KAXf19JWymDjkDnwOhJpZi505EKMkTkO3HPzu0161rkBHMKLMfPBSug4LFq2 -rktcWouDRCbNqQBtFL1o77MjWuB37cGO6BWGI7DjDyFR/ySxYx+Easu5JkPx1ldWc59bK/V+rdB0 -pUk7Xu8SrrQYAzFcsJ0TqFvI+zl7GjB4uY14fnHoJx8/Q8ukneTblJeuIMvi+aH8OY4MAL9nRSfa -Pyx1klmVb9uICl8HkLOFPQOulPKke8PfD8USv6tYMLYewN4orPTTmWSriWlkptL3zjLhZ9LBiN+l -xiamdsgkDBIJZERl/6GpPwMKlLnYBhqBkQ7rel6d4AZUjN5PLHeNFqnNgARvUXOGQ4bTYtwW+aez -Fi7cePfyY7BjcPPscNFI+NZvXNrgArPHE9K2oE7gr/uHHI7xmvCuzqtbaZedIrIDBRBuGJQh5is/ -EdD4p0fT4p1Caq2vGoAOtH3GKx4Zgqy+QFLC2KCZTvXAX8mg/vKUkPS4kuG7preo/eh6Z/GO+k7s -WUccUa7/SrvjAVzwBt349/On6Ek80EwHX/7t/uWTmcx7gETxhCufLSaqV4Fto9xk9GkCuNXDEp5w -LcjLG22snC5GyEjJ3lWxB+HuqxRj6S3UcvoL2dVQTjwbu2TliKLhLCs+Rpnre8HdXbamDcn3Vg2J -qisoygRJ1h8dUfL+TCCS8b3fFHKI/4sPu77tT2R+hktyRsndVGMD6oV+g4isXZYnFrGKgKGgoPyf -c5OaShiY5AbSsIexr4B9Yb2pSpPkJCMJO2WlIZxtVYznAL1007oLuDeOEWOWOR90vlCQHsEFkB30 -XPcD9ZeDd3ECJgUMCHEF0AeFMX/vcjk74HR5bvur2PT4ht1g6nxCcRunfsEBCxUL92CvYQoIHreA -Z9lmCatwtzmMY5E1lWq1dasVDFKJksT4m3P34ssP1SCg/KRZow671pKPCghmRebxzVyhwl2rQUYv -HtImUKXNxtC+8+Kg1cZjo7I2AWqNawTeHYtOWR7RR8zB5kyY6xmQMx0C/jJutuGalUFDas65Hk+4 -Q+lIBkPa0CGw2NPEqHtvdk1g7JM/oTBwduCTgEnYKxQGmAsH1lNQX34k1JC8t/WtQ6uFunYI87KD -2ev5bZYT66I7Sqxcrf+yav5+g6vyzZ2vUFVwLW7bViMcazaSeN++a3VlQv+jgp6030lDoJKPy28a -h6qS652RrlvcTGLL1/oP6zuMzEvqGOCVXZI0964nht9j4VxofihLKYyLsq8zekOVyLKzP9HXbMnR -e42Hx4033SBXRAN62nUqibrngEsTvQjpeRt049/Bi7trLludWVAfoMyaa/kLah3xC0G6pftBserj -aISU6xa3adz50AtoCZIF+kIE6oJ40xSQ7329BG0kEMDzADBYZ4xWiUk4YeoPvqebK8OdJ6JKQoz0 -/0lKOkeGRHzi0V8kv4HLToYvh5ySL7J61iaP2ajipaJDS5RbPEwwK+6Aj0yo2l7h8lLYgmS6SEWj -AQCHfhDMGymcbb92l8uHt2DK/oPmwubGU19YAf7OPDWSrTAKplURZDCt52dE188QsFlJEpP9Ff+i -rb709MjL1ETsmRgWv2lZ/BOhrzzWEUfaKN3bMbFKL5hrP+Yy1cVEFMG6A9x6vp3ISU5GC1Pu14Dz -X7w+EqT3rmAxmQ4Vr/LItwebUTRu7GzW85lDuIo28XvjeoVV53SOls/JpcrB00nt+OGAolGuY4XS -bUJ5S1cvLwTbHKhz+/ZHHawqtRhJ3vNsaxiNCixXf5S5a7oTgoNC42UpGJIarUyftlws8udAcI5n -VJcZay7cKJbXAX5s8dfmAQ4eH+DBTvZVsjzrYym+Xhy4LLClZo5Ip/IweBG72tm84Ak2Ikaizrop -qiF/PlXYU6yj9yT7xx24CIraJOVK8ZRzZoyqF8Mrh+gfBQTdv6zetVh0W26IIM/GBlokYfRjMTGT -EvX8h8fpZW+HEm7kazdUxEU7c9vDU4ZpHHw1cQYfoAxpvLfnlen+ureYbfU2Ga6OnRKi0JmYEKvI -Ab/ghyrV83/M7HdIbGEdWOYW5e1p7mZmGKjPZ2MmCeYabKvUbnU1C77UWM8C++QyNi0FJdY4eVba -CSQwAAI3FEq1mxD6GPidxSvf309c0KskRo9mudjxD7RYVkr6dy6Y06+0oNSwNpkGawB3mIQCxcfi -7/ZjHsnfoF1o8a29NQ2fcakAsa03h58/qKGXS6tKgbaRv6w48ZIkLIHngzh8LvzHiCkRCehVT5PG -B7PLPDfgV4WcOTDcqStamlT0g+XH0o/dJz/Qi0jhcgX+uUWHmrF2r4dLc5/LFA8P3DX+1sb5nmWX -wkR319FNVik9M/smPZD2Z/rPJwfanjsEdyLbUILtpBqqLuW3J6YVMZJ0MOgDHY3tXAEq9sOEkd+H -V6QpQVXTvz9nZt1h72Y1jnELFtCR0mkEV2iXdKVwF4LP1LLxOz5LovJFblxyJPkxWqx7FLQKpbDA -f+G0Oo3q1ZamwrKxIpxKKpoYlPw5DV3bg6A9l6Y0zRcmUg18XlLRxA25T+nwS5h3Dn1pyHRqys2F -cG/fQEBmCijgNCQnWnnUYh8QOMVqAZltHxWZhvnROE2XDok32wVMSrTxkf4LCSXwPyWhtReioNCY -jY0AFKjBuLKvDJSadI1+DcvpqEbNfJ0CyBK+3/3jRo4JC1XgfsqY3ok+QV9VKZkUxgx0wosU4RfG -02R1/sQLMFBQcF3wTuPQJR3nlSTkSlW/98/VYa5tGu+MBHAqz7IwEJQ+/2VdVZh2/9eqW8+hoOUV -1BJcplB45c00gBGpiJdbsg4Ht/JET+vcY4zs1XWf7HprA2cN3zk1KICwQIHYFWt6kNiFVl3TSb6F -Q4vJ9v30humI5TNxO2t6tC0DV3HSp+HR+goHZfxoQ9SGD1ha5h+6gz0wSRxnz7L1eejSScPu0FGt -J+rqVYf9kx6d+CdqwEKNGBSqcQ1ClPi/Rxla8DzX7z3nhXe1g/teKhn1zyW+LxhnTa/Zdl0UgIpt -jTKka6Cg5np6SGxeOezt4pthFr6PSKIxPnZ811MxqJANtkeoDCrnrKvogFgzETh2alYlYkrlOfQZ -UHEoR+Nf3AuoQAsPLZOzHFJiK0HmcSIJ7bD+Nw15vy01ssk/Ul7XSPXtAxzumNemmaGVtcbcwMww -vPAIDOoWqbqvEYQkRKHOBgVmE5N4is8zsBLuHepcMNOnlSXZfCr3bgx3xmq2mQEh+n1PFY5fMQth -P2hXmc37bTArKccgmGDdPBmtyTMYkdPGNxz4pnzxTnmtHydJmdpSEoiCA0c4/XhDToBsJoZZenYM -64sfsVLgmtwKQj3A9msGd4QeH/bqjBvFNdAxbo8CpMq8NZGv6ujmU8I4r2LH6LGFWDnocG3l0Bge -ewfnW0kANgGke61SzrlsEgnzIi33+Sk588vaicc4yXPL0nvCAatOvkBWgzBwptz8sl2Lqj/sFATK -JpaVSokPBgGgI+jSDjWU3D7HtAxf5WsHyBzoREWuYKbUoeSkb9V95LNKPl5wgD6XJqe9n8G+1zBd -PbPMtezgttVYqh/yEpyUtZjVbHMY5zKduBD6wDAGPTkCncz8FYGMvhm6cStlsSIU85e6qeZIHE9W -FmWfyZ5qx0FZZOfRHPLMn5NZL42rh3yyab2aohMW12438SiW3uUgKinOiYteWaX4LGYzG5tXw/QW -6gQHn+sv2rPNdKNYcxgiAvY3Y2eUBjSwtro64j0BHWinoMQ46sLTqOg5klD7Bo/l7I20jUc2Mrux -7gmAKo3RphXox0U01gF8g6Nu3johB/k9i6xx7r8SNjqAKst3540dr/03yZ1MNxXpX2i9mzwj2kpu -yMMCb6/skvb15nRDYTKLv8P4LUERS6Yn1yZcwWFggnB1yYX8G+O+xP2wNlj84q2K2nccVWf1cKz1 -CCIBub1AWX5LQ5jIEu0vXTjzTVR+TSpzQDvfJMKuHmJRxUE/tpspBFsZVLvHpP0GgIY6sDhp7iSs -/2p1gSo2RfuJmLjmYGNiaMvxLR9E0BJliwBSEJgCo2/tkIzab8gK2H5WF9WFTQ1gSoQaIACA+mKA -C0Y50iSvQBVkDmRo0um+HpWsFf6Crol4SJWA4fUOM3zS9b4Uq62NfUycA7PYEnyhmCw+gKmGy/EO -iRbiAU5esbnXmAN1CwJZSbkiGYMK1eM8s7fMGjffDWSU8si8JHBNnngo01FZDiziQaWapIni7k/8 -FH/FiZjCcRdRYJK9mKKP2P2k1D44AK0pjXHAkwIuA73h06QntlHAA60aBVli03E0PXp9pwDqDlUD -n6rmLnfBKguvaWtxtPfOyBaj2jHeL7qAohD+mBPCa2xnl+weGyXHiY/ZtN6w8Lrnsmpfp87llcQV -b8xMni6uFUmoVyU5k7QjwXrVa5DZ4mog3/auhthzy3w4IFbjv+1xZFIat0qa+a/pKUq3QW5njiBK -1yaC5pMBgWh/AoB1qcJ2138eU0ZmFgjLKK9TZh1Hjj6p8ITG8P3QIlqQ4Pj5SzXt/4Tba64GFMAz -pxlzkZZHg4KKy0L45YZ9H8XhMQ2e+qX2WZPZ3od9mYtduIReCjc5EYReeoQNgFinVK6bmugWhI+o -ZeRy4DAQuTy3JiEnHZUFvEfQq9MHzTiiOv6KssoESDmPkdc5QTB2vRrqYMCTAeGZCczEVtJzfKee -q8lZHypRmURpdMCI80K1GHNlil/iS1J32MaN8ab2w27t2hRWGu5rn4Wu8ewbdQqxgOdMcqt4VMZQ -IFrL/ofEgLB03rqULOJ5qrP/JYCnJG9LAaZsLlwOycz6qsK8URn14dQyExC4p/fvZTUYZP1pc2Mr -TPZ7f7dYpzoet2Sqq7DmH1mNM7o7wdvdMo582kAic2P6HhkRTiYJ1C2M+RM1QUj1jtkeVFLHgDM9 -eAksapj0XCkO4cEyu3/Sd8iPCWvQq9Wjiksrwr7mHfXuJrrKFFwQ49mXJgQqia/CEbHMomOnUUNn -FpW+y23AmDsAIgiR9x3oDd/xcb+dCrM2mPYXWW6jBaWMW8M5XArmdFkAXj3byJ9X95wcSncMbhil -AdkCFlsFeAfgmmirIsNUR0MNMkVqnzwWRWl575iGSUt44rCcpqLshxllP50kL2MKFH4C3GWhjVGr -klG4VXzFbtSv45BApjxV+S41cICFXXF9XsezMEUHvQCZjBBLFF08+R+cjmwdhsiWQqmudnVCNFf3 -/TRnHayiSM4pH6MA4o6yO6KphVjbpUoW/qUxbTwkUfkpLZ0sGQRoarfc7rWreOCDsOIQd0cfBTnj -7LKFp1pMhx1KBhNe2vyiyE2dgbUPo10GCDY5IY2ZYL0GwgovNWrd9bjeKBVPdPQuz1cfgonqadjk -/WnmK72gnidjnQ1pmPXkhH+tdGPbizZaPqog+2aMy1JOKCn7bwlxnFaiTiNUitQulbtLR/Zed4Su -7LddBbRimiWwq8eawQomCz5LAu+Xy7WKVZ8dujwLV6fWPptzB2vd8YK/jnm5sUXbZTsU8wLH9knG -YpOudd25ay44OA6GNaF2/QWSaJLKvUz7w7VhKRtbhF1yl7Ddg1OB2kKZBPDerVdRRzw5tC2EL7BW -77LTBuad+4vVM54NK2zPPPxoAZUSmG3yA//PEhHSv+fLlVxj53buK8WDdyBV0rGS572efTfzpQa4 -QHYxyi+U9PNmJaxQEyFYLLOS944HVExEtEkF+CSKXtPZXXCmcNvM9kkTwrDJOmrvloDDw4u4vnbs -J0PkNzY6xmJRvVVutYmJCzPRrNTmgEdItrv7SpZ99Wu14OJwls2zZTOoTpxHbEst8ZgE/HTZ/1ie -+Vb/Xr1VoEgoH5/QuMYbz/gAB6x0A6LayM/5D2ROeFa1t62I4kiuuAiv4T+of/0hIaAO666CkAFo -Az5LRsZlocAOgq7VBEuZsGGFb3jQSf7Z6uHh3XukFYEEQDfjiMXi6fVhX5XqFcD5XfR0yQ9rQULx -hWLgY039HHI4h1CHuax7sURcfabKQr/Tf7QWVvu7pqb11tB8vYP7xnJI7vU3XFuOUDlQwbUvNMcb -mYZqJEMZaNdjUecAzqBxEcP+K0/yDmogKzB8GkqHNKVle2+XHIzKvY3awj+75ZH/rn10BtlZyREc -Yd9KFr4FnrSLFqXguiw7GVWeyrME82lZMJGuWzpwG/sUJQrYQw/syXfpurQNATbYxT/u8o3BzTrv -3qNDaV2ZBoqMRmvm0CTAg9KWj4yR+X6Br0pLvigYtWdYWxnJ16GeU9qvKWWiP/3ZtJncdgf1NrhD -MKh4g/MtelCLxRhU0Nf4fAj2uSqDWqWHeUoqD8UbH6b1esdx2yB28CSf5GsXlFp9jNh/L8KfoMGy -UXA1/64OiVIa4ns7Wsh0zgHUFzdyMIfuJiGAusF3QIzfJC9aTEgQIUBjOgWnnwNf53v/0s3DHKHZ -O0HZZw5ObYqPxwUcU+8wN9JFa6oEfJGCdkRCPwCfJBzBfhix/78fV2S9FLGrPGtf248AI8yImo4y -kIspBw1cgTbFSO0P+K7/aFhFEAitjRS0hHZAhgMWGQdLG7FWwVnX2BGGlXyDnApmxvj+/h+kDteI -z/HS4FiKqPefUkS/eZlBb3eacOSVo1Z6RuixvIhpJv09hVzmjLKfG2niP1oxGaFinxOck2aMJ1DJ -kFQm8pGe9vkaOQWq9yWFBFzeiEsFjWnSHekdW3nr66VoWArHW29bO4HrocZB2ZtFCU7VKW6CYXk2 -1owrz94Zhkh4olJ56Zcgk/4xxH6JO7ApvOZwnYF4O3LBnUeNo6O7GW7WmToH2zTmTsDuGBsE9uxx -rHkVA1M6WyREGEUA9r/V+rLyi9JpK7J1GV9B3WedzV6mYbt36qYlf+VcjDxHsgsc9WlUu2aD1wgd -X6CNk9X7vTC7JbZb0SsL9E7kg0fIvAhMu1/0HoWYSzfXYS4+J6GDZULNTa++btYNGoI97D0lbFKq -Q62vUgAv+IyElydMVTVR2Q5oGPMM32aUcGEEb0NdaCYjt4rICC5VU5ZlqJlbKMbuvNNxCtW6TiVX -ZxvWIs+243AJy3q9zIJOO88rSJuOkyNomBbH1vsChOEhSPDnR+EfzVMlzAkNamqj25IKAf4yAoht -A013TeROgW/o+DIfl+wzIPBlJWvxU0bZinl6kelYT+18CdHVQxD4elPkON9OfNYiJK0NSrDT62MR -tgHivOTq52knN7NWgp+zm8NOXvqyQLrIMSU9TKcgC8gI/WXvWc0BF/a5SHCCqz+u6EDbAWTNRzHp -rEKLcXLDL9w7gWCXWry2ncQGS4FMAfB45tEqXpHVhV4k++e6utqqI+5gSvdKolK+wPNZsYPEkpxG -iNsiVZVsSu78EmqaaC13xrttdR5SONGP/oaj0q4ydy2J3PWu8v2/pHH4j/B0nnoqvxE0bTdfd5ZV -WKrQxe0DxikBnsNkKehNrv7uhU8JIBufYG9BQ2WQ+s5ceEG9npZu0meC9BGC7X+28aT68/CWCnrU -b2B8v7wyQ7M1gehHVz1i9zmWutbfZULFc/lOFpMfMod8fN6hF2rxaR4DiiTZm6xu9dVKlU+2lwwY -6AoOaElp3RGTdEHG750t8dWZrEEB6evwLHzWjhENjlVyH43nSJKEiP6+juyhLA/ApNXFG3AbPq0b -evXuJWrzQRPwfx9XK41+AExWFwQ4OQXEmBZvz2bluSfpCQchZYL1b4o9HzOM0YQ48uuzAEFpQ43K -elTPbsg1+NHBW5d+DuazkBbkhWppp2zldjYaGdhAm0nlQg9X+ihF6n6xJCvIM/nbku8GGW125qT4 -scCJ67aml0L/5fWAWrskhSP25vdlUyXPZ8CNmLmLVCJ+YmPsiXEA5uVRxP4u+4YkUzg9C6QFZUw1 -Q47etR5QvD++2mBspRvUlYLS/i4eXnqBTtOnSc4Yn5VKEudyoo1lVXYwS5rJnKH9n5iw3akrKSL1 -LTnPm2x2PNTz4RdhJHFK/lkbuder131aTqH1AlqNt3MbMBEfqHFSuGyJvN6vN+dBrCpZGNuAWiWJ -+QrzcUsm1ClTjgdotzYUQnMnb5JT6g9cFdzWGUP44G1KR4aRiE8qahr72H/TSRhs4Zdvc3NFX0MP -3A6DBJm65lVlgi7qS18FOpuFvk250xDuM3oa/fcBrPSVHautS6UZA1Dd/yg4Ugit01zrAMKe/kHC -k93poXGSCAsyKD73JfKF/82Hsu0pg+iHosAA+8Wv6S1lS4jeRI265uMkQ9h4ylzFqe/H5/XxB9Xy -5WUnxem2GHpeLUFzZONPFJFtF0aixaUJpaGg0yB9zQ5vQPdABnlkUuCC2ksKwYhx3ufRH4X1p8TL -NcFloc4u2FsVJJtm6HpFCw8SRJVYFo0EZD/YE1u908ZY+XJxMZGhxhpcFzv8EEeYsisByQPaHI/q -fTje+lpPj/lNnt9EQl0604DUNvAshvkzB1rF7kaHgf/9vZd8hY4yUahBaraGAMoEl5AqqZu61n8u -YP7nT4wUgifoNOYhB3lF/DYDZOMdV6CNjIfHbkia+7HImJL4r+M39GfgPmoxW7Ph17Mk6MeseGg0 -pZQ+cUvaRd8gjyr2rEhniNkXGuHgSuj2bH9pMN+GHG7rX/mOYsPzKePyn6y275OPdp83Y9mdQrtC -qchrGoUxpug9P7NV70mPXH1ay9hNlcgg9gdK/LlH2FP/9DJCzs9mpjHGvoshf+9B6nOyjPznOvsJ -zMVUWskiohXWlIK3AE85MSiRTgIQ5zRVl0GayBVSoOt+R1hw4yLsUQCQcg55KLD3995q43Uoe19C -2G7F6B7FSoLeMjiu7VbKDbrO2BYr0iVcjajZZPJBxMxucygXutB/J1V6jc3IK/pwwnvWtEkn/67Y -IJPj8VoET1RU0hmpGSoKf55qIP4ASj3BYWSqRZE76cOdwuZKRiXdHF5oMtddZYSVHe1QN4VPr8M6 -end5Aplz1WOto3VMA0NakCJAGoPhDPg8PWjQ36oRp9uNa5lgGK1SfmRqZYt6hmL9E2lY+yNA87O7 -c0GYXUj3ogNsbx2gVGAtYOVLzvhCrcj2mDoZlEVcIyPrSOd8W7VD9uIoGKm3WP6hje95Sj8N1VT9 -zc24Qm7igHJV3pkLTePlD9BryxGoxredTRi3u1d3ObwdCtQeX12eaU0/jTgHoJ12Fsr4vTgueaqk -Y62GcYw+CDUC3YlfEGjK3XNBqCq5yV3yIDYECLf9EBTqPBlu4U5R2bi7N0ECldL3kMZmZlrB9XNQ -uzje/skXirYdm2BE4gc1J82q1gu2nN9S17mZdiFVXU8DCHZwS+h6qUWIRUllLN/h5j2bb7oWFLQz -YzsM+jBeu/9i2eLrkw1Gbvw1e6lp9SJPi7aW1Ofwa8i//jzmTtHrIlOoQJaxZUf1Lo1/CU07lQ+8 -1FMjtvRsadX6Ek6RnoyDCTszLjYOqUCqkPnVwmN59k2bbFq789JaaPTZcVYAIVGsXFFsT9Vck+k1 -ldqSEFYASxwqSd22VSubM6B4YAFVpGjKVUctTXzfHfjsmKMoOjCCCSN7Vucpo3t+5ZRFctSDUOOo -/qlETd+PvabcW9yzurnW1dmIrWl1kSBTEUWNkf8q04WozDb+G5A0qa3iQUDmnjheMhfMdBu+SBlh -5j2luVft2DB3oZAowOqvL8j7IFdk13a5S4PGnC1T8Ww3Hhn0eVfl1Zdds8AAwpFXyw/5l4/T6AAg -mfQRNKFjiCLs6AuMLhQ1VwtkUhFM2Dk9t0UxZF4IGGqgxq1t+DksYfQK80SLCVo/nQl0sGtBDz3C -FZ6usrg+z7lQHye9ycu/G0giML4dbT7NV9CCanKUZvXF3bdRAcc7uUDibY+2lC7HbofrgL0gm3BG -D5k30dqwMfP6FY5iUlbZbloo2JEPHiQgFI7SsZsOlpv0f4o8DWN8rTulxYrOP6d1oSxoL35l5a1n -OfhJhGtcSzhFXUzh3MyRAXbBFON8EKQw3NxzxL7uZQJVGdL6C3WbgbjO7pzsZI4BgUscmynuB0gS -uMdGzUJy6/iZym86f8VRPNDews67b5nUEG/ufN8FcPlddkNpq74CzwlxODaiu3z3XptLm0NoB2Up -2zoRtGm4mPAYco+bhKrj2X4oWI/PWZOhhlCnW2Y5he/yA8b6mnsXl+2Q22i8+t5HvZFxeO2iCfts -1ZfCQe8KeKczm3CHpXYRFw96WpCsTS80GVk4zsH1Q1mrvC/QqcVwXXTKAFGjZdsF+bLMysNN9GEn -2M//rUGSA4pDrp293AkK0Ty7mc5nvyU+brG7mJddny+WaySfqEU8v28vwTvNZ4JPdQdPEPO8g+g4 -X/XM7bS+HCSzVFUhL7MSnEzE1ndhnk7uOlFSe39xRSKYAMW26raUxxQir1uRzDOdMJbkljmc6ZI+ -nplCfW1jGtl/BkuaxQxyj6pK3arEyN0SeSt9uzgyV20r+jOcv6nSCZ42Gd6VIC1wkU6xMGLs255g -aj+nkndlHnSYHF/vFb+XuKgQ1T2lNyC02XjWEz2MR/J57woZRI3o4PazhaQzCBx+NSd+4epM1e7K -4B4zVmQksq2XzY08RPpqhV1StgWxWFJNeOYXnF8wQF3OZvCw1MvSl7b7xFC29Io/twHixFdpqq2f -bauZeeSDZjSH2zknDTCJzbt1YoTLqpLJaG/eDMSEAThZbS7xo4NpC3HdXrN8Bt5SqDKHz9RZbSu+ -T0D43yYVjiGMhOfh2C9S2olqJok/Vy2RjvQeQg7cM25QAUys822TrYPzActeMJONePcmUmt1FdKO -hKkJDpjmTTPg86JhZ2FxzoqNcfjDPt7YDyOdRhRQwUTsFqIzkfKBsXHQPfSh+Ex8A5Z346ayNsUO -8VDoKXzGtV0U/aakj0+a8aQcz3cGNe+QE+7pWzEC3KHgewGoWJd418ZbPhNohkOUkZili+JIKG+0 -i5CRXSInziPZS9FIQfmuoQO2hEEA573oeh6+agLYgR35oeYvNyYiqQiAm+mQXUTQ/HQmYIX7HfOU -6DKbE0SuQhMZlg0yTYmU6dH9VTH1Xl2P24hjZoWfQqbYpjtF0swsJpZShlpXZkpSql32pHHVBTZi -C4KfcedzXS1br2vjHwAAAWWVJ+TvYFio/sdRYeyjhjsC6bDlvYHJkc1mxo6rxPHMqjlFtOSEi+FN -auKVCLWHvNTmIdhrfx2CSM16LXXtLx88rdpIPFLGgDKqnXRIHagPZMg7R0N9CeoLpRRwXmgND75J -xXLDLB8oAVLYX8cVFOQ46oPHHNqo1LOq1MITtA1rzU9TgMU+sAMYYBOttPRUmb58QwWwTeg5kyHZ -a4j1pVYm/bapvF8SJGNEWOvYdrhIWLsVMnj9wI9Cj/OI+xesJuea0fgbRDz0PToITtrnGChLjhJI -68zmK4RuGAnzqLVCNgeHgXh9Nny5aBmWrXB0an0HDjE+KSjaSCaaM9S9DjsXcRVXYLRuTaF2pbv3 -BGe0megfRSemEaIXfVGgtbhxb/oEv0c28uncKVkWDlqT1tkczLGQAarE8TlM1IZMrKETmeofpMn1 -8eC/s1GFXRNkJ1ooVIEx2ARAaPLzugkPfkwX/BRpzmt47WQFNGnEncjS0d/CSNH+RM9YL2mX4lHY -IjmcmGVSBBJSvOwRMMrNg36dyxDc9qG9OahCnpUgHVPLB4RI0X5eKW43TZ054gAVb5pqzIhx/QNa -l/MQkreOjrwEPAdvc5jFmZBhyNbPjNJbNAIqGYcCp9FtW50t0RfYJxbAolzoZNZxG3MczlTAkBai -Qp7jGuSF9PKcZkMTxdUMW9bC6ddLi5gxroaC2kqpIjXUI892WbWweRr1pMdeDaztDTh+0RWMZHeS -Bq2kDuUNrJ1h3YA5IctrHbfNY49+mUvZ8KPviYnxBar9SWfD1bkQ7pEpBwxUK3+n54XuyuEk/B83 -DcYV4Oy/4fLWPuNGyESCXn5KI6A+lUoLBcYC0CF87MZ8JVGm5i9MX2EWiUNUsMyUu45d+xM6Y+E1 -Bw+unmAHM3oJtf2huUaIwhcewgmyij+J/xgBG9z5HHx4FKl30pAin23T4mXxvETb5Drl7pc9ey8L -oDOfJtQqRqf00w4F+ZWV3mAep54fO/7T2O35E/Qg70/r17H+T6Gj7oFpdH9+28P+QYuga5f+3JJE -+hvA9slyIL1gz9vzKNLk/NMYSrsvSwp04dj+1TXCRxEqY+e2F8/yzDdTRhJ/eM2be/DgMLSBgADL -wxjV91CqfEGYQsiffncYcZyMk5tq9E7njhF0aYET2EV9hnPhWMF+acPEk3K9yS10Sp5qlljKAEuE -VjIpzqQtblDeWqUP0l1mFfA759UuO6BFVCZ9tz5kkmYs8M4O0XkzcWHtCEkc+XLNM0Kp89/RyKOy -L/YGuzABUwY81kTbDE9ACchQBuudRIo/bgicC3T0QoDjd9JNvRb0t1DPUsyWMhcg1fv6usPAOUVq -z4HRrEhVNkS9kaoyrDNM5VpuhPgJYJWudSRDnktthhHgz6uSB8zptJR8ekvMvtK4qbqlCkJ5DqdY -2EMd4y0/9Wp2nAbq2afVRHcyeFG9/mkOZ29GAdFReNGkOJgMJW6Otn7BDAjVOoxoZF7Xr6SDOIRy -FvnslFNXqTGBO4pWsUgIS+FODauKqQXeKDBJQsZXFaV6GGKsxgs1MSYmfGRzKcHY592i+y5dpYRp -8VFqbHzv1HnraDgtYTz8HDkjqjrrRRmvrgxjDfgDLODHerN8mXYuY9SArARQerBel2DXYIely3z9 -bLrnUef+aJPC5GZJheK4efqwekWu+60Q6LOO6gOrPZ1pPvPMQbWwxWz+2K8mULhiCnMMZ3Izq0RS -XPhg38jvb72vZOl3exhSpT7lRdC3/xuDEezObCDefxzpfnmz6Qs/MXQTHZQeNvDnNAafoCV3IHyH -5Rzoj5DzcoGpj9enFlFeDXEUjbdrUVCrNm3HClU0c6Aa3Mz6vBXWlZavmNucsQxGnEY82X4e/3Np -rrERDrNPwEhz5EfN4W+MI23yM0NMaHB2tfXIcap1Kzf6frDpLUWcReq3o/RIaz6W/yIYHJd1nuXC -Hc2hcm2rpj+V/+jJt3LYap0uf1jjJM7ONaCJH+f809asBaNGwDv/z1ZZxN+ju7y4iv1aHVGD7BFe -GQ/5b1t5PzAXmomeqcZBvx9zqGtnKiLAjAU9LtUR0wNvtkSRu/HijqGpuG+mHYaM29JYhJ+DERa5 -TtHb+bRRFwY3YYUBtnCIA5/0FpFJD1wbtxCgTNlIxmg2Wnp6yBynE6EWtJADxEtUQHtorUWEuqms -s1c9ynjj/jHpNiQ7aUbg8BcQyxVWBgM7Sb2lWs5m5bcAPVpFEdZDAC2PRidKZscvyETSlLnAxgSX -xW/4fd+vkSPAKg6ZjYYni09d5gm1Iwr30565MGveIWVIdZJBrjHV9MKZEn+qEcAOg8XrcJSJHATa -sIBk4CCakk78K5QDGctIUZCCywBElTrTirGzNwZ1EUXIKExDSYBDgp56nRxs2th3yTxDJwoRc+1R -O/ZOeVYxJOXrByznwSHX0NbUwS8HqLpX9YFkHd+H8YeWOWNNeCMAD4ytukdlweuskJAfL2duza/F -t4/X5fUF0+RMFfdBykZ/Q472Ey0YsCt0usEuCe+u9dHSAI87RA/yRIegDHbG6pFjeeH17yXOWe/q -XXL60lURmlVwkL8HbhHeaAfSRil0hPuC3hpv/GN+NF7RviUmXz4ZCj2o/JY3wAYfYcwfprcL4L18 -+mEH/AnDY6cvmT6SfA3YRDA+wVsaa1pqRDlcbNFHqoii5Y1GebwJJtE4os5PT+OJxSZxgAUnab6X -C6iqkTbigqDy0j/KaNtFSVNlPsjxAVCplTUlJS4ObCovbq6zqQPxFN7XGw8Lk6d3/rZnefAURWa6 -XedQ+kC7T6ozjdOv5hUD5FIQpdUhRjL44sEkZiVsSdfP6641lLWvJ+fGy8viN6FihoEfJDw2uJJL -U1OHFrsQqMKt2/KpZ0LkXhW+mXuogvWHUp0YRImdey+MC+IzACItzbCz6WkQ95NDYWjoY/X7aXg1 -ml69ubFaE69qdedSNhuaSFvOSmgIA4Cs1k06K3KbPrk/MrMhIBOMWxB+t94PvyGG//Ta8mNiV5F/ -jMLulXoKgH2XLc2Kc298enF/LF23S0Chc5qCAPTRgoIcVDmus0UQvNvxVb3bIi4o6IUNKenX56pO -ElqahojZW4SVGx711vKw+YzAt6lEIzBnNzqB6jOmgOdyS+SNNj3qfowl79f/MQ1t+nsOqtmPCRtZ -1bqvAJGBJcbu9tzvMQZ+vxamyJgIgZQnNPLz2w4FO+58sYqEv8Fk2/AvJFiPXNuzF77R7XTCdr/2 -dc0RPK3foq84NgVSVOtKU0UZAK/AbRTfNJoKlej4qGVMs3sWkKIC+sYn3yRqbgwPADFepgH8Vz2T -Mju1kW3KJ+Y+nHjfulyl91phb5W38knwv4V+yR0eXchwXXYwUSaEIOinFR5zPEOq8uIiCJ8NmydR -R4eR9AZ2K8I7RZqEMj2a7rL42pHlZ3VLsg/8D5v8fdO9gPRWS1Ms2hLWawstIu+Jg7Sdm5bVF7SU -o4mLyDr1DxE58dP8x76qDVbsCGC/X4CqOLW2QQqsm/rxzjUkXh79uVsKmlCmyauHukcvMpzaMZNh -hoy3nfDdc9YFMTjTtf959395yD6XrXLetr257h92HusZJiqI63lnbDmvuDHikqPEtrfQS8ooU4EU -78+KfcC2ggYOntuUH6llLyDEJ0sLNZ7/BXFlADQi2Tv8+xohAq3v+0XDrwsHgW+PsQmcxt7E1r38 -q80CvBWTr6fiNY1zjFnu9wZcbwPlNE10CNy4h3QBc9akgCLuAGysYvlm5mkwPzv9Ko5r/toTOsgk -5SUuLUrXPLMxW74H7xrOLg1P6lPcROVhfs1Rpg/TYbvWRXNgWZ720AMdS0NjpZn9izzyamajnrSs -Ewi/A+n0DBCzUIgrM1bdaVSpVDe6ZVR7AYEVD4pUkmpEpNqxcj5K2DWCw97hYrvUnm6EGBgatAQE -XzAKC+O1gDSUQSNzou0dSHf6cIDWbmtgr2BJnP447usimzYf0BFn2bwqQ4i3LMLBsoTt1Dxv3Ysh -/hkqXm9veiXDPtZEmKIQ2f8wQj5HHRyyFlrTHrG2cJLrvm4Kug3hnV7NFkBJuyv8aISJ0CBHnAA4 -RkRB/dGyKkwzR9akKEWOIR98/5qWZyAtYESz1b650OGO+JVCLqlOk6cfekWJ/oIG2WIaMCeeDfQo -ilF+mma6KoYD8CnV1E/k8FRySDo6EIwsOL7Oqe6azzVz12umO5yTi3ed1TeiSg8/yC523o+w5tqM -8i/fylinkXuD5+CzwTUJ3s0EI0rDkOMS4Jr3LbVH8SvTdJgLgsKAW8LoZ97XVnhquxtpSJdFpiDb -9TYl8SAxI8rjZ19hO0MV0w8HJgM6EgTcqlZdMyV/k5dykr81U/nzPqm7aS8KMBCFIHKOdAmvRXZo -hs3JJcuAqnxYwBfMaiXJzgteAPoUMPFEu7g0hmE+fwk28SEyrdfFLiu42O+Xcwzz0B2r3lZws9b4 -15jVvgvRkot2iCqW7s6IRpWGoAmWYQGNc37RLFZtamCEFyCibTKpIDAmhliNb9SqBR8qdh93e0jM -wSL0ngN2/bJfD2OS9auD/3QZvyv1HKKSCymNVjTw3RQ2perIDP3DOi8O+Jh76b10dKaSSEm8/N7K -y0nWrEUEpgodO1kbl99NpsJvNwBHUdFvMfmD+aDtKmDCJwUnbQ4KhUhzKmTobwi5xy+ighH3NGJT -4ep9/I7+WxOi2InCQlxamPQ3CBytZ+ou6E2w4XkbyLac3os1tAikwO8sAYsVFb6uUkozyx9NIIis -1btawSB+C9B2eacr4RtbAvlR2w+tYT5ntwTqOeJOocF5YiP1Gjha8qwINsESvu8E+CCRO8LimYdX -f0PI1aB42a9A0DWyeWDstwRmCWju918nMJb7S5VoaMAu/zeO/TflRP6j9g7d205dsmgNrOVNewI8 -9MS3Qb6yYST0GHuNBmreUe5aLKAIHaM9H3mDCmC7tRHiyt4msBgSH5AzsVnRu9BmRJJrWAXsDmW8 -aDMF9XO3BTIj3Ry+XLDLQdDH8jSURbQ7WjptjnA5o+rZLf623TR4l4JDQoQyMtbwnWLuCaFctToa -BpTq9ecGp8NJfsDODgCfF457s8SvXLxkauYhfwMd8uGlr72SLRav7kUiPyqUnn3iEKe/6t3Phy3T -EopJhVsDOIDa7SSvJ36mpCpQhvzwSFjgTSyQT1S4ePtzy9v0/v4pJhBIQ7J2TXPow0jChgTqix2E -mvlbEZDRXhCY5aLJSgG7q04PxfoEI4o+mfCAJqKPtPaMjbfQo05ivPi9M+o593efa3t1F3K8Sgll -i4QwFv+hnAgRtSMH/KJy+sTjHiA6nISemCxJ+mZ5+slefCaSfNHlDpwK76wkvu2e+Ixmb6c7zL2L -0EGpq5lIEo/fi5ALHkw12PT5u12h/MisUxUKTbqWANr+AsRzV4RLLiOuulxIv1OnbzWgb4692ddZ -/ol7APVyRT0cNywBMHDkeogNsPg+/NrqNIMHh48okcxlZoLKZtQTFS2QLh/FR7+WifhhYO/6Wpjt -pDEtsrD3AJ4JvNQhYkYqupnUaXZYQy973i1vYYaYZbS+yo55zl44CDUo1ay3x8tIIO0BciUVs+rC -a0AI0MILTly19sEi2KZ8XWa9hXLn1rNFt6Km0ulSaJXCRnoiW/Xr+ThqH/ypPBE2L/4UcPNm4Wdx -3BoVMPLHLX2Bk7HgRMcWrspqG/kiYB1RqGb6W7HzKJ5MDjTehCmi8TIj/YJUPM0bkQJqw27Xg3WS -Xv7X7yuui5Fmx89WYy3GHZJxPalbyvBZRvUOX3Z3D1AaQn/f3/ia5cGOzH8fZyLaNEihqcAcw/EZ -UsjhUTIeC7cDDw3bQwuc02+LsxYA0NvbghY/KSF7JEkBrLzObyyLg9XQo9N2wEgJVC5s9UVH8VsK -Z9LFsNTEgLwA9JFCs7PT5XoT5jj6bZYN1PpgPZosjWSMFs3xC4BB1Zq3C1YAk4Ud+7OgO7sKhYyi -Bzb9ZY6KaTXaIelfoXhwgK6UB+grfhx8kw1+1q494uF/Wo51Mz88PXaDGYmJlRs0zgU1JuvLyBTE -5dPqVE0ow3q2gb4r7Znu1ZeDMC9AOdU/yMcob5TXlYbj/fEGbvkgIlPzSNW3WGGpG6kuJMtiiWMW -g9Jag8ukpDUbjSHSuYd4CWYsI9FTSK1WGfa0XXOxgWyTvX3m2KCU5Z25b7HfulIocvwo/yR3S6i1 -lxnOIebHodw2bVRFonVqJJgXnWgDZXnlkpdDvkrvk8ZF/Zy9/fsLT3zV2G3n75/v6erGsjigIY50 -PxG37ubBDMIcacWbrMAxRPMKjZtoZ7uHj9Hiho3JK6Acp11+SJpI1nqoVEj/R6VRshGBCf7nmXCA -n07Y7T/Hgf1uhjyMXhgsV7x1WTvy2cnxbq6aR70SnfJGu91pxHCreWByrDRCN7Yodh6MHZpUgfyw -1OX9LNon7/DrCyxgqZrye4h9drhDhjfLKjN94WiTW2MDH9296eUUUKIt/rcDJqoCO7y0Zw3R0JX2 -COvU/wC5fxwhlZMjb3iZKHoFOYMBsaavDx/YsqBxTEOcKXOUsod2OhdmQm0m6IAJQ7LFDU6Iqykh -Zg3VJCybIHvLfrEyr8fG3fYMAB0pM9f1KzfpyLaZy0uc2bs9nwO2cgrBCgUS60cDUwmnuWPWpM7j -rT+stYb42CBGAU68IxQUO+eKmXICHb5AYoayaHUz+pkIKxqzL7N2fStcg3CizWhH4fby1BTYYO3b -pK1ZwmulNHrYpq5WdmExjek1NyuDbxWqYp672F7jmsF7AdHMAJxEiY5qQVqRWW/eR+3HeFjTWjOx -w2kOldfHAKgIQAm2bf3+oXvlPprxhCEfgcdvVRTJVMeqxr6pamrIDbvkGv/xRXkeUBm2udFHkdrC -o5Ok5fysbjyY7kHZZ19KeZi8Pc+xdbAf75+h9kg/8nPbuq2Fg4RA1fcFl1KzVniVDr6dgsq+j5cj -o+b7YabEfVeSqq499nFUTAfxqCBnN4H+7xJShYFIogx6mVLguxIs5an6udGBTLzQMJ6OwRMYvJEM -5/4plOQU8eU/6jZWkVf41MaqcXU2PsEebakEM8z1xW+T+YTguXVkA/T1beGBXHYPhcmfxzLjB0vW -R+ZyhLkviISzr+7hAn3zyhsMWnPRZ3vfdqn/KvcU0m4Fl8vbewzYLCrfI9obzi8XntBS88UR6kGA -yhPWenz1+WrNlg+w0WObflPRRXvtd8QXvgYwYt54nhFgD12CW6dTdohVuNu47B/udFyhNRrbKQNa -eazOtB876eRG2E9PpM+YUz8T8uJUlnL32K/oq7KpDPOBrDIwmAMpDXEONVLWHYVPhrijYfKic1IG -IBUzIruhEOH+rEJzld2TUTCxi5ovF24Qn16MCBX56eBwRLi2fUwTEWr9fjUp82dhzwzOSPOinNIe -/J/+k5h65+xlNRnGiP7q3KSr3jGr6VKj8Jtp0vPZrZJAXQCoE/QAp8AMGy388iN02VSjbyvGdzh+ -mfhyVxhCe/c2MqARBJSgDnYbJqLZcLepzGtisPVNObWR53W79EDJBOVnDnRoShIlG3optCGsfPQj -tbpdrQyOd6slQF3LaiWWHaLtx/8iQnw4nTinOgTVHPfXN0AGb1MERGI3RdHdL5BOCdqGJjQ/JA0l -w3WW9WQTJro68nbr2JwMNbLSvYgIb/K8j7qB2xnvc1OYR/MUNOORBvdT58G+9wF/QbnK/3m35+Y6 -8uPecGCylcfapVIxsxxo3OLUOIlNzHaIFCm3mPhgxMBcYVcyu3hTuyGxyTYYGIo1zCr40D0loAKv -gKldKDq8NuhWtWT7D6cc36gsUJMjTOUEi06Y/6S5f+lLUyzDsH4bihu2zb67GfISsurSrZ2mPj6G -OiXkHzmOF4KrvT3iFheqI4BdwZrdJwjFjUl4eg12/k7rQhQkVIqqFaEjQWJc0/2qP/7BcrR3UJBT -qSUlhNTO4ELl1moRP50KOhJ6kn52omQ4vA5JCH/zUOkitvTptDXm//DFgRAI+LhSeHhBi4oermCb -vIjCMTd3kMmULi5zkPnAq84+a+j/wTui9dPYP2hp531CifcKJGQdBLJd8jIhdQSYW9zCxY/gEarH -CWUQ/80fARogD7DQwxJmpNSw4s2QfRMJVIT3R0o7cnHQNLrx50bQaj3ELXGiUIsI0MXNPrg75wau -wTizfJfLQ92bu/GdRQDsZm/YIVo2rLM1atcumaa2cMyZ57qC43iGJ8+mVeKX+3Iu/QBp1UVnbtRG -4u9OVAEkIvEZ1bYlbj8yFkBUiUEXw0lS8JQntxRuKmEuWT8FpJYv+7JW8jKk4Gcvyt0YRo7/W8a4 -m05S1Sx4JIZqoSVO90o2sBZAbmphWAejtcevftKUrwoIDGhfWdLwGPLaSPEQfh5peUzxMJqbhFQO -OsQkAfNxizgsucFp9kjx8CPg4EU8K7WKA6+9SeqWwPyZIBrIeOqnbvYFVm2lGGUMJFRPHO4GBiF0 -4XokxpznDlhk+ejBYkLgJcnXsMkQLyXLDa1pNXldeLFYO+IyrGwM0+aBRX89vMRJ30q7JZHXLqiT -G/CRWY+8bzZQdy5O/+f9A+ne+U74qfgAzO/IntAToPl/nJ5QLH8oUfG1RmLdWfyMl7RWGFCRph7Q -nbUi25tdWP6j7gi1gw9ZUpL7SqgmXCBKGOJFE0v+/vMJhgYKPQbBTbCqErMCrwnTQmWQuAOX0ZSC -NkRK7WT3Dw4S0QT0bBEfVqpQdQ3bM5a5PKFK2ca8rPj1gwYezzE2Bwwg2bM5YD0mF02Zbu9ly4Og -0jhvOSEIPFtaCSvirS82ZY5LfgvNefKjHQZm6NqvFS1FDy45tnjToHtJxRR0kwwoj10Narjib+PK -bejFPb294vf7Ob2LeEKE+zcSS5c3cKAbSfTKfxd6tvfhJ79PLyHJq6+Pjnf/KYO8Q8iJf8ajt9Fq -5rpOdfb2stLR5WW41FAoqGJYbjvXNoeDi7QOQXnUOq696rROj6FjvfEoALpC3xz6xQ448I2iUKQS -7xJrslA6OzqAqnxnqbmuNIeXGksm0v62cyGgE1VFgZMi0TaB8uJ3IrOX+s9JK8dBAcDllAuJC+j6 -9cHy6yU58h4y/Xgd1Nd6JVxzLrdzeZrWkesu7qyQj/wH2kQMc0xslYdhzjacShvk1jy8/tBN09sw -Pt93E7gX19HnW1DV+3D+KRk3+ZIY7A/3cDM+g+qWrce1z3QBn2xOPwVK7YAPJGgYLdduoZItYiSD -ItPUiSvPQ/+XmakooofEyUReApo/nU47MZxphZFaVzrSZjwiQMqAv/0bgwZ+8zWF+6eDV6VT2eFB -Y8xmhOkke6vMbbcGoI38A+6wjA7sbs6MIM0VyVQM7L1nALuXJtxp1aGLCfn9EUDfhbAc+9QUj6YF -UGzPPRYpNrGVH91OfG187qf5t6mTHLluSwORiRQnaMFSznq/SAeri5ZZVRdi9GRR66S5zKGxtzZL -QN3P+WB5n7HNYG4IZntbT5rKhBzhWoHd6Sn/UHzHIJmecWc0ZC5legGt0Df/RrJ4AA8SRmRrdrXH -DS+l3ckCxbSEuAnj3cgDEKCxPm4/iF46Z/PWa8k0c/cyeTvDFG7SGtf5+C0yDFp6jY4cneaFxYAT -uD27pAonLx6+FxPWXk6b1M5z0xBlIM/ova8IsRT5UAKnf8MgewxER3rolBBZY1mrEWJW+XaNIIbm -5xFk+a3YCULTqjhrTNaleEQz2zIHyX7eXmovvPbx+kHaw9NJH7/xTxqgFMeSfv5F7DzqioYzG4VU -OiNV44EyCV0AwqNTCnLdqApLiglpzFw6NJTSKa5/AoGQseBHGY/ADWOxFKk50H24tcBW9oc8SE1R -gL5Hsk+9yGiN0733mXBmIyNJgb18UTYGHcl0Lqoc7ptWBWEkBUlhaSzmewmcn6jzEesNQSm5HeCT -ivbYuUbv6xOHKC7xqpEjDWBSTx+wDS3bp5cbrL0HuD5Q7Ckwnyck4wOKHFCGmWp4tyf1LzcSakIK -j3M7WR09KB9ielRQgtWyDY4QnGiUtqfpC2yOIIf1zf4XfU38L5RO4bEqtooepXtFD/oi5prEhoLt -M1VzApzlsWSjYUdLcCGnNGNm0vwiALpvdJZgiF/sjegg50fKBJSY4YgeyfwcfQXjKbaUrvzeghqF -Pe/DMlCNk0izsTFOV6X1x2ckh0GtI8o32hvcm0MAWK4nXP0HGlWdbAEiPSUChwZMKltCrcRMpYcZ -FPQ05cO8TYoJGXV6PTWAxP9IZi76UAR4kVOP3S7OQhJXE0zoUoH+SslPKi1ehNKIplccsOXFUjUL -hGamT/KYAlHgzNPWyoY+IN/iwBKlDsYzUCw38xTTIsGE86vDnyMYZ+YhvuER9aCb2rIhg3uJb+Jg -DaQEJIaFgtyGKYTpF7wAXbF4s97gEzHDV1aDg67aFoncn8dYQCESbImqKBSOu0DBZlcLRLkIRiau -plocL82qmV17sYDPYczlzk6ghCKtDVllmbeLNwTdvIMOxESaANKkTe1vpUR5jDPv0cl9I8Ne9k+v -LGrJGIuuTv0OksLGLfJ0AEg7wjglP51n7txedJOIn0M2NZS1emDcuRQuGQifmVmpn7B/cisxHSRE -DR/0hwWZQciDOiX5mnyoYPpGjD8QcThwBqDp8rnzWC8LloHFk5XOirNybYb7kpLhcz5QkX8UPwhY -vx6+OLxltUltE3GIGIFXuKpndD9GR+e3tcb+csSovl4589RquO4WsUfU1CG87jehUrE3F9Hyel2l -uQ4yF5+7dbVKHTGiYUWJesCfjDUH0wdo6+223Q4Xot+nQSXTIKgvC/kPPS81Mfl8UOuThVuuZZEo -4N0aQhdYnV/2uYlZW+8HDyaKyyPHwxcnK4DKKIfq8o57FS84DfKVMqYnGN2SFNp4fUhTAAaNp2HI -wzSY3O00GGoILp5rkcnYyTClMzzH+3v5NBJlJssTbMnJdkNJ9QWqV1ow86ClCi5m62WX0m/w5HXq -C+QPe6h+XwFBhJJyuSXmzoxV0gjLIFh0FDZwc4yju6pOq12pGWY0psHLmVnfLhPv6VYertrJdLVw -tJAK7OkGabm7mk/JRZBuHf81e2eXQ9z3MTCNoxadMDh/ONlhq/0vflVqGdfgesXRkCM4btxRkuOF -6YYaWoqHeyNPr3FrLHIaxREIXTmpKb3N6V50hGUWLTlqglgJwbL2fnz8Kt684mYy8tOzHKvNInH5 -CFY2SBxmuo2sdfupPSsV6ttxRBq9i7TLlJJMDVBlqTf/xLmH+XFZMgkrVoeP7yfi47UFUTlrAVFA -3C3fPnR+i3BazA9g6pKBbbQAqArt3wG5QmzoaeTZztl/EPcX4yMxP/0zVfxbWguL1L5vC9Ph20Bp -TibtgIBCfeoTxjmjTzlUAYAsSqWhztxWYiknmvRKD7boRBTcyF5Yl2YoM77POmbK2Cx6lo4KjrYj -eTfKNw0Taez0Z+Y8IWkhQ181dwgkMeHs5aW1x4LEVNSIKfjScOJ+ckdN8etyflKL4kcTEVfqfSDK -mvDchJhLp2bpUFFnBSkS1DgY/YNJDyF8tsD2AW6j23WIxOzkxgJp5dq7HkyoieB09yNTJ/38y1mh -oubyGiob2pgdCW5Ma2usImpViKpA9D7cF+928le8sWeZJ990navCPSS+jDa6b3IN9+fQyJYJxZs4 -o/bf0BtQPkNS/5x7dkSPXsdEoe+UY90kgQHC57hdVXwwwA8NB4Kh61neF2vO5Q3wmmiIPdmsb1Au -fG1AYxNtqshzXa33yYKuKxp4GaMwPD8V/qxBcdJVMXG0B0E6hog+0pSfX+pXIdSJ7jvVxhEmVju/ -UaoRO7dVRpYDXqpA9lYB+5GvZAfakZ6/YC0t8ljjtngHFpXHkiScp3/l1L71pe+7LsuBYIvL49is -+Int9/cMKdLBATV0THcmtBBXvqCsGs8xd4/6Bb+hbhh7MqnJibZGMne0PvG8SzU9l+WKvV/1kcDB -guvRAR6w4/jkQ4AKX7bOA11g9T7MwpDvcAXX0pNt7ZN0qSfufBHtuAwNQryrmNqXheeGDAbuSkWV -sh3GJOKEdkALeFz4CIkmwE55YXaLl33vWEYfa2c8EmTiGuP+d1SxbZMGd6aMy3pg+EfLiG+kHMCR -rdEhyqDBxLtAzPxaeu0cWAlwZk/jMitx2FitpMX4PvAkAzo/sQKJQnMBmLfZkFbF3+4rci2/QG4O -Yh316lq8ng3Dkw4qHz5F2Mx9rKbg/RbVudxGvQ980AKrWifH1NxZK12aBhzhquSc5LcqtdAyrUiO -uPo1LM9+PpfJIWlOEfqHa1ZoMetG7xyi7nN3n3micEA9iCJyAO9dUSf0uaObugtIvr9ZRzm2d3sD -yY5qujkDjOZ54A0uRPCqsPRSI8WnOa5VQFhrIoJcmypU76vU8yGjAOrjCV50hS8zazq6wr6C6Eb8 -fIc5yYU5kzuSJzY+Fykt1ZtxaERcFWQ477YGkj9/RVF5j14xRVSY71a+/RrgMbqT/Vw5R9NURU+X -gO6FP5sdCTqf+zRSmou3vM7uv70wYyMecOCCwidpw6KYV8x2Chx2QktIY7OGKMrsDgJCggnIBRNe -oKep634ZuRhPcZoOatFvOH+mCLfqfLs/IcH0MEtEtP9NJIhiYkEvcdOGRPzOtTjBuytdV42tBBCv -zElnecUJgD2wagEbtq3gQVFZFR6kk+FpW1hjoLcBjNVaYYWsxcfLuQDMvb2olXORu6NEFRNNel0E -CLlWuj6oJAFANDKlItcfZQl3Da1qP2W9lIKUeS3iCKFfSi1yYdtZAdLt+stFhkUzfFCG4K48secF -ebBmD7bKYoT8i9zOps1V7ryAojhZgLJKUq8yCoRReGc8ZzA1lDVXm92JpXqd7peL0x997f7APWIQ -006/EZcaWCn6dribRE/nDSgJ4e65LJX8yU+PYHHf8JvOzBu/JxlCVYMykFyHRcaECBnPoLpWem42 -Qu27ynr93Kfu3aeCjcvY2r+UJtTCZ4X93Ek4b8di3Z4IsD2Cc7vPAdmmSH1fvg5nYJSSzOZ3braJ -wyWu+k+WjjiTOlpBCYzkcNfPdtFCzRbE9UcIS7qPVoMgWcuG9N7dLQOnCsOP3ovbKAVhPaNEvDrS -ACdrygUNz+GfYEsaVzF+Zj1Lme4XgUiNIQYREwhbDhh3lQtydZzghxnYSiL/S9Hg0o5jksl/uyA+ -HWqu3LJZdiqryoOxqx/2gYg55mgsJB18NCRipf6eed91Az7D0lEHGQLSHKaY+BWuXGk1vAh2EPo7 -V2bn9rNRZjsvPJLy0xbn1AUAo+Vp6Jek//WI6SkjSlZwh6/RY8/x8owl2lOTvO3/tgUalZE1Dm6K -GSYj41StzxELDgbJpjgT4uAm9wcxCCW0lwGoI8HpR7IrOFur6uIhKs2k6kLGxIHfLFIBgv3Qy+X/ -dE46YycqzT8vf66mk0UtzHDHPoJ3SsnRPREb+LWiB9EzzQJ81ZUR3pQAtxGaU9sJDHbsxY6RW34v -omeWydNDp0/EIeanhVIZusYhLOnT8mBeVp3L11qrJYqCmNVAyRsnMCAYsSDmUNzCvewi5rCHICy8 -Ozm+DcILkX6H3M14NrJJAxjGejHIrpeFCIGu+RGmb7tChxwqnsU3yFcRGDLN13pNxATiO81c9pkV -M6vXmAE53RhkbMq2A6eNzbEzYLTQCXtSM8AC42emzgcbt0wA6Jynv7TiuBOOlcuThEZIqFfBO+eO -esIYGc9gGcBN8ZmnCn+NKinRSFpRBCRl7pRAjCfB2I3HjI+O4AOLmjF/+0yTBcZcRIoiCgI18ZWO -qz1ISaT/IANHEHM07ZtXAEbU2x5rAD4uI8hPY/u1tSkdVbGvZ+D5utpWaVcutlbIQ3HkfU3qgMoL -ef6yAO0s16/k+j/ip+LWv2gi2Btp2Kd5+E+qCpD8Pd9EJ6kSSUgS/u3U/Lb+cv6A3JhJSeQjTqOr -zEqmOZsnWcpDgu5IGjbIcImv+lHeHOm9wwYxSiMYhjW9R3P9VeKjHMRSJd2v0QEG3/4I9baenLf/ -ashzs9vtizPdWx2fTKC3Wze/JcECqSkc75tvQsE7tMbMK5hvRyXbvdDa4jRiHAEQPornDzGgxlLZ -K6MMgw3mmTxAitzevnQRy7h/bbhFj8wK0NOqZsv0BENg7vVp59N6zcU7Z1+gRmMxSNhOsMZ4V+BW -YrnpnWQFxh9lYXNtt93rb3tahlbd5xfEXBmaTPpHp5RFEwWkkWPmw8HX4lWKdV27DBXPO7pTxZu0 -qXXxb0swJrzDDH4OcNjfnOxhtqw+i5Uh9/dHlbosa0jhJI1/Kx9BflxtgZsaLm7ARN3E9jrwusSU -tvBR14IyHr9P7oICb4YOS2ivv7x2uszLj0cKzOMx774syATDhdbJ8FpcF/slsj54j+FtyzstKav6 -1VM3mCEFoXHnR7orJqYJrODy7GJs9KMiwXCgPr/Ig2fyuSYAK25RDZCkmLwkSqCmhy8B+ricVlVd -S0RBGY3GLu7soAEHFoEAW15hS4ESjGFXAu573Q6oMMjYNqIa3zCvW6zZtknwm5SPLBhiuX1m/0MS -j8a2gyGIbvzpxUmZS5wSrRUQ8RtQlOBYQ6b3YnQI4xGg6FHxt+VQDhpbUjzFDRDj5YjGGqGDsiLx -hUIFK18r52cBGYo+HpnwdY4ql1aOmjMg82CEdfdrBuZA0xqoAm6V1aU4MHPS9oUn1MiYzbT4tuHl -bfINZNGcmchX5AbJ9CUn0e0ga32Fuj/9261aBkTkG4jUmFlVU5ltbhaLqEvsYLaGRUrVAwwXjBKZ -f5rKwjwU1hI/fRsZNnUd0hmlmDK9a3gfjBm5NdvqWDb3sBOb+KbedeFNQjZ6hc6NbMpCZpmd4aEw -KwN1A64CeMkACyM5TJ7fag2cqWus7tUumE6XtpQe0SsJf0uRz2nuvrIFeR2pasQJtKkkEZ2R85rH -2lNJfG3j1KeRUdKf7a1ZebxOkpFql56yVdgPMpo2M/62pg/n+TxZ1hcNe68npYJ1pg+adiwMOB16 -AnJ2sqkrBJEdlElmMFOfn0pdwkiUx+KZlSZHOIUpWBCHPTYNplRgw5OJrRHQeVOAqFMxxFFtsWaY -HzNa55qGYSaRb9oA8Y7mad38nE7WKhUi/5F1iDeoVK0gC+9VdPIWhvkO0WrFlRZiMmJ2E9lKLS3g -3/WuSMvRKpKat49O7taCdnrYAaTpKu2wDrRs2whuuzoXrSOERna4ykxIcxNZneJo/vT6D++O4cQk -AZokHCIXtuLZ0CRHK3qeufMY4Q3gYJFERnmkBSpf9dNuvYXnwwo+FoCi3dva1/RcqUXYS1UvK5vu -pFxWeSW/KLN5hbaYr8gc1BAslSHuoqbPzIjpLrBN4EUZi+qppLYCdX3UgvBF7mLnL3Kl6MUOCqWN -HAEe3Lk0Xo/LT3Hq7aleq+W3Dp/tpJ7iVhSx76pQRzfawC0Mqc8sV0rYJuSLN3LUNlLppFcHZck0 -lCkN2P/ZBJTy7NQoVgBDc9c/w79lQycCYR0PeV+y+B9UCjKlzd/ZzMT94gcAMoBrWBgFmVBc8DFY -DiEVYW1ANoydRjMKgF39wVfRNjQ3TjTxJSLmH8ozN699JE6gvTum9LCTK4Uo9k/m399LsvQ+u4pj -lgMFKxIiFRZMz96K2N+u2n4vqTGOxuojBOATFFA5Nhto3hVZnPEsgXotubkJLlPdlIP0pzp5DM9C -M7+x3vrkw4wTvCaabexMI1XsXYyVaSjiazeObV/LM3b8tWN4mmA04IGIkr7/HNr01DHrFNKKFPtl -2L3onfxXydJWd3zgcqDs1myXadehXW/PyzcZkuCYoa8DGD6FFuWcqQ1AYCu93hH8w8dvBpSCpzPD -TXFg/gRyHqdIedsgOouRN7roQwVtm9AaO26gEHpEa3b1zUchR9ANX3fAz9w8pgKC5iCxD81Qg+1Q -xyZhVme4S+KGlw0oCZ6DMQVQygN03GjWpysNcL6Rax/Nav75tiKxh5kpmhSIOiUvBKaZwzgixN+Y -uKA9Uwz7a0UcIxGVVQSRA4pjVnzgb6YiM87m4yZsx8koZuVs++Oc4ooDoUc1slj9dJzzSv1G08Kw -bMgv6PtRHybq98Xobu4InvlDxWjQhzIcaTFTkIMQKilPE9TDiVwJEo679snB9lF/f79mFOl8iOmR -QgtWdSSPJM7SrO4szxtuJQGm89HhQl9nOJ16n31kcKXmNDxqpgwAu7K4XNLtNUsH1wm9iX1tVgIM -5y6S6n7lC1HtJkh7WB5sbXeWNf+gSBukYO0TX9xHsruW5CtS0uaMRyUFrzixMsh9ZKyELO7Ut0zs -HG6rx6sNg8hBC6hETO39uYnIOTExEGBz3Z4Rq28AXXNfk9olNCozix03PvIg8pWFPEfsJ3hi8Tdz -JMl/6UIDd8+4pC3tQO/bNxhcEcJP69JyreEvghfau84Om5CIKgT0WIaUXjCNz/spLQLkKRvB6fvS -bLE1mFsJVWpHwyKLoKNE/YDOos8DxZHyn5D7hzSdiVRVlpfoiAvht2lh10pjU33nISUuM7HDNQK2 -GFV5BUWuiamRAs1042+G5mtMnw9EDlv5C1FqfFDaeDfjN73Of8IC2t6zZvoIE6OZCVmnhISJLhEy -5hnM8ST0GkvI6EGIxeG0m+dslmtdUMw1UGn9wA5P1ba3nTe6/1F2JoY99w6QhIVdLY0gb6pp5TBz -vkA73yvQCJ+pgVL+V0fC0D+l1rpjEE3Z5TFgyQjhjDpFEM9FzhGRRcsrThZm8VFdLnrchw+Db8AA -jBWyW8my+uFARj4jiHZHKfXJbPt8vunxsLpbKQGF9w4LzF2oi86lcJe6nwSGBxx4BdOxGAsC7AHl -peKbGfQC4Kp8gn/5o72eGENsQ7T7bswV29GSmN2cd8RAn2g+NX3V3FV4MvcunwpM2NTv7UNGCGfH -pqtNzHYyrnDCzC5zORZ7EAmdMe7i8JlViGw7H9iaJsmp5xmXlBbwRFHbg+JrhmzkqYMpFR6V2yRB -tsyaCxsAPYv2RAsuJapbB1bZaOBOMsPDZmDCLN9vNgDBmlWg40uY4kJLXSXdip1VDxG1bX0uCTi+ -UjjffH210ARIxwQx4YPJukM4fuwSKi+us5cW4c/jEbr/Td16HYnmO0YYs3QO+cNMxlQn1e9O/5eo -zqSkgcyIHvFqXk99JIt84aXQMVV4ldYjWqRfyiVcPVuwwYMh1y3zL2qiqXKCgs+zT6JAW5OYaz1w -nDHWsqRAHvJZccz6/eBazvLX1vy43ndEJRdEcOg41WhZ21nXiRikO74rae52P+r3nZcbLQxfSlKM -rkO8+ykDjoAPvQ6dIETQ5jcjLt9toaKTCR20SyYVH/3ROWIhpaXv2GgEhACS/FhubpdxWjHDnAIj -xbvDJskek8p5xJkNsqTGqVnxZrAChLXU5pyddkmvGz5Ibe+zgLV6DB7gi/5OoSDjgyBbLtxlQN/b -k6hR7TM5RlvGzeLzO34/tquEFUHBhwJ8NYGBWRaBkKo8KSaAlRdidyt45WhkP+o1QBcL1d5C3lSp -PVpvzvkgo1mJhUAOINcQZJmCHzApMVEufrKLPZMAvvYfDxshP54SCIO9yV33CXHXQmpP3Cy12scr -P7L7drs8Pyx8hFl1vFl8sTRAxJ6Zm8HyU8Tfq2dMURR9Q+sEaI866BQGbyp60y7UponHH8kCsaHy -sIPzRJCZgkk1dhcLPye1JMbGPmTwxGDc/JEoBptT7BAr0PA2ogPmrcy8GomubOciEiyAK7mgbver -G0OSg8id8UH6BDk6D3AvOjIoHUE7iyUC1u6OKjJ7zH367SMgeQyYAnP0HCMpx3pqkBZkzFd+U00j -G81XQVOKQ8tzmQ05iZ59ejBJ/AaHORrVhH/wS1DN78XTEqZax36c0Az4z5iLmpdTWjyC+GNwJC8w -WoKCZDk9l9Yh6qDcR6AE7tFXuHbjvEkCfb8Luvuw0+eygn3IhKsaX6TI40rWXN0ssNKSd/VWJ1l7 -H3QbGZXCbSsbOZJX4kjQ7236fA63yiY3AO4Dtxt7fCfwSp3ao1WFyPauhSI2RKqjaIUVk5nSHfSR -02zOJ95d/Kv7CWP95aZSrbInCL4Ou0JrOzrMSPMW+3KRD6Yu6Kec18vCpEJ4L68xqFcK04rU83fl -s6HwW0uCtsNqUCednEG1lWtcTHlMCXQjNOhQz4mL0zRdR9JTaEPH7hBJ24kD0L48MMZPVVXNgOjY -sZ4Xo2RqAze8FFs8chVr7zFBtKkOM6g+IzkJl9RFbSa7snY8Pe5h0hOqzZyQBKZNtH0iRH3AOVUX -S1mvOkdDzjKhpwDl5i1oov0OLCx8i4dHPfWbi3kPMx36cV9s4zhrIgMyXDMZ6YBJv2THZ25vJO0/ -a2ypeclatxl8LD2gcRi6LixZqS9gTVlXB5OBWGVbMtdvx2HcEEHrxvWUllPpuZMz95tPFKyTV+n0 -n5VGcEfN99xiXSNhLCNoo9g8z9YEI1wGYuWWuZqNTtx9tHAmK2qMIk2otot6LHPxxQYaZ37M/pmr -1vO7sXoPIVL909j7j71fYbKpqVDKMr27Z/60eaeWmHw4wDKUiN9vAQx9D6AXC3KXg8M3RHy+b2Jz -nc62EnnoKsJTB+g3S7Mqtd4XUHoHuWDTx9ntUKiO3o93XHPlhnT14ExWTdrNVF+Nc6quaIMU+1Vw -YPMJ/Jm7kzhJDLVDOMit8HGYUj1qGwFlqlX2T9SBHkCfdfD3kyWoHjLdbduVGdbI35w8bue7DuFE -D4BGGKp3gExVmgZDa809XIl+XOnNlTnm8fDQtRXspfTs/JMG5wd7BNvwYzsjXXbNzHM6dl4BCPCc -FrrpsmwZCVYDiu06r4dLD0jXAjQ7xr69smry+9V8DhBzfN7Squ17kocQ9SbFHeaU70w7j9KuCz3i -xEm7Z7+5UxYOCRIUP9d+kE8llEOJaakC8+efUpwX48cxPRPojb8RfJzBM1oyTPX0Pxuw/k7TDeQk -Qbi0jGBMvxTS8OvVOidq/IOxDPmJmKVwh5DdlzWAq7B/jEicZm5U7V+3DSc8RM3zxnqCg6ixhmyw -ADdUrtXha573zHY5T95BZPbuBH9n4pmNGVcXV4b5rETwY+6Im57GpC5fA39uzb2eziE5/9cVld6p -WpeqrxlneWVEk9ezNRzhnKZLaf2nZIyWhRu+R3g/Gjo9NjTXFJ8NiVMYDaktNpvremaxFtmo2Yvx -Clh5RCdP8tN6bHGoDvZQEmojCYmUGp367LnhnYDoPnUAIwuP00pH03/pIQrS6Ex/C2Jo0nho0Fgh -BR5nGJ2129w/izCyK7clWVI8xZL3+zvZbKSLjSoBz1rIG4xAIux7EiIn4ImwMJQRQcgWA6QYhUx4 -byw7nIGuytX+MlYyPGVgW4alkqBZvMA1DjQpe8j0sVJfvjULbHGleKs61CRZmgKe/Tvvh1q7dWny -qPJ0FQB80mZ4S+XK+nMA0JzP1WruQJwvL00aXipuH9na/QA2ceKpjvDNKLJZSIepUsFDzqLpxN9Y -RFP+/WIF3/YV6RVt1VrcnrO6b6REA1kQimyd2dKbvy/5uTRBH12zasB/oDgW/qOerkWm7OCbkuQR -FMT+akE0RaBZkIqURfvWdR4gdMvoEZajyo9BFoCA5GqkWRmnwsX27MX6LV22LTk8KyrUivMBYEuE -oARtm0Qg0YmpZRqGcX+QbzZqUUyseBIFw3vv45T54ea4VkealQvnxH1iSyBDbJEijOhdMrZ7Jo8b -uT+nsrOOpddzvoBnRA9EJBWdfNYqQb39YBIElOd2UxlItEnNC4enin7/2TF8muOu8tYSebGBJ3Cb -U1HpA0KfMpcMEykQVmliooRyh3zZHnA0VjN9i7tKdj/FshzQco5Yoh5UI2zRT4Hi7Xpj4dTDszo1 -r7CTtIQMsUImwQdZOjzpqMikNz9KpFMFGmkLOwaHph+/dEJyByqkcybJ/NrVB4+E4RxvCONoWLjE -3w/IREdXwa9PlK6UAe6L8xSSeMws0fmouE7xKxd3wgJ3ON70QxMY33xNTg48lc+qj6cCXJ3weQgK -DumEYieBxDIbzDPumSgaLJev2xyuPLwy9O4ci4eRJo6HY9mZxhyWVHIE4uCLpBEdPejqkdVzXukR -unvEYHUXkl3ZsumEsVUqqPjxsP2zIuYUEhtAMRYf6KLsv62yKqjLqKUz/bHNaDEi5x2Z0cCc+c09 -h5i1wHv/svP92fkr6RLJL+yY4n5W1cCp7FDC04/Z/54WjtdreixPu1+uPWqdtOKwxwXoDQjLvMUZ -2BoDYBGbWSOsqCQyM805Pc08AUxx81ILMUlZ+8ZO5VDXkw5LT3nlJcdBJ4lBYXURfR3I2aqNu8ys -PIQTRi1kVP2scQHZt7IgBA9bthcU0SavPZCk1snqaKIkp9lg/CjPhFezLZYVFhHMQ5yyuDa/DfX9 -0yv6EYxUZFpTMpcWg3/UOfkujyVEoVmvQtGBr02rlrW8rO3j9AH8qHqnPIKJiZascRdylSS2iryJ -4AAUTTi3ohI1J4NsQ0mZN6/mAxO5pkBso3/uVadHNT+NFLb0yvMSQSHatfggr2PrRfDYt99S22H1 -/BIEu6u2T8eT3GdsnYP8fV2wElKMvzXYLKq+DxtApc84QvycDKQKb+iZQQJ9bvNbX0K6IpPvETPM -vd32SRIKy+o3tcxqdcunAdADy48ysIJxU4axzhs5Lvf4xZjw2xuzWD8XDq7DtFX4LhHnlN992gCv -Vr7hWEDFEnaQkzeLoEtwDuEe1AFhk8Mikxhx3WdCQ5V4aRSr7QbymzjcebkCR6uBxL3WkC/69TBZ -8f5nJY61dLa7c0fhkqamGw/GoSw8YWpKK1Z3JxaoOPtrdPUtp+kN+qzq8dCzooYb6hXL4iJvGrS6 -wqc/RokcVhGTN2BflbW4G0JMg0MkJxaB9TH2LeCHkS4HQ///p4tRS0KybciplMHM6lcNVLuqWTn5 -ZkgCfU9G7/eSpke8HM5fQCtEQGo+tKb8PBw1NlHUJ2KW3jnwBIR2aqg0QJJE7wCAENTQJzrgDk+x -ZuS8S3izLsr5kncY8l26wuIcDl9e7U/eiXARQYZXauRRvW+LZ+sALxI9LIp3/VIafGqK5/d68sa/ -aewoQRiVGceP+M2TPgx0JmNSF6j6cNZxHQ38hFdBtVm//42aK/jr8SQdTI7sVay9IBJUfkPbD3QH -aGJ+7Pr8/k79k555TTh9Dh7GOu0vgfuNTPMxcdu6k9mgzrDBXIMzx6IquUMk7EhOdm1hQCWufPiG -Er20bn5dWE9qJog4rPxIsqOM8ww2zZqEsYU2rY4bx4NeFavjr2gSvD98IVDTQDhJirrhZ6kjfKS0 -YJwytfxCQ+sYHubC3EJM78SJ1xhIPsuQa85b4qbGCYiI5o0w3jT9lNVNXUQMzAwD3Azd5XDLUaJt -OK7MeUBpB1a2B5hnDm4sFhR1IXB3Z/kg/kmFm9iP6N6VKzbs5gUdRFaBGB/9VtEpgQSsLzhPWtZI -2Q6W7m33PSyut4GP9sWlqHoEq2m4qWiMUFo8hLagFyfljKv2JvmyNstJ61Vjsb5e1eyOUMmKhdCd -nr08mbTehh81NFgLLf/e3IJJk63UNiNO5mntP69JX7FLi049RcBH5nB3wToYU3nHyaADlgnbupJU -kUQTqBU+8hFux2rrBRcubeLAlaIlMclDqTQur7evCr+iD0GxCo9EFm/jDS8xC6GAVVROGlzXLZXW -vclBXuAg8YF+kv1yFcbdCLOG+HX3dvg9vnF5AMAp+/1PM8Ai8eW8Bt6VgYXPLBgEEqH7cEJEZkmt -91LmxbVIMARgqhuwj4ErL8LNJZ9QAxK8KdsxrqxEh+RTxHMkladUYrl1ojMFO8EARZWMk8xG6Re2 -SMbgCvNb+/4Cxo12oLJiytsmAa+d5pxcvaqKfaZWS2NBY3dbRF17wxCrTDSSKICaIUPmba2MMuTm -X5VwfVOChpPyfK8Uj6aQRDBOEdIFrd+9msLjfVrEBS9xj7cdeQyMoZQVYWOPL8+e9eWUNzCcQF+6 -R1Z97eSqAlmJY9d4Addq9FAUS5kN5eiZNnwrI4MccexaEuOe2gq1jUGYRpRfYYyFauYlnET7F2Q2 -WUxluGu+8zP8mOjEeXxg3GWiGX9jE0gMIYtRLzpnml10vLWUdlit3HRm9RtIglo//0JIEq23YiyP -MZ/u4RejoagCqgsBM9ktzEOhKdJe39ELC2LZF522stmtS3GFFRlDXaD/lgmYYxGcsSTeRhGS6Q6L -8Y6scJJlWil2MLQX1QaiTu5R7CyIQz77871deg1daD3f1cuRSydHs/YDawwCzGVW8m83Eu2kT9wL -DcuVvPVWpFVjmUAVVJZhwvpYk2tmGJ2vGJIAHYcuGojVjHs26tREwJBXAVhdr28xdASQ+SISdZ7O -UhUZCjys7Cnh3NiiFFY5iJ2OKltk7XuOMiPXZjBXtEIyBb+aP6ZCdMetn4QQowvcrfzFgOSyWk/+ -x8CaHDH1Jbvj6Ib4vYIaogZTYssDI6iTLpm7fnFFO6YB98gzwv+S5XerhK/XMtP67zBaS5UcNlk0 -/D/o6JSQMR1QXR4s7911ata0M2ohT1iOqa9mKfIDCzxhFKzEcfLPz8nns5S+axR7jHzI1yCApc1b -tDNMUL0jvcLm7+THQKi/Gdg5Ii8WvbhgImmqSd1Riwv/2WRmTA8Mitj8kluO4sITylwtZjMwj0jQ -QXQYImMi+KHQauHu/WSC8f7p4jjVgelJf4Z4B6v82Q2TB1/T3C3f46z7vPLoLW+EipTKhyYMAw0N -MuMFtIGbyDV42rYDU9HcLjRgapXlcLh9M7k4ZeZAhI8a46/MxjhSBrMwBXheJ56uPNJODO5mYC0p -JFpdIdb/B0Hz5qCJxm1V1Vk8602uciCya7KiWx4fnx8zrmEd8su7mkCxya9CqQbnibRSoiq3x5+K -TAspqrXxY5xXI0nG4zK01D5BtRMHFGEwfIIZD8oi4HuO2Y+XQ1/N0wSrSkvpLVSfqbvhPSZn333b -C4HO3mv59Ob6No0qgvAByDL8yiK6cOmIDTd9n7Zmz3oacz5ucykyCzM0WAbmnH9HyIrhnOZyECOV -KXpi/Jkv9z8muBe/QysNNsVcF/yYOPPyCWHPaFpRjcBwOQTTsi+81/9XF9TE/NqvNxBZkMN01spq -Z853UK4RI/z6orRYfPBwtalUbL5f7wle9eT+M7m7a1OsIkdPzhlmkP4WooP+qm5yR51irG9unGJc -OxKAsJgCSS/gFleN0Yyq/4yUMXNkr9fI9Q28AUvqcKEIgIqQgyA1W5nIpvmruuzLKuVkPF8FYC1L -Wdq5xxh7eZCtOoGmKZBdHYSxNfIvYykjppGgvfP3drcN7ECdJz95+dkrDINzhibgE6sQJURWkRLL -FFGqPrUx1wR3eMVRAPeeqhGgZ6feTxIsQENQPtv+fRnmnEbBDbk49JpfPRJvW8OZtfWDv0hYjeeu -I1VBuWYJ2c0+1m5zu5kiOMo9+ZIeN4I6bGLCvQoY7YSOHWMAUcb+ubOrUwAdT8prA3vTADO0BAop -K9tJTcXltfVUkhke6a8bz6a80i3eGbCgtBerW8cn40bcJ0qAMCm7LznwmCuTdK338EGTxTTXDf8r -G7PSJSI+/1WZHdUBeN3U3CBRoym17g0MLQrHRf94iirFxFSQPLsoD3+e5qLSnFFNgrc9okpER/QK -De9ABiOYihSIq6K3Ru7QfKHvc+fxCQIGPLhp1bPm5x4jbjlsbPv/gJjUh63fht1si6w9/ncgf6eR -3bHWzqK7HZt8Gkajo7tx87rl2s+g0U1zUyVKp5POhcZm5UAVGbauZtC3REbar965zrdz51va+Z4R -TcKRQcbn/bm4Grom8bjm42d6y3aAVvYs+QHa1mwLJK8s4hddCykA1WbLXtL5T4o8K6dMYfSHv5cv -Gn9mUac/J2G2XzwTiGarUbkCykTosDPQSoaRl672CFRnHZe+sEDQNfp6RG3iQtP6G5HEwtT2cyu0 -AxAOdIFDVlmULZrVxk0FgrbSiVzEm1xK26Pe4SbGpPx9myxzdXxu0yNrFZqFz5teW5sTgJG6RyWM -eKAem7pUKEFQOfZ0ujLHWu8D/75p7l2kRsJwZdoP4wlINeYL0r7Abb3e3of4wA6feG7NO1/JhWp5 -xTU9V5sd5XRR3hb6dRUQ4qrhmPwXAyWEW1EF44Upx1KDEEjLE6NVJBEV72U/LBHL/Wk8/2QAIKZl -KgT7V9blDXX0d/p68e5UEgH+FmAM5p6GqwHii1NQkJj9FCNddOw0pKasO/U9Si3hoIgTo1XuPooA -/B1jo41uEZgNNyPrWxWUMKGcRmyyWOwf6BGlJ6fQmvC6lDJQ0zvPjFWxTKb/YsGlYmdz068+4oKt -P13RZwaX08XlHxguZpnLS/ig0dKHLeD6dkTs0hvAig4tzdlnXK/zZJRLS12AxMRLPrjV6nCS9lWs -5LqEPcnWgywrGCIpM4V/eaavP9tN40JrWgII/7rwhNlPQrusUx765CRVk6e2elCKz/DFAZRwvFVb -qYQUtuPswS6qu8swt6T1vujLcpFmRWdaAtjeM04YPf6lAG6u+4zXGT09PTWjQd8ATEAmbjdRdqcm -NZS08XcLVAV+vN2NbQeqTpvEO3SoY4UTYkoB9/vT3kNeQ6FQAHqjcHtSob7x7FBf+A7o57SyUbLd -dZrM6zPg+zjZxDcvXAOpxJVYi7f8oCE0nWgpFDZ/ApvVJBYX1cljhzP2MW4I+DVhQuMk/cAYPVBF -r4LBQMbLZaLUYxfBPZwO7khZi0rCJ+FzyQHQOK7rMaLM+DxaFifT94oq8J4MExd/OMYmPftMQJ8Z -GVzBfVofNs746vRwQBdZaZBefFKsI0v8s+50fjqys8tOg1/0wQRPiwLkDirD1bTgl3uvcTGrRr/G -3jAoAmPCRBmcfMNOkQmTdXuTsxfHp7sTNWG/hOYpDqkPTkQknxXXYbSlkWn4+1E/rc3Eqj2mozXk -kTjT92bYMoMrsPpOKIPGhcrpjG/POe4hpQ6vQKXzcT7hAte7b1GZU3zRxt7q7pAxxZMron7Ve3ob -7ixQiaf+D5lSBaZP2s9s3z/CCVJHhr8lh8CM+cBKvMJkvi9nDIdi+YbPz2w3SOrLBTu0JTgBamu5 -TM4n5qw9SkFoRT9n/RUmlOGQMV/5gJZFqt1MURFNnRQXmvWXO5VA3fneqvzz/tKR56kzlTXQyMpv -C7dhv00RlN9miQaYMr0PkD49P8hrM1htUQh3bn7HW7GwS7AksqIbv7vWfGUIVQJMGEyJ8/iDcYPS -cqa+P2dQLjCvVsqH8s/ytlC1GtlQGR0wt90iBv0vDxF7Pnk5Hq6gtRW6ERzVyMw/McDxPfNDziIg -FKXixA4cdEXn+Q6N8qT8AARniyMSMEDPK1jqhSmeGIyA+OQyWtaataOxYlNEC0pp1eGTrdiLszsm -seIdOnNFOR7hIXIIyQyp+DXOhNiH6PEPVwJGh8+HmPC3Nb3aaiFLpCtMTlyIDNS9O+JcjqC/riuP -Prr8zZelvK/SRktHMFaazx3wlYZ097hnaOdRXA19+RsFsgIPG/NcV+5OAdu/YK5P/VeI18RMygcy -t9XXlXABv8BedfQY3tfKUpm3XtPRFAazm4qwiMBiHyrL5+okTdoDzZMNg98Nvk29HAnwscBwSZXf -fP+r4t3HSRdMQEJeAZCDZCqoA1Gkc4ECOITTl6rVnd9AmIOi+UC+9jMdVkLzo+IOK85QJ9QRmR2n -iPvm7VBnsrmZ4gFKsEPH7xPEePOjpmfbxDF04weXqZga8nFx1GhIzzuOQmUcyXJzfYv9ozDKstfX -Hoxk1J/fOAwDq5zNvW/Sa7/54HFASjTXQqKXXnPlDDo+CTSUFgAoZumqbtL6WZmvqhKOaPTnl/dB -Bm9e3byocoWEQw0unErHjv1rF7VrWIbqV3EtkcKCoahGE0CEOzOz9YHYhota4dPfMMbMoystpdte -ayi4HwzMOy/GFV2iH89We9a09IPt0vL+2MYXCJoJ6KHAdEXRgCAp6STTk0DuoGJZpkEh+8EOo2Gf -aMXSsrPd2i4zxgWwd3qhpEb4osXKAfxY2jdWOJBrii8Di4Z5BjMSfCU9CkNWRpAWRdWOhUxE5/qa -oSxBNvGASy+eQJtBZDLOidRG0K+16oBpC+9v+xz2pMMGozMilWn2RT4+MnogXi7tGGBa9A2VqF3f -L5u7ZdzHp3bbvYKOMW2oCVpcVadngk4hi3H93e4mYZVtYB3hAZsPf5rUZhlrfv3Oae9TnIUSZ/wO -zvDn6IZu3G+RIx2Bpo3WS54Co7scmkWqBdJEe01MHOYZv4bifZ2OggkrgINmI/56gyIpTfUHt//j -/R2rvF1Cngz8fQVQN/pv984+jwR/X28VcoC6KYJlSP+Ise1N0Yn8UwcQxZs5rOCWDXX1E/X+ejtF -QPciVUzHoRDccVteqdDGzmSUycmG3Ho10cAii3CiPmzbGyBp/cylPl8dUlnbry4bjGc5ttLm3d3Q -6yOR+pKVer7Xtp+fLxonKUV1dde/aYJPBt1oloCqVOdrtvfk9XiWrx95H86YJW6CRI3b117CLxUe -H3f3sOZrsy5dXqnY3a0ZDZ6BrG8dgnLEW7EC194kS3kOpDpL77FOUxEdEvgsNQnnA6wbHEpzqEDR -Yu4EMCV+QIQggNB8GGtujDsr1cSvhHmjdC9yl393Qi68oqf+T0nZM5MfxgtlXOjaWVPL/eYPQTAo -WLl3INRvGCdeVnzIzuG3067nLLE/Rp6CHaQRqfcWNoEh/5ZwKRqGMca6g7lhFtXUF14EQSaJrSDn -e9BIXtFat3QPs69GXA+ctTBYjED3DvH2efRmj341lO/pfz9/eX4x1qg2oQTidf7c5FSvXMlEmlmb -fbNGR9hKB0UycjiCsSEVX/RU2Keo1kF2HfQP42hgGASGI0tJ8SLE9IfjJ2t1cYJKSlh4zwh6z8Hm -G2NtW5Gvz3P/6Cw0QUFXYk95zHi5Xgu9DseJDkSlNCF1mqUOn3FbFjT4BcOvQfHn6weLr6cap3rW -FVhl/oqK+SkP8VY/vYFBZM1RgpUQRu8ulJeNl6eTROCrtaiKydOVjpatXtd6nYZjqrJ0Cs3k6LLF -fUDgXgmsjnMS07ZSsdUZulOAVotD136kLMDP3g3UVrtYYIHH8q3ZPotDkt4BF3COsajxkxW6ecgH -DEJr3kLhJm6bGgazNJFKXuf9SweN4YXGSxSse1j5n9I+BnFR2MidK9gEFGXNem+moxDDY+tGfeVE -Y1c1mVBDTrZQJJchOWIe+RMq4sVP6kkoaUK9MS1Bk8tAwbSIlyspSr7sMQSNuvuFWEf9ER4a6AJK -qMSf3S8sl2qx9U8uVzmaoKVbcVR8m50mtNGEMtW7fXfgSwleCnc0OcvA0pvDJ6ur+peMAS82/avh -O0sY/DUJkRaPVTtuK3Hv5hElDzM5lIDTtNjexCo4ciCTvoXy/Ekj9Wsp8Vi+Amwg80Y3QtVpPQUY -nyWeCGpWuoW0hX4JYG/RPF3WU0WVwHU7cPOgnh/KqwTPWbUHwx7+jkCIVmQieaa4HEpD+oheGbL3 -G4KUYX30QrMY+WhZFy+SUSB8C+QQYYYfFvRkGNF8ouHvjpxkKWTBh61tHKI/wmHHAjquH0FUr7Ag -gDt4aMmJGtYbUkt67LygTMnMs7fuOvuB5WIdEf2g5DpaPtnCM3P2V1dc0k/O4HdZZsV8pYXqrMQ2 -6F3xxdsNx8T4dD8zf4V7GPjYsJstXtfr0x+Pu8yPWTNd3nZpr6APwD5TSVLRqbt9ZopUYljxzAfa -8UdymY+fTl6N0w2U2LZO7hZjEkv67cFSEudGAeSyLOL63C6naGyoMur807QGOsxZvPE//FuaMl7t -6AOcwfVlBd9RpHqZEv21W9T8G8/XipcdIUFAtcuPv2Ob0T9XOhgXrO15jGOOzEKjdSEQHavR/RLL -qXzotaVL9hewk8ChyrP56EySCxOLT6dEDfBAFu2zhpnoi9wU/CpIk5m3C+UwnqHppepjh+YkJ5Mu -oEd6W+pDsfU0dGIin6/wSMheu2364XErbt2jExh6vseR6q8Ju/LLQsYQrCSFitvZJ48cq0RhOK5F -6GJbIGsuiaDqRrl0KBRVmOLbGE0Xtc+JfZCHbLBIZ+Am5mFHjAaZEbU/ncUjfFXtExJoSQPWwoir -3KKKH1xdw5oILfQ3G9NDxt/dXFwNqvlJICk+Eir97uIxiu/7K19NHTYv1RVU8ZSWVhk8J3og55s+ -/NsZ42e6RmSaxJF8sPsCI6b2BkUuP8vKPKx4Y6HtYwHpjLNxgX1BDQ/cIpY8MjM9V/1E39guw/n2 -n2ZPUYtS4CtTf4DGtswGllXjun8N0rzwG832MLq3ajNv+P0yWD/RAKbv2oufgidJVjDDq/1rj31f -YHRCxJRjctpo+EqIXWDG/XghQhkQ4B61IaSI0tiP+9aDAOcqx2y1H0gx/+SbSXvdi0QLujW7oM8o -nYxXib8p27UQIx6ocLd/aei2oB+jLdNyeHhmwwh1joX39lTd7Y4wSiPZAVz8/L0HwPsI+ceQsLSR -o16isAxCcjT0PwvMnBa2FwtJNiHREFF+aUpC6yfNye5/sx7NTEyCNSfJ10uk8MDkPqGBbHS7XddT -Da2s++Lo9GJKFIUOQg6vQQoGIYDZeQE+ZEcrzafTPAqUE8uk2TnZE0TosVzJeDMSo6IFMdBVeV1n -eVeHp1/P31Ap3mmohAp1OlaEFNYwEn5ZUO3UzZshBAHSFIHCaDlnDuBYJLDHGK7rU9Uv33/Fy/bo -BFwQ6yGKVO61pod1BqgeG7PYILKqHi81Zmk1gMUuNd4ZaSvQN/4iMWkYMp0l4utlbepvC5cvqNu2 -bzINcKDHMwFnHl3KPJe5m5QvJJDqKqm4ZwEbTEJNo022I9nRV/qwz5Ulgw1KC+FOLY82p8Oyd0We -QI/Gr4Az4rGXVffyRjcYA09d+g8AkT7sc4aPyGe9JI99DfI8dwAOnlpAS6HK2FO6i/8/sKA1V17n -EICauQK0ca4RYS2eL5g1iTohHUo3wfrIZzDADzXJsF4tlbgYvGQMqixJpcaSaXZyyPlrvaNIbgqN -klvcYqooe8ZORW+X40D7gvheIcS9KGBrUWYF/cbBWBhwtKUnRrxF/bi8kOsiynDU+lFK+7sXfPxU -GtK0LIPcT1zC7X4pN7gur7C0WipiKJJehLiIpgvvhtyDq+9ITYOggogTSu2e4B9rTkJpFhY72BUb -1pblI6JQlEU5HodgE/fxXhDqTBWmJfm0m06uwTujJY/+sMfG9RUpDiEjghbIou5zJtNZhI0Rnir2 -Llwk3moz5tF3qVjH7xi6V4vkELavfJSTbgvboIH7WjaLf5Bj+8bk+o1bwrlI4AzHPDAbOHkwPz1w -V4DBCO5i+s9j1LQI03d4R8ywvR5E9KuqnvaLjInQChD29aZ/1neZFaWQmH3cojf5mlMUMMMEKznw -+jueMwq2lU8XrncysPWC4LpQK5XvUdo3Ws+UV9mh3B2vFJyYdZk1hUzrHPpcc4NQ81CfjacZK6s9 -CgNQCW/K9VFAVLhet9CSCHMj9cVklH3qUIjEg3BEshRMFvonBHqh9mt0eYznVGEkQceWgwTAG3PG -wlQAAvBrzuXdgXgCKStHobf1Z0z5IwLnRmv15Kgt65tDF6QoIFvG0QObSqqQu2h72F+Yf8f/wVIN -W+nGCOsJ5LpyAx3OwQ3Ae7LtaCtDlyi0KkzM89Yojq/Sjvfjgw1qpeKmrB99IUaVxB5moQ3HCb9g -VLGLoDG1PkvZIT1GE8T/oWHGLl32qAHzBIBo5ZwrWl/EuPWciN3Arr/9/CKgUrRb77s5juxukx45 -rZSPvAiqfYIOS0HXZjHRsujhXsXEuJhMHngAIHfK3wpdQYOaD/1rS0oeum4AMwsVKu5xwleXHnoe -g+eDLpyJXHus28Kukbmm8OXE8Z0Nm3am2JEpCDbILGIBKYvQII4YacvG6tC7fqmCPOV5Vs3sIqPo -PkIR/ta6Gk7ZpndT94VpDrKb+/ZWzgcEMaSgHnJyC8ZBa9sr4TdDjIjE08q9u5d33ae4R2RXctEi -cCAUwTj13+v+vTGLCztibTTc6/p3IyHC1pW6lorQm0ybLfkewabEOOFEjwTYqEZkcUvQqSCuSKYa -D9knOHbf5c8BLJ5iZ1NrTiXXVoigiDVjMTtrnyDJXWdORW4KVi3ksqFrZQKNnqtIpWag9gh5ibQU -XmY3wo1/VXLzTd93w0RU6pYgpueA4NtvKfNpqkyGIvLihI726bzl0e0OJs1WltX6TzUoaDxzM5Fa -SV9m6336M8shk/A1YuhQpSM1gaMKoGa71ZKB7Fl2agIWGWK1Q3kMT6q1pkOCtx9xfLQJS6/i2xvd -0ZQkH02wLJ4nbgusKKwdQ3IgBMgE5hnHYBCdtmys/XDm7yhO9WkK2yDjhgDTdCr1NAv4gl6qC7FY -wYejHmPs1i8fSZ19qiOlZ48QYRAfGz/p+2po/x45dQXeeAW/WboNE/nUkhh3p/3RrM+O5s6Ps4bA -9m1ObTWBy8HfUSaendlP9N9jXfpFIBzF1qLSSGSo/nsUnKsg4Ujm49ee1Gdz+5WGIJ9opb6CClae -pA/YweDWnp4rN6SJV1VDYyyOjvWBaB6s5TBaxK8KAsvMk83lEm+eB0d/QKKqJOACfQwe2V+J1WpU -SuiCZvtDoiqoEgU4csVpS7Kk1w0Bo71r4a9/874jIKrgXJbmCnQ9c3m4ReYHt2mrPz+MfMQjozyL -kziIk1DBTP2RSwWOwc0A0umXTO/eCRlmhW3MHwmyKpcAbzCPs/mlDRoy1B2NS7p1f80/qJypx3Wx -2YEgggJid5RLQ2w3KepYy1FIoWApiWMLH7zuFY2kKxeVaNodjQU1mfbeKxrNzs0mJUIMpJwZDRC9 -aVNbS2cMBLql+LSkb/4tf03/U7qJquWw/tsgJf5Fdn5d145JhtxbFbccad2cl6DH8jbXahH21NUx -00k+lCVxDXWBdf3Hc8O2wYsAPjHaQs6aQ46pDZbEtoMtzgFdnhCtLRpIu3iZnIV4lqpAuJEmjeqT -G4ZigEIjPbDFsysm3+a5O5YvOfxbWpJCUkESwzMvkDKSv0wsP7cGhxsiFHrF665i25lcFP28+6zn -0rDtkqHTqqbX/iyHFYl2VAXDgR4BPPMu3WU2v0LRTsY/sqyTdk1YLcTpg0XjS4OvgPksmFBjylC5 -Eq/x9BD9GjaAvXbSTZUE8LbtMmSPlktMLjTUNaZdBPWgEUCVfED8Ojf81IGz5OXCT20t1m/a3Iis -YZEdYXo+LIS/B4vp/FMPejhOmY63V2Pq1YyTKe9/rwalM/uzibDYUN+uJhSw4pYN6UKjmc0xy17q -+f98D8FTLDXIS5wXt9PCPQAdOACyl3D8JVa3gzJvDK7tTRfNy/3lc9IEgD8bur2dTLR9BBeKvSwS -wZqqCTgJhqZ/9e9P6usnHFiJux4+0Pqjcm2Nz0ibFHKJe5j+leS1ZS4Xcm8yg+A8gh9OIQrcHEvU -GowqCycyGLK2DcRhV8ovC5VX5AmlzEsJOfEAQi7nftiOiMETeseudPq2QtDGqhRBmXxBWScXaDOs -zCOyjGo/eON1jCSTRQHuToiF1ePKtHyB1QgOjjuQPe1dOsbJHVH/mxEciq/NwyfKH+Vk4nxm6fxE -yXDKGvXKqva4jKi3GrDl5kEryqTsB1Szy7+/fCC79DPbfq44qXubw01/PDqGONGoZaMn13wjfzZp -Mmdpvg1BkQ2RSNWdOBSgwkz2a2D+UOUQYxXgEWJzsSUubDAvd0pmz5qG2HtUcSpiuc4pbMo4qIDW -T6Ma59oGDomsOEuZ/K24wshM8EjKwRsWfJFw44Itqxoku5j+jh7FW/etWBqTcQop3+vkgOMNXbVj -VsJiaZv1FcFTC53psCMPwmJ9NWg4MnekPLrPr/E4fUZ4H8q4emEMN3PgU4zITRq5+wCEkTuuJZF0 -DhXqZpxcOX4zK0+hLPNRr3/dCs2yLowBxZb1tyUd/ieQ9V203OwU6lBksOP9aK4Xrg1eAdrw9JJ2 -/fd8nw5R/wWMlnX8xTh4IPPe7azF16fY/HMM4AkaDj/EQb75P/5Yi3W1dsPwpxnBd6b+pakZfIi5 -BwtN1S8zt5W0CJk3yXwYUtXpVHNpsLZbFG0Ok4oPUG+Ra0rf7KwNKCnFN08JqM1XqA8rLuN1xDy9 -Huo1Q4L0CQGM8P6R1CMibVwJ2TPnxEJH2TXkDlNUDeRDGLpngcdfNI5f9nbBR3+hVPsADOB5i70Y -KEdDHXayTdmYiBSXlswlXmowsXVeiAwNUK3GDjHCJIFBQYgplUYyDDJ0Y5B3ZumcEB2sAjJ9Ppmz -7kPueICvmtTdBMDEM4f1NHIhBmYF28Ih86zc28JF6iIdTTSBVwrX1Ipm8Yq8974RkKVtPjM0XXis -/67PBRj41q1U0BWoxXIKQuVI17QgVeq4pp30MQsW0tlQd23wqjU1PBt5vE9tZPNnu0EPrvXLHSna -omfnWjis31N69ANNvCzUuuX52KQxg36WUsSwAigqaEUozHVqbd0n1TEa4W9vrw3MpErLgIVTLcQo -DAXPMcEDj3rXO7+ldcWG1jfK2NwtF8boYXhExx/QW9L8NIxeJJoDbxFSCtwu1kA+HnKwuj5qIsKe -BHhPXSzE2YNIlwHhdZIAJEZKszsplhGv8Tisy/AcRQVluRl5I9jNyWpHMv08Rlhno8/9fMOcY7Ii -ny1RRQxZulaYJiw7p8z0g6RMJKnoDc9g/Ux32PXytRj1QQGj5a4b6HOIb3Sxg7Md3AB22sjCc1wH -5MlB4W1piFR6OVm5fNv3RgSUvUiIcL3kI9sOC0xkx90vK5E8nhFE6h1OYJeTZ7TNy3rsvlk5SWkC -Xs6LKXESJNlsTI0PgejjqVx+FBUB9co0CON+qQZwoJp5PcurrZz2APl5VjeWiHbY5Sf/s0ZsiQ8w -mCJPFpYyxW8RXf2WMSkDxjCVTGJM54XSjbpoBRv5CAotVv8UHnOeqMdMujl6TQN6a2s1xbo3qQA7 -+8iFIv3mMT+FgI9+u5eRMm3qX/5MgkoAoq1CPa9ze1kgTgc3WV5ORANpdOFJCokyNiJVXQWwP5cj -qZc6ngFjvDUMRO8x0+DS/NPh0z2RBYgVlvquSEV/LkcXv+MWCMDZPeEqXRRwRVZpMU/qBCkW+3bi -04uJUhuHUVI9u7r7QGCe0aCUosmeGxhcTRKF7lnQIe3EZhBp5boqsDXrjtmhj3nr3nPirxv8wPBs -EX2Lz5phmSMGf9SzhbcpMGGmJ/yxDmodx5jIKgmuZdIIoOIEcruoFr5wAcQNPJ6pWLAaPRhc5Eq0 -X4oOiqIY8+6TAR2pJGiWX83W6f6VpK3ZwYHEEi5f+IPecntFbHRmVCKvDyy/jX3GW0+Qoa3BlDlF -rFu3yIKNPWuXRk7ax9rCjHd9IC46lcP83xTPGHaWNb4Q7Mr5isLDg9GyHAGqH+n55ppNUFnVphZF -Mz/5Zq4/4ef6eiQHyODbTKOuIozU9gb6gmEbapnzdPdNGn6+5bka3FdAl0cP/H869AUuoHbfKEdY -Gl4QSuUYV3f5ERS96jIPJNafs/LVJWsMM41+KFnNRNK0BfEBXeeMwAWO+o8UoTxwt4eKN28dJVpo -u105KyKOdDY4DmjJP7yNlRnOu90HhevmZqdK9bTAS/kNdHlV+44NR7XImv7+CJRj99CcMboAO2aZ -bgD4ihzIZS1JS2aBm0zUyUHqi22a2/LDIsKjVi4kiwhjlAFa/E6X4sqLhgc8jXseZqMR3C6uGQ1o -RuQMsSWUuFd/IVOtxvHx7M703gEH3bbVbb7GKBdmQh0CmFBCqZNkDtkLL/qzM2oluJv8emuqqImg -yYSg/Bjo1wvGA8+WQIymWHt9dktXrBkQDe6daPzoZf7TfCnyu+H7C8TORjhPwS/CYF1hBfBm5adY -HFqouxGLFkmZ6zXTYY0QKgpovUKB91e3bfXYvYX1WfUa/ISsndyTNqaT67DvmzAcWd30W/Gc0inq -vjc2zzPyJ4ljvTKPmplMt954OjnE3ES4+sRCRSe/gQRwaG5+iBqbMRv5Wbz44F8KOhUdgoFlqL/D -pfemvd10JphIL0Oe5Z6trTuUGF81bYwBuldNg81rqsPxgKLORtvCp+5WfMJkgyfQK/xOr6LgD5RB -a/IkmIecZ4qA0TMLa1EQHNasXuXhDR6bq2ho6ZJAy/PV9txthGyKME/AsHDNep0xnm2suuJ9gBcy -qYEGdUkINNQ/W41zX6SZJMlFEtZSvTaqMlvb/jkPCFZwXrE7LMRTiSDPq7WFZhQ3tXJezAPkwZ6M -kXBrugvQAkE39ItieEU3uFuo4DY+OXgveNBah6dOlfeDn3uldA0ddMkdJfTISJiEWTgPYKjiGNfJ -PJyXvwsXbJOpQ6//QoJpd+MqQcQz5VwTpMshObt9a872MqHAvjiSj9Cwg2JiWnm2WtkhbsB07clU -lNGCpi7smUyG6YJvZ5g43wyAXiSe3dJ28G7cMPeEF+yux8JLdkCv2Kjr088XcGPyA8GdryGMpzmX -lMnaXGOxYBITIGA7GUNFZjRYXxCaOVaa5sR4P2gkmxNTQeovZ6noj5sP0rBXm/SEXE7dcKdwpujA -BWAk6Y+r8WZmZTkVRMk3p+EnzNiKkFddWUoIXO+nQqh1sdAiADMTRVP0hwVMz38kz9nVhjXnbdle -ify0ct0VRXtgA2oMeMtzHrm54R0u9jUE378+Y1DfK+Inl/Zz3pJLygzIWN4o3foA1x/lfgWIzvKU -bdP+RcuT9dgS8/ZF6PdHZCIbnGYe7MV+G4GS1ZmBwiqrqpjnKUmy4tVvv4BuGDl9RSqerxMMkSRo -rLu2AnZfFWkyHHEhZPB2gxZDWImGxsGe8R+gIzG4X0tycqZbmBeGrtrDOFvsNXHVZ4tJ0SHdgm3c -dB4BdG2wnpmdmresuk1I+l7G46l5acoYMYN21H9MJlHmqfMY0rT93E02QvneCplLCHD2n59WHE9K -zzPn116gUZ5mWXfthALO0jFbRhUhsswOk7UplZsALBi7DH1vSNw+NnKgeh4IZOGRmGX/JQQK7izo -2HD97183gZwabJ1p9OrlLAXzv+089JoHfmXZaMjDA+Z7KzXdcOOpH9dhdwtIHh5ESV22ESbtn0lR -miA+dryzKLBOieayHl2Gvpmxyrm7aG31zSX55QQp8KgzxntedgCVJSdbgV/6M8H2QCjXyA6B/WVJ -iTvv8CaEOt8d597Sh7ntp63IEvSI35liJHS8W7c35sTgea80qEP65qK7hOSxwWm3TyJZ1m8TiZ8t -o+rMijrsp+4pYpvXaeBPL8VnGU/dZCyGqyN48o58VGJPMwvM2cc0Mt4CfQWENw2oslL1BBSkzmMz -B1d4idJv5R25G97u2nDkVxl/Q133GktUG4jZvmJrQ2n7cXTRdpLnEoOrznbERXtg7zJXoFwiKgso -EbsSZ0I2CKoh0pvlvtxmcpnroI5a4uTIhe7PY21jBTZKEJU406yt894UOBhA2oq+5g/WtyNQHeUw -cUcK0YEr99DR3cakXeSvvhmZrj7RuKsNiS140549CCeb6iozJC8wAAL5JnklWwJmHa/HZfW5326x -YdSasFgA1jjyiD+5l25MoKKzUryeE6oGVNAavMZ9RMhG93lkS36Jn6W54wLARp2tU3oDG5cTDTnR -uQJVe44KNThd7oNBWQIuUXWf/e8oZT6UJ5Wa/wi7iAmz2Ge8Zoe/m/+x+OinLvOG1++Ni6AYF0wN -9QBapP3PZnP6MNBf0XqzHiRQEu20Fp+9kL9vsBXQfsaeYiNYjTQdIEiDI6ywwrtpLFn45OFN4PpQ -e51VNPHRexO6NbLLOM9KC3tHtjT+5RND40sWXcIVeRC/rQZufSHayOr0hoQw+33xoKyJQKiHey0l -tJWj/dZRC0WYDDI5ho+EoIa3/Gtuhx3YY3f+0465ACUHt+VGfUnbpvHGgdPgFPBwIrzpxlamNy05 -/bDxN3DEBQAjIhCVCSKXotB0vwWa3QdQoX4gXFxSZ+u54mX+Ejij83YJTDx4wUbK8JgkY0eIFz9m -aibDGfQimONx/+i+PszWwAX7O88HYDhHBHnDoqt2w5gxXB5pjP0DUI7TLJ7/yI4c5m/r32HTgP1e -GrOfzpMMqbFuZamS6AQMRkyCrkjeewSI386N8i5W5O9t4Lc67K2JBcHFFXZDibCbDuNTIT/BuXB5 -8CdWBjE5F1ltXGkP0tZAUN4e2dH78uBReGCR6FjCgVq/3B8IEFGUoUT8Ratr48TPPrQdAQ9MQMoi -2Vz9Dd2iO4aS8cSmMSEoR8/drxQ+Gn/hLFLiIM/0S+KZCGD5BYPv4LYSNl3/9WuaJEWXJaoRn06c -yrPo6BkSmAeK9a1SAVIrPQPGioVkIi/3y/hZCIAgZ2DHecqB3V60buc2t/uALUAqriJEIhSAWqmU -bgNSY7aBXeSj5Jsb4K7DrVM/PA/LyFYS/QX+XuJImo6Ni75LziePOMN7i6u6Zov4zEgLDXvrZeCt -g6KbYkN0fC9U38cGbXI6VP6H2OD4DkVUApioA7ZlvHT0Nv02GdFuOVq/NPAxLCL72Vm+p79T27xu -7ZIKRK1iY0bI2UyWi7mNR547gDMHyQvs+v2UBs92xq3hYuL7hVNbMxxkcm0MYVJZvjJcPfDGtZmJ -Y9Q8cd/g3rlx+czhFRzyB7zB4E0vPe/fiU6Ulwob3QLD+0QOqf0HCxz1WqTnLsOzmQZp5jq2rqqX -9gxH5aSUHrvmb2q/w7Yj0WUoeDEhU1+lyFySkgKTrSQJf8zRuGWrA02d4SgSk7OiDAkWwTFfVCxH -6zB9C+XKn1q30HmThzy9+yg2bC1wndYl5KwnMnDeAjlPj62NxReijNkuRcqpB+6d4i2cZ6wP+vR/ -SlFNh82ejvE5EWCNJD6bYLZMkopkRpbnojsqxArAzX/lHKtaypU2P7pbJH50pSZ+xBiXyI3H/DMs -nSIZqOWUij8ePGUmb8n8rhkyXu10kiprwvFGGFXGKcuqL7p0EJ5QsLqUKAY2MFN1S34D6k0TDS74 -9VDNq+1cWezRxrUvtD38N6XUOECRlu1WmGxFxn2ZAsBeg78nMN1et4MezTU6pgwcLbh6hvr3qoJ9 -jFkg0VXFd8G/NLEEwvVIYZnzhFIE0ULtgrfhZQz2wlrc3R7qD6CT3HmhBqpdhnstHIWktLmjkBE1 -q3XIiSTVgJU4PEfvR5xNlVUFN+Ajc05a0bcIUP4ECrpBEFtj2tWBHpCH+CbQMousOFJzNHVOnwEH -7JNkWciifBIgq8A+iscspndwuU0fCHFVOPUb6bNhaqx9C/O/VvZdTIuAoVSntM7k+dSZ2kgS+Olw -QlvocKUs59BGRKvAyaNONC6YnH1g23UGGk/txzQPdze4CFUfFR8chb9Lc8S+gozaQhDpBrLeFWox -rjydP/9IENWmeQUWjcrxAdTVl1IZbzbl53s8T+zIMIDUdX18lWBaVe854tl1k12r9YW4LXSvkuw2 -nw7+JMM0PZLRG24pZFLCZuGClNDPik2C8aZflonfX/MU7zRkKLyQuWGIPhsP330vr18XFfm1J5OV -Sg4JV9YOkk3EPbYLPyHHX7oOOf6TPwY+t15UFGMKmnVwlJUAv4JdUd7YLfuBw5c4tXcWLSNjLddO -0XqKH2he7f6yVm5BnjpKUsV0HUfwUxYYVHL96stI43MGGla3Xs5Fvim5QHN/2Vh1e+FXNTi2CFhe -JHnO4I9O9cyfR7A0UXuJkCp+Ll44Lj5LeCKQAGh/AXClxbHX/kAs70c2yt2VwXk33nSxLYwawx3K -9P0TSOJ9NUfqRedV+TrQjmh/4pu2zK560QOkr3ULe3iT0C2HmDxiuHH3YqktCg59fpx2PxD5vld4 -d9aPUKXhr3/vQiRJ/uH3kddL4Bz5qROnp1AZ+dMx0qOO06BpB9S2cq6cDID5vOAGy+RZ4S321m5X -ORVJdFKb+Y9P7rcY0x3pAABahMqN+WxJC409wDPUVWklCeyTYo1voRbRYbMEiQ/eQYmfZgsVsOBM -8Z8HPtuBD3i0ZQyDV7oU1VIV/I0xVz0dwR5X8Bgspyxu+ppnEc2a4xyOiA4lNhBHifM8/Iv0h0w8 -bUvtbJasNmU1Vi0veN6lKAxFz2pUkPVhgjw/WMgEEun/UQVDYhi3abWn3NZbBPdGXCsUG6OKUjL0 -KNEMYIewcPPB/WGjTncMOrcDwCuHh3QJhpmIX5wRxhkk8+OV3zGJv3yfRDgf/45MJpX2+s3uUjTK -+bYZnwIRXGnXyBxkde8AcssvR6yF1fIw42wsIcF99octz4tTqv4byg6h4SnUxzhptV03nZ1CYSnj -imjBsK3pVykhSOgemynt1AI+TeMY1ol28EBJttRslvpSzeFvnoGF5TxznFQbdvFfjo0QgVjPgS7f -O9OsMz7mY2jMZpipKz3cIubuSWcCrTjXkpXCJcFx1A8PqI6PODfK0q1QWC2gKv8UpEo6xqgcm1jr -oYcdLCw84xnT3oIfJFz+C+y9vHrQjUq+zAG9lkWjgNrLqtsIaowppPmcg1kuUYKqfrq8LpdnVZ25 -X/Jiv2JNh+7KKaq0ZyBVQpOWjdmxYsNwTeMqNzoeR8aMcsQbfLA6jSWsL1Rrpv7l+rCw/W0VNybu -oYqoWKcesByWHCEVGkkweMOTbZhy1542VwPfzSu37PN50kD0c5FWWjiWb9pxRuRk3+XL1YRHmcSH -1QgVaEGl6gWeJcStihe5Refanv83YRe9V8OBjGKeV2bE0IZfW6TERI1RSg64Gbt0VeEyGO1/wXEC -qwcYsD5/VtU7dgL/u8gUSP1m6cRA5Jj7lbeNrCDW0kZFPJ3nJ+GUiS+GDS9sxGL939fNPF4CBchu -V+ZVnOo7aPSEYUbpTIZdx0UQyTYj1UrO/So032yDymE8Sf8+LAkdTxCJ0W3rw4WTkOJmF0ihJVAE -8WhG7dv0T0kfanmBWk48SWlBG6ZFKJxDzx/93Itsknub816dqXVwqTfGA5QG8UDF6Xdk9AyMNwUC -L2xLXyFhj4UJt2ZAGgvjMAmDkqd9RoHF5tocIqKeFFilikShinVu+5W9XiDSUh8248eCKt3gfuwa -QvUmVWw/i3oRNbpM9E+1XdIsnl+iW0VWvdVTEE+KOaAemHNPmk82Vnz0HT2r0qWt7P0T50+EE9jo -TMir88Q8+SW9KpL/JQzhfJUorJw9PzynGwZqPEY1r94Flpx7PQsosLVQmQPbrsf1val9q84hClwh -ilRiwMn26HVvl/akNiw3OxP/zwLjYllBjUD0rWSiET4xqlh0EjSL1tlRUm3ULk984JyMZPFPbTIG -mu+bsYU9hdtq2xcp4TPQqIaBaeOR8K9NB4IEv5Ir0yiLBQRIGowBkCLoB+iSUkuajdJwU9kwBva7 -l6lm1mOfSRRpGuUtPe0QdY6a8i/bXo36xXvlgpqtxrMTd7JhDtaVAvbGfREfB0UvoSgpOjLMC0Mo -K15IjkAbV7fsBfsP0WmPb9dsSoqed+QCh4JKOmkyl4SBp0dxzVAuRx0rc+HLboylKlScU2u4zSQu -0V6ApnBRJasHeRq/D1EfBWTw7i6x1SkL+SZ0OEoGni/FYLj8xARoo/+qrnWSBb6LE2D+9TmqSf+O -FdaG7CcScU09BOPfCC8rslTYNUX+j/l8icSzKfCYxpsm/Nz+q6JNNaJiOiKu/2X2a/NhpTsaLwav -EHWRKX8xi12miRiqgke6u3P86xwbj/tYjrg4Lug2cNFY26ShtEqhsjrapXzc8C7CaZBtgbO5NUby -rzTVSte25rVieRS6/mfLDJTOMIGrBVk/LR/L55vdM+gAKZ6VYnDtphT+KJFr80tId97zYbh2lBXD -6oIMsi13h2l86pE484kad02dJl7DjpekMoOdwjDy7utgPeZ4O7k4ZjsUxBzIzgMwyLhyCPK73Pzr -CNWFeH/0MAg0PPlRjIhFsNI4P29GTbq/rSDS3J7tYCFLFroJ62YQrQi+fcyBHKU26UkmjZ3mbAnT -5BCkh8hS/Vre7dNjjTUhta8I3RXRGBj2/q0PzFKSxuaPMnkx4rCyJ58L5oYS4id6gprHh+zCmlVR -5SkVnD8j7XbW6S3gw1/HhQNyQxQGeh3dAZiAvS1re067iufomQNMemv2VN6d/IqQIKz1WJbKC4La -OpMaTugLNMkowkFvo8dn7N4iteyodRBOn93bLR+HU2pSRRa9pWUN8acVYGgYxRsZS0yg+rgM5cqX -74CO5jZkj2HyegbNDujLFFTz5ZnAReApEYBJwq7NkpzhcvuIGQQ2zCRP4WwjfuX34dB7N7q2GX9K -xUdL/G53gZv/Tqn7P/BuO/zim2zN/xYheRu/IPkXmpl6ubHMO9sBfcyW0wwBwEeadEb/5uJXLRJN -+NNZEE4QdOVReGjMk0uYAK+kaKAHGSKhE8pcbLBEHQFuN3L47qOKwkS8OVlEuWqT0Segiqos1vug -DgMTgLpWqvvVFI9HBOXtm8kf8U80wTnEpxb7LMhdPVfRmDlt6QM1cI2uV/gjPVxWpRduXqaWsI2E -0/EJqPQ91HWH0o/DEa3jCs+8YSdfrufBjYf9oGEA5sj3lnlwdjoAbgbhklCpR09vicqdiEMiKZMK -WvHE6luvgtG3+uSF9lclwhy6HJ8lkUDXE1854+oHiU8c++vkmJXA7BzBmvVls+k4Nf/R/ZcJM06w -onbY6v505Qwvy4yt88kEsuBMBf+Qv9YUSCgivQYHOj+AtkljFftBgEXQcovQZuaFl79BzVkjOL3B -s+25EHY7FwPbZ5aU0fKv8Dzsks1+hWRUzqAz47x3AG5z/adL60fskrYze7OURl4owq0PRXYx5H9I -UU33wgwDke5bD8YG+W0gAQDNHMkA2AMMSDoZlbCxerfoCrL2c+gP0vpAO+bRCPBZK4TKdi0VvzKq -iuPS9p7duizvksy/yEpm5199YykextkD6l99zNJn/QS7anSajF4VJbfb9pCpdTljZuQg6condiwR -zJ1fpt5NPtnjBUaMIU3hy/zJ8Bvv64NNi6DNG/vu8CtDy2rQCoTtUqg7TVQmSNR3MRWPIhbDuCzk -IgcOfzo89y3ldJMbi1/+vRPifojQ5i6Lanr/2KKIT9n6V7TuwPh0L9U9Y6qwC9v22xLY1Rli23pe -jZeSC5GrMNuVhpOIUPChtgN2uCcnBuntTMohxL+acliIgGwjFtkOgg3bBQKuP/OXrP2jfJq5ZLSn -WWnOZJC3X5Uae7DjehIt9QS1GRsfhMMMYZ1KpFhqLg2e909WblWO2G0bTiH5ZCxZ6ALUpzD6y5GF -+3sN2NAqR15em2tn3inIB7UWS5umgoID40O3jpy+rBlqPWva9VhD1BbOOyn1AhumipvjCYvyoXPn -fjahWL2xqKVCtiP50jtFVIQvpBXMFYdm3m54ER20LhTYlne521TuKrXxK/siDMt79bE9sLehFqkm -imhBlngqbVpya3Tqldi0laPgf2rm+CEddK9y7qyaiUo/pe27zeppacpl8DL8SHuZmcEtX7Y6xbrQ -vtBT6xCsxhYW2GH7j1YsO52Pq4QUaA/r0QTlAeW+BI2+NEhQMes6C2cfb8StAbHXiQ3zNlQWmtI0 -0KRTMqEvnd0kEhsqQTSHl23aogj92iWEu4hpzwM1VksYTVb2HX6BAJU511PDfO7a6XYxATNn2weW -Ulba3jVHENa7Vce2fHljuDx6HLJeq3YVWBrjanbQGyKBlZ99acODKc7S3AmZ3vWM0q0lwJ4nOdN5 -bCSgSyOwFIPqi59jZ7TPpc+WL7pn0jLstxZB2ZTVR9zQ+CqC+V+L5+DGwrrXcih4nnP7t8l2CH56 -ATrytO/i1FrZReOEol87lnT2WsBURoCAaqk70Jh1kgmC8VAGUP8x+TPQpTXSIhetBxFMXt290cU/ -G66NWHha4PXplh2LT+bmZ1cZB08qXejLdAtvlOLkXdrcQgvsxcR3/r3njimE83w0ylXLR9phxGSO -+gLdOHzfoBdYd6vtr2hCPKWJT3qJGbieCQwwmHnrnJogxUKcdUU44YL5PhYv09q0MPP9rJcjRhG5 -y3E42cmiW0PaiL+BVzLLIGQE8TxcKCo32UD7OekdALgx6M/NJR2XXp7bZP0tvx3lcD0nGrYLYUhj -XrXOP3p0zx4GMLgDObyWbLj73pekkQwFNLL7vPFcWryOwTuNmJDAdkGayGniBckA1KfVNNUjXW9b -16F32BB18jwkKicqbaCIry8LwzHLKmOlgFv9e1DndXuPOvf+O1lY4xY8dGRPO8/Ep1jEllELUBd2 -EqYZI3DjqOEFl9ShscO3eceZ7TmrlzRIQFW1MrSAH2KStvHV2Vqm5lbJlcOjsqC5UbMWt4xS9bES -PvIuZ8uWa+YWNKtJZOGSfvU0riOGiPM+8LNNThnFltifYT7+D5+4ekENj+bcawiNDvDh9vW5Xzf8 -BCwK4ObhjfUANgk+8kEjqRjv2ODHdubK00OdLNbrFAqXVCjr/+rhqWEYAh9M9T63AodnTba5ayqJ -dIxHkqMNBgWa/mGO5eq9IaTvsve0dzW09yKY0hUddzpUMphz9aWGVBkLfsw7VNf7CRj//LO9nr0u -soqPImJ6j3lJFp+y/m8X9B/5mBBF1bPtK79gwyOuswy8WqxjUwXBpjisM2fNQgM9JnxZR6tdahSr -vSEx3jCpwPQgoUhtqkFNhUAWAhlOt4AzdHcgCey8hbw61BhLcOawT6iB1DgZIxMUz2vXGHckHE4f -Pk46ifUA/Ltm+OOlaa3ZbkyT55tG4aXZBeARKy0/HfIjn9mVfKb9ji6wExZQyl1fwffJX4GYrcuc -1qrUUzVH1SN5NuTyroh97+GVOQ8mRb+607RLQd/TqzK/7T18XYFGHGixy97xOQA1AFWE9/nhyZ9l -grf14poE9yfTJvlp7q9ue+4a3SaeS3+pYByCb76C7VTLgLAVVYa6EJLbQV8LL9gW/FHGo5IX0kqp -c49rDN6SBXcH4T2pc+a3MnQ81Xik81A5hOJZvz3w98clpkMdlnJvtyFYkUGswffRpkJPZQmkqhNF -fCgzdc6RW2s79185BQ3+AT/vVtRMMc9npt73i5ElbHbzEmanKlvr8msUAEuBFXsDEfcqwJ1ljPWF -39IotAWmGeKiZSY20HCHLip/B5XuDIwFQmvzWyqf/aIi1Tfb6HabZCrHTsO499cMAc23LR8+UyO9 -B10vwo1aEpo637kuSpo1oU+cXxDglxZ2rOVRKKcE8taajiz6/klN0Jgh2iFIvk70S0i0N5y0ZnSM -af8rWWIAm970OZss1Twkcc5T3/J3KJqXNdBMBMQ8a+/+xS2KPwTgfrXlNsiG/tk5PzMJc8xwMjn+ -sbcVBwnpDxE9O+Rt9n3xSMTFfatwN6tf+UKr4h2M4SI6UP29PNWzHHxXVtPgV6VjSF9r1/lYf6Hm -crDw1AsTB51YTI/iBcAnSDRnlupY+D4A9k1OJ9unS7O2A3yFEmvnNLOfK3on7H960E3xTTu2mXxx -SeJXYK/P/0aTaP3guV7LATKIEkHgomSVKc93e8OH9GfSd/Mk36rUa4ckqw4drsTPYiXvuJIszcur -Q76p0X10wU7cjxT4u+3ij2+wld9kEnMCMV7Wy6hpH72+4/L/GA4PaYvrYiwfHdNVCNsKfLpFoI+F -3R/ZcdtOWoF7XMqnQ/XDyirfdlWnkCR73w6exEjTofRbCEUKS3sLtTizEy2Z8W4ZXubhbYSXqGrE -hzZ43OzVI7JiH9EfP/aOfRiCE+LXXNJzBTqCKooHO1JOpCC1CEb9zNPHZVQRhlZMKk8DdWgR1xPq -XrdTfnP5eEUAgPuG3BeGHcwYO/hajeh3QW9drXv+H2I/I8wGA6zauBpRQRaZz3B8NoIqA6QIRu13 -3DxiHCAw4QHNn3kBE3d9w7d7dPJvGOlV/NvOhx0YJ3WDTsvWl+EAFFWznmhMHMRNiLKRnXbtE+3G -WAOUtdxzxNIGjVWmXq2UKywMEN8rxwj8rZw3kqSIgU8HWs85V2NLdFA58itTIJIk1S43wKGjt4t5 -5BfDDa9m/gXYIE1nxHjb/faYT9G2yxeITZpiqWws7cskKR3F0uQ3gAJdssUraR0ko2xcwSBoVHv+ -oa9qJLbH9TtS18z2AuffhDEoPGHhzKwfT8VkGUGkVmUt82Nq+33OEl++358spRFZNqlQIbawbjvV -43eMF4hJrrDSbQXewaQ3bb2TgXA6R2KttZ7x53x5JauYhy5jpvJt54UmJDt141f45Qun/3f1/Fbp -XN9evEat4T1f2CYEgshHBZmPKt0hQkjZLTCdmF/thD0XqnehncGkRudYoYnkqvSFNAOXu4zaxOK6 -X6T3j20XpfFxbSD7zVETEKpnsPe1G/55Hu6lskRQGMydxQPdZTY99NIt2PdsMV8rYKAgVq6vD82y -jim4oLAgq5OhOyY7CgPpeBaBk19z0nt2Q2GzUEyLMVm5VPU0hysffsYz49aTcx+LQv2MMNo0l5sv -4L4P4oojG3+QRgYFi6NGSVJzHHokmA4wn/7PMio1ZsbO6KffyuVRFMR7rHFMMBph2ufiB7V/cWcK -V+EQFWeOiVVKWXqQP6D4GoGXWvjU895yyjcSrqbtqzwtFjpq2fEO9iibPbPtpm9JEN/NeXIwhjy+ -sa/Kn2G/+pnBpS+M37rIhy/YHPHQSzJBxPXIoB82tYc0Js8HzGXUKNGphabCU18H94Ypx37mHJLz -tf2wV4q+5I7rKwI9om2DQexkGkOgIScIMMea7RXAlJKvGgXX3W28Kiv93xNLyNhsN/BS8k0GuRXM -y9TZB9t9YJnY0eABlA8JonU4bnaXu4yvY+mzT3Gvaz7RVUmO0qpeNR9vj/fAw1RtdLLxagFJsFin -XrVEK+PtiSVf2Aaki2VAWQnLEkse0ZOKEsxXGO5O743/qRRDhv1QXIXZQOH/MB0qiNnrr4MFvtfu -j1+IZo7FlFIXSlmv7ISH1atIy0PS3q4HpLJ5+fG/p+mNiOc4lI4w1v01QE1jxMtksY8g8bcyni9r -pdyTKV7TYKKcvToKLLhH1w54v3BS2eFAzFl6HtEH+ujeaK6TSyGGsU+el4P2E65Pa/gYNedC13/6 -8/52c6mF6t8NZHMqQ1hgIV1qQD1aBR9NSwcLu/3DMjXyuxrZ0oOkhrpv/uNyiHZbHTwLj2EbzEXc -EmqGuPt943HYOxJ0JySRWEsV25kYMHjzeMJZ2vLvU+kuhK0OhfBk3LjSc22eIT4BXTZi7Jto9Jj5 -bgEZxiS48lossiG6DRTGWQmICCruCX+JzzpKfKuZh9+kqfHWFSS8XrEZx9zmkAAi6Jhk1cNUGscX -86vLPF0Ywo7/RvcFlUAi8a602D0XlQkp/g2Q9QjDbsO+ZpmuZPLW8RalxyTJjAzavvbslQtRdhsu -YcM8O7CfWqypCu4teC9PUhOki+J1DGRsca3LnKwcjqwu4CET8gy15aUo8874gQvOEIkau7FmwDfm -CH72PBlhGubmWG/NxYQBWevcegTD6MIRCEGiZTvL3aJG4Dor2dao4pIz6ejBqLZD+iqTAxp/apkz -1/dPLsVJWCySUJ/33yC1pGEx2sXvkvOAcdGge9K9n0bMxPE2wg+tvkTrzANrPPCnccuvvaXjltz/ -o1EG9BfZi/MmdcWR7beCHTc5dlVfDmiECkLWgo9D0O2f/WQifvvzpmcZVTigO29oqYi2eSCefP0S -/9TBwK3kdL8M3GUVpLLgUwxQWooR4TtpTPuv12kgtR+VYe1nYLZgoC+B5PDi+OnWamZpsStl0KKi -uZ7jMOXJLfORv9mg1pouzanIf7pQB5pKNjxb+xSIwm+MweJKmEDA33QGIKcnrvnvY/OmO0JT7bSo -iMyTP3tXgg/Dl8AcRkBZMwK8HSCNZ105bLwnaSQmeEv+nxmvEpD9UOl3ueXKPr26PopChwg4TWzu -8hcD/cVK3cWvRDI+8XADuaaYdR2dDha94NfSoaHFwtLseRrv/P8uvoAjfXuc85d1pdLLGWLd/x0E -r6DfKSvEsj+zQWqSuWb2hQ8JpVFpAszo4pH/m5zdo6HisTcQOSqOh+1Yb1a+6raQSYszHfIuM4wI -9e63EtkkH6zlCynyP0mt4MqTOwWB96rZC1iYJ3H1Bm3envHpUe+o244yVJJS7b7djOj7wpyXFDrF -QXfJiEHPf6Ek5yC7DxfupArAYtEE+/k93XgiwsOcb/GbhBsOJvkyI1JNQqxrMFAOgwaJBjtfL07V -GNHj7pZNAzIhuUge70JVxwTFLstB65fjtQNw4BlDuCVlYuQpg32kRsppjGI47cgNW8YL4RGru/T0 -PTYDk1u09NX4X/TfyOee78l3JJ9VQ3gGW6lH2Zh0tlJ6MN+HDoJhBOHXvKfiWSDsqxBhlI8Ma7a0 -fHYMK/+K6SpFdxlLUQ7oDqrA9tMX5Yqbg4fO78L/53Uzk6jgxxMaQ7Eo6vgirHtsYrKNo+6vd2MB -xKerbTaBD1zcOcCE8aqn50kcOGVZxHZDo4dEGs8JvFQuftXOSjp/s4lZZSu36ZkOmLLK8+Lok3qL -rr27p7Ke3xrorLwygSNqQvemp3M3jyMukClHQpWPSciG9IZLJmO7gldWz8fcwexpHgrPHzEC3u7H -KepGhQLpICeblvEXSGE0knNL2DxfrujQ+AdUlAcF5HyneG38tDKxWuHlYp6BkKGmzGaMaR3qmisa -BhHRMYrwzhiJpXVt53njl74jwD24UIDaiP4B6KnY8ug6gIC8o1yMTk2qkyj3+goGohAe0wwX5pDQ -KWza3EndIvJxdeRvwnbYaZhM9uYMrkXPc9WVQL9Kt1sx49F1PC2SLw3XdY/U0ET9uMoXx7E6RB3a -zEbUSqNV+6W5VBSHhW0iQnA6rslpwTbyzc0S862urJh7t6ovxOcOjQAM8U/NbQ7MPIFfzdW37r1/ -11pTLhcCq3+0pgXUbndzToZEVe4uwGUWFyzYZ2ZVZxJuas2++zfm+9NF2DBKdDc1AtzEgceiPtvU -H2yF7CfGBU3FGf1nYA2O6goEvDSQhDrH+f8Ob4FGlSZ3PI0bkmwsJ4rP59fLfb0JyS6E9oJmN4k7 -o22AFb8WQzQZB08h7Or9cZokM1x0y0iG0Gl9Kpcy2DeAu4kosri7RLGtO/clENDEBgTE9zyn61XQ -gDsF3uS0bswPL2stfq6aTN7Y/I7APpzMiOzPXdqc2awxKUpg3ZjhY3rc28RGhzzORNmMfa3yU0RF -cSvxMM1S/x1SYGD5mjRCgQjZtIcyNVQQh1IGgsQPoFQqTWZfOljYHYp0OLrZcln3zf1gHrDOEEYx -XaI4Nw0KKFf7JaDMo1l/fKlwfBAgG8fYRWizqFRAZpYGvrQd0CTPn4OsjORpGFghEvCZB9Ez/rG3 -RFAf0XMJumque8imeREX3s6QuMvvSlF5jDOd/zWUdkJppAMqEzCYGN7BgS1TDdtoVTteR0LyTP9i -E0GXzKhUD81APAn+66RJ3XRKBLacHkiF6CuNybIBqkwb+vBBhFtiYjI80gmrxaKPDZaHHC9jI0OF -l1gX7HExjzvS5NKDJeoP2ryIM68jreEdliSXt2nLp+kAJboxfqOdZx+Fna7MBgafuE/rK0OHxNcA -zwQoHAOr3S5efL3i7XhlaIOGdr78KYKqWXLBKmEd50m9VpfmoWvJG888yoQP1Wgt1nZVVhcrs85w -LHtPI5/TkK5GqE+0HVjKu3Y90VBxL6lJHS1XsNwAQJ0ASS0dO5YYqKNiSEpbYw1ecQBhzlMwFF+P -3VHbgIdJq9N6Xgnn/0I1uwGXlDFKlRX7702SbDItJxJ1zo8EsF8/hO9ycnmdsiss/jQSXPylosrl -92nwKQSK8HfYOwh4FeD6wwUpz24fzdRtDP1e/KZl6lS+VeNox4DF7iKgfs/hQlX64AAJ9RE8Iw/U -r3jqCx6YrcYwJNQ+2ebSoLxm//N8gPclVIWoPDGAgzbcIrW5i1/yIfP1rUvKCLGq+vlTw8nZsJvk -tpVsZAZNs9YTWyvZatpnxr2UVm4N7f7m2SJBDRDxVyDwuAuPAg02/oS6Thbn+WmDQxcirYUy2Op2 -l3EWOn6sOzI1csbQ1Pjvtoe8wy6FgRLPF5e+MrbqtbAVRzrlfQ92PaJAbT7PMutAsTjdlPLou5pZ -MZMNIYfw/AzWi6NaORobcn2groZKNtYmOHgQXhVru7O8NDkY3IifSozYO/PN2gJvJqHprnHcmIG+ -f7UcueckKwK+FNHqqc6K77AXLX+tuES+T1tx+y4+JOl56si6gUzfWAQx8sYDqVo8N/m52AAHpVW7 -h7YnulHnXoM/xU2fhVstCKX0oxbII/dalfuFuzwpfBlwAGk2pUPa8MXIMwXJhHuwvF+CjaJCc0R4 -B7MBUCqKLZl1djaFOLSGf+fN+xP2S0aEIhnGy32/XogWpM7vTkLvVCQ2TELcYss1a4pXepRPmPP5 -g7HNd0QYDxTwbhRISDPxeDigHWLNa3QiPSQQUeLhdK4+irkUv28FoK4NUcLimb6+H+bv7ycUoWsh -u2/B4b7DtAPaKzsfKFFwMFvjAKQU00bCujAmpvmdGeApQHLZLK4w5Tkkt1CBAfh8UZ6djsbVByUE -GpSfPi/E2BIwtaV4z8Ogj42WXVxAsjNI/NFEWcFt7aoNHUlZIjV/JtNa9HKX5+NU2fkrDt2u9Bpj -A1fFCKh3MwfJt0KRmwDxGegB85fjQthza9Wm7DjsKF+6O9ii6+b+OEoXxbfykud6pHF5vF4pB00r -1LWyKtRAMmkVuC9oZjzxDLGZ3VukatHaRZfl51fXAp9AqxY6+QMG5MC/PNok4b2ikxs839rR/OU0 -0s9al3xSkG31b4XinWSs50qWeLULeofoTGLPZeLKC2mP8W4qLWvIWoPX4Q6mE92j7/Hbwhjgt6xi -lTBjZBQpEvcSdCczghJfrAQTGfvuLfXyw0VN/V6evcSqhq74mBV4sfb16C3miTxQXopipiwndrPY -go02/UuZuveQ5h6AU2dpprn4tGi5XbL4Q3wikgtITUJTJLGQJk4DAYDohAWiz3C16JdIS24HvfdJ -NnNzlowLFP8fnMI9J5JzBGpMw/el3+sMm4Oouv9ZyegIt+XwDNRmtnjYaDXibFCQIMoL/IlrZZwL -UNDILA+w9PUihPeRSSuDWoK/9ThbbvKh+nWZaARxpPKd6iNAqHBwTwURG1oAjal/5YS38X2kNXzN -59wUkBW+P7dPMd+GH3BunDou32YQa+E59oWGyScmwphu1Y4esMUktqTXAyAQo6x8bZ9CXlHJbnTf -NWOIrfdmyii3GL4RPYkQ/mK9nzy2ffWSJWtkymvotmc36sQ4oAP+K4UxWj+qMH6F0KpGOj55Sw+w -/fLjRbFxWGg9+US/Ks2sBJPvKVacqPiqZBqYr63vgqG9xdYwDNEF+eFOMN3M5/375hXeCl47MvlC -Ixgi/DRaq0kCyI1wAbgHH1wR+3W/wQqOQQV1WILcC+wV+x8xmVmK558rqhHKejRyEvVSI15bvIv/ -RvyGtTJa3PqylaWLIPnlYKxNSqNnXv1VTt0aBZyWdpkvhHWYL2RA/i4EmvgvIbjUDeydQAovbiZm -QJRgPsOLBk3gEwJALadGs5jmjo77TOwj0ka4drUv8r6T6Z7hVRsJOMcfmA7hLRDFduouTRkLTmfK -Z1kLhNynXxBsIzOcme2NsOcemL8Fjymgs4dP0NNAFC1K29m+v5EnuOoxKLdRiRZc8XR4z/muKtLq -AeLBUHncZx88pf/E3lTfRQEyJpSFMHRo4n5bnBB3TIadp2+yhHH+FwZ81UOlhssZ3j6HSg9/FbjN -QJ7u5b4JIdKrzRBtcwfl5NwUZ72GFCobXuyFGZMmYQIUh2s8gXsaJiR8pOg87JmFrMl8/2NWMxDV -qod0PUb79J8bCgFI9aqljBfpnAIjboSSluv7t4Tzio5flYlqzZwMvrztpUiGyDfWIHPggoelz/rt -9wL89jbz1bXdC+btt35mWO2O4oyIXqu44tzi7Nij+we1HXsWoW56D3UBZbEYL6bLJzjR6olIoO9K -iTU0BER9+Md4apATtN+/+qfGwSuS4E5TxsbpVhqxOAFK/lAsHK7cxIWSCdXCD4Jvdfm7f7ZKhWum -s+2s3faFzxfBGiRPpoGqI1W01FY620yV3bo8y0rL7zBo7TyrGQgiAk6uJa6Dlc8nsYpa9QEzbHC/ -zrrzX7XfkV/V9QcbYTqeVHOtXhbaqoVxhb9Umvu5bjFBRHDG/88HdSZGu4Emd62lpfCH7Fw8tFxQ -9KnVfZo9TfUJH1csoVpOqxWGG+K2H6CE4fRMaTCXG/sGO8SfET5HCOGlsjvABSqI9Y0vcXyPrxMf -hJUzQmYUoeZhsabFUtncOqENooVcMvVFEo9lXwE4USFDm8NnQXNyqwr+SJlUhG3CbgmSs23ioqu3 -e/Fmt5fmvCR6XiIXZ99dmQBf5EbvOgfHldejYuKHPORiQkQd7rm579vdOAicGaxieuB1RuECkhYM -8ReyF0Izxvp4vkpc0jiCvLGlEMM7tsFVh4l46rtaxk0tDHgoe4Qb5oqqcZRUzhCfOjhOZnGP2mer -KOzhAiLxRLdGn1GCiReQA7o8db51bioRmrFVCtv9GtfPrw0F4HZqdkuwwf4ofXi8uVpxNxPctQIV -0mrJ5E8Satc4+RLbU3fsi8bS/Z2fSDP3xBOcm9QJBPQD4yvqcTXoxgnRn9YEucXSIlWQx0PsMnHp -TnF9WWdqhgaRd+txrJwqccDt3fXIAOT21QfMr/oO4zibK4ZwZUvHDrDsLzbs3EhoGuPrLiJuU+g9 -a++MpRZc+rlCYhlM6vZEIdQno/y+I5I2WxUSJP5pWFaspf8wD8MvNd6TYi4s4Gi/2s+ZZj7p2h7e -urExT/tot77d/pf1az2h73d3o8/vYvpEfWEGMis9g3TpQUQKd8hxnd5JDSiulTlUaR98KW79Wwsr -QCaOUSTMGnFpPnsVs0ZkbLYsjZpyMOnfjB/uz7WvslIEIZMfKBTeMqX3gJ+HM8w3EpqZaGz80SNO -XjZMP+B+LTN2CBUzthJvLsgPfVWGQ5D7oNDZIXIMV33fPHS538f6qU25qeBcUrKvoNIBKPmKA5+B -Pq2WMjbsJL9Os+YiAR1vpNQeWaQuxko+RGkB92xGOtg9y7eeNKKZKDPVfXLJvByeOtALLA/ySnWx -spXygvQ1xIoATPRC5ya/mItqU4KuiBgX78eT0ouU7LiPrj9wvfTmjMfgZ09c+20mz8zO11j0DiDr -Iemk9U5DGaQTEQm3snC9l9CSZRIuGJVELxK/ITl+obckzIMW8Xxpp/1xjYtd9NxJjH+23L+XgwO8 -vfyhZ6yBET/WQM+sHUSiLFIcZPcf4ch84V3SMXpWG84wS9pJDy0AjHo9W9bjWR25amvECxag37gl -BdDmsrVbCeKrKP6xv4OCaUXXnqi+Gl7Vm/SvDs4Wq9ubUDptGLjoNYDFCRfdhTRiSWed+OLuAHwN -uPM6JCd5jR3j1GeNPCLyUbt8LVh3lFU8z5b9DnFSP8Br1Akf+e1xSzcfp38TRVfx0z4ZtDV9pC0F -FdkkALu5WfoK8HyzRYdl5Stv/QGmdEOoCSRphgDTN1UB4MC1YEfLhFAosUtPH8bxplG7hVbTYY2+ -0defgc0lufz3O860lUJMPwtkB4cHzZuTLbiwKZwYy1m483ym2R137FOixUCisvxgLfTIBD4pOIB7 -t8si2nePBZinm5n8V0xnlo8F4fOEfuU29yPDS2y7+9DOy2Anc6Rpo/Qp8O2ps7Y6o3TYiNxTKwiU -2JCgtitDi2wrblwyqbo8rWBD0udZYjCJM8K6e4ToUtaOYEl7pmJR0Uv1kAuKupukUh5EisHEsnpw -/KxsJ4zptF6JKPlf/juwlN5pdpdMU5T+P2cmVgoPevJz17kymFMmb3DlGAsF67EwuyJbyOdqE/71 -+rpOk6UxupEsDwzOmddnGDub2gB8qakLmYN8i7QGZBRMXtp3eTuTUKerSkVKpyIdywMv6S6nAzW8 -PprwsmAdoWJ3aGKYnWE8gDqmWEBIlHA0z7C2qKxUuxHLtgwrbNN5ZjzpyoB4N9MqlyKLOg/iSaZQ -K9w1ZQnvQEtSNvzJlAynmwnETMGVhitKRW100Dnxy2WYJA8XmrXvNeJqVWjcgvhDihbGYGwKyJ3Y -qPEgjXPChh4+rwQOar6BB8PK1DO5TCXb5B/76UhOkY0h4uY60PlVnwcB4HebeRfOib0gnOZOQut1 -14Sg5jmhDAoIZ/weihmebgZTNngi0+eIG+OVZHbekkEpwLXuL5MKKUxiEPaEFMv3prpMEp0vyqSs -3v7uLsLypLX87GfXTNTSK4QN7S4ey6nQVQcjRYnzPQzBNLOVGNI5Fo4Qy/6z7POTf/1yvqemYtlz -d+j5mfT7glSxwb6ZPk2vhPm+Hv2kkEXIapn/38EHQIQGg2LeShauV3mEemmY6XgcYuzgJPlE+i4n -KM3YRtoAgObRf5sYbt+MrxvgKZ7XtgL3pxdhduyq648APSKQDLsbHAuNyTYhpUKP+MHGyBq4HYTt -mHWoTRTRVe64ouXrhGwBBRmarv9eFzl+cyN0GuFKcvuD7o9xaUtAmNW6/WU2VH4kL9L96Wr0o2+A -tvAXrnRG3otxMzksLRpLbjj9pb6VWesZ/8XKcgD1e3BayIUjSGG/VAepjGeeWLefeXXofsRwFGCr -UUnSNxE8/KRTHGlllogiNCImTG3Ss+S3ZXCCgGRkX92a8Sq1/rdbsNLcOUVGckqZs9H9Wi8ptNK9 -V/nNWFb3YVoCXdxK5vAkScqm0TJzV/iunqeDXi6CA64WVriyxa0/ZTZbZv9c+QjzCeBp2+4rO2wL -/U0MvmetMqbQ4vNa6bDrEO7tKCPpqi+NwS7A28LQIwFF44dqJWqjY2bCjgy9v1i6EB3h6amo27Nq -X1SycYzdRIvm9lcmg2ugQXyGgPMpbEn0Tbsxr2D01d3OwdkJQEejocLWjVNjy2zqbL72sEZT4UpR -ntAXMHgW+VaT9EqOueeRTAZU7IbCnbqW2Ojl8AiQM4bVDL2SKPdmI8k4227c2REVYQJgbduAGxx0 -YDa5paNMmQ05IgWSimrHA1iiG5IVLm1NUa47ZLBbWiKBrjRajysxwrAyjaSinAs4bwpnGxc+v/c0 -z1u0IB0BwMDEaYH3yTjfQfK1gYCU5OCEdlQwwq1Qm55Ui8RX5PUpHPyj3Cosl5oW6+Xj8BYJrPbL -BuT+eQQSUi+gyg7ickmyhwOJY7Xp2C47ECTKALKzTmluL/k/Y1Q7zkqzr3WI//p/Ua/HdLb6suIg -N0MQ9u57uQgqnCFxKBtqN9k09QPyrEc4qFpVWS7uYRd4GSS7Sj+iM2M0K0IW4Qnm9xsQaTni8ehp -uIlLADGBKfTfU6j/kWRt4O2+30n9WQTx1mtpmp4hdqQQVkWCh+H/MrpuuR451ggIMOlf9ZvIkJa/ -uvT7TMKJY5jtAgGOC6a2dOftVMErGqSU34DwTs7QC1JZ1mBXCGUI9XquyYgsH7QiL8YLHOD0JeHq -2EGxZDxqqwSVIkqrJNtkk/iFotFo6BhVZfW2zePLnIFaWIuVQy2RUMCgG9PWvOXMq6mXGPP2/WAz -GXTKqPHj8/ozlWT0qlgnuBd+DFC+n3LzRlWsj08vF1P9/7Ctro4cTYHu8XZYFNNSH8y1m0QbJN4H -ZFYAWUXew58Excq29d+hfP/AxvrQ94dyrjFaYHZHEeq3+StD1YlI83ygH9T1sBD1q6En9jEd6ySr -9JiTLsLtHXKGsoukcEJETyiT9WWN+Xy0ZNSzf4mpfZk8W9xD6bzZLrR/AkX2sKfmMGioEYrXrKP8 -AqTRqoJ2sXxFmRwDeYYUepabckz1sQod9OaTurde1L2y1aZXGXq/Q1bk+gGmrIZmwfdcGlC3y3mM -fjVJ01vvGqbvIOXI7jWLAi429yVgXb/rNuircIKjmxgK1Xz62ZDq6RS6nj1taExh3JqzpczVUTA0 -BCwk6os2SOn3cik+Ovozf0OHwwbUBGruzq4M1IeN1Guz4GyUGHw6QMnkWRXuMPJ6pCTk9krlrTwh -Dgf59NREI4BIFPg9TPo1Pjw6iYmqzcgpoEcuDiO+OverLCvINXuQ0WS5y7UjQXOgtsJ5kIwEjBTL -XaBxozAOdxvOYvZrywCU8/BWU2Fw2G28Insf+HABjH6PXsszXOkJvzmXwd/4sN6U+QxP56NZ1Iwb -O9HbqllqrkqMyxm2nneO4IwXZCgzj/On6P4nhCVpCivinxZrf8Ye0gqlg1Y6i7TFMvOWwLn/noo8 -cPong0Qn9CLeKr3h26OwBqFc97nLMK2qBlBhkkZ9+B9+kkdBU2gcj8S5KqSzWyVOnqXX3GonVlAf -1BVPyZxg2HdOYj4Se+r2jBsKb0Kc3E1K1HNUL6rQD2AFGvhvl1xeUCsATKTsV/tMI+LDfe9CBm1r -aT9rFxVpUkLEJSJfvkqrlaVF3K87sWN3AijEu15cHlv/Zldb5/1kNRyfwu7vdJ9o9hb9VmjUYDAr -GX8znmJ46aLGZoaRWMCWGn6/4x3kEn8NP8evAeppx/Wf64RHmEO+F75zQ9bnUUJE6+k79TXNcVl7 -kw5aJozmmSmIF3+NIcqBfA9OJCydSRHf4q5UqbSwBLhVeO1EObkEKNsIONvcUuuoK+YkSv09NSrm -qiWvLgEn+riNmfvwNbSZO6Md67HUN9YyA6A97sL0VRHjveh4dp7xDDDWJ48gVcdEF+EWzBUBBkY1 -fmH2QzfrdIchRnUOjRuwTzyGtiHX+XjCsPy2bx6d9flprLFaD/y3KeoPHQyfyZVZbwK8q0u4LtPF -DOZx/l6Nj+mJTjrBZyFrR6VbhbgF92T57FBgL2i6HZPWpDaW9+Wu6kGsRWZgqRBBSxoljgYs9EF/ -rxmrIUP6E52C4p1oh9VJcrJmugo9OPZ81/3YGOKWgq03rZsI4KyuOOU3MSTcmEP+c1bhRfDpU+cJ -YnfnDKFt3DAUxEANYNkkrFwF7B2jOZxr3fZqCQJKYT3ZlGRqAZNbm2fxbwVgVVUpLt3NFvr9Seo3 -pyY6PLiVZnhnoeUDZ1UxwC4gCpzeKvZDylo/CP8ZalnJ0QkglWIEokWn1dxzroRjMhxmo0JFuriQ -MPADqGmudWVDV4IZtJRkG/gPZ3ywdxZiwSO40uMmQ6JZpIJt5j1DnC6Sc5wLZovkxQ0HSBXGZwal -lPbBgRE93hw13SFip28MePaq7pQt/irsH8nxAM551Y1fc+Qg6awTYZKZgVYFD1lAlIIGHKoZhAj5 -j+xXqIAFIxGQcyQ8/GXlxJWYpoiZenhlyoASn6S7GhlQlzHtDd9gX9kEVfzygCPPwId4xa4pM1Wc -LDWsvhb04KBD7catJBluWnMEwdEAeBb1+pR0YttGV4SPrjsy/UynaQsWgOffOSZgLP5/G+hO6Uz2 -Uwi7E/uUqDnKY7d45Hv/I0qqMWUXBtZlfIe9voMMB8LRiim00SG+MbnMD2y3SufgLP/EcCNxDTPU -du/iERrfvzjlq1omEZmeCcjfaDUSfm3bK11t4zRkejzdU93K7lGa83Z5byl0/jAj5wndfn9PsxeH -K8Op26crNfDcKnAG9uoFu6mwxWmtAMPcJx1uE0haYDJzVtmfBbxiRGP+oDk6iOKhqhSZHKLhy1p1 -+RgRzQaRTO+e52untpZtAOMEsWyaM6Pzg0F1iGa1RYunKNpqdymxJNyEf4jcYgdJv5WCddQe28/4 -zaJjcvTvFxNLSB2Zp8tuSnfRy2sPdtxdGvk/TK5pL3hG8ZPrbE2z7Qj7OdGOIxFJTAj/vYN8zYnu -Rezr4nebiw8Js6txmiIy2p7mpfYDnfKYLxs0+GbWBVqVIBWCFrRZbpFyU5zhA5JLCCx54LEwXZNZ -DufuHiE9Jq03WpVV1vzMUucpPhxPv/4lBez1HE9RfMT/BH3EkKq2lOkSLvaQr+1FVSykOgJVThU7 -6/HJalXHQokVihiTovBTVFzsHyXe89oGoSuZRqiuQ9r47/eIv6O6x1iEQR2mLtNM/mbg5XqcJFCo -/QrJA6n48sDQvleyFSAJZ3Ppvl38f28InjKaMZGsoeY0DWVeYtdd3/Ce6oAZau8TReRipAAQ3vff -77YqJ2pqeDojlwlZ22fkcVgLXmwLAfzeCpsoSPkBKuOqARdRjuk3250VZz3LqV2+Zxqg38WXp7Yf -C6qw+1Dav4hLuhX+8lUfKK0pFaGytn9TtZGw758UWY3lIk8dOADCwGVwpMmNJvYrGOjRLrKM2/35 -0UaJoFs6DXcwHdSzLk/bsYK9Oyw2fLahRt9DEb6lthyJEcttjNejeggzLwhJW5asWFVAboUVwBMR -mu0TmiKFQXn2VNSCYwYCOqgaXT23GgdFt39hBw3DhpKAyiIB8NtMB283NvHOjFnF5OgRyqnNOlUN -RMHun1TmPSc5Mtc0ZS3/F6XCJUteMCLbXRyY0JjfseJYyq2WynzgbKe+vzmnC7Hc3BcHHl+0RO3n -29pfoVQfF6yUbSp8qY1XAWUCEk3ppqwC8B+fWIvUFXzZJjjvhW5nLO8SAoVCYZ1LbwSzqAPI5P0B -ggZIEXOBRoRbaUiVf21a4e1yusyjEIUJOUj8OCpwPYe/znp74i3qPs1h82Da90zWqLS6b1D9TEAf -YZj4p/MaXUH7Rp5H9/tW4mR8sQiqR5AKrhV2oMFd9/JToucZKj6mLW7wLdPsJNut/uKGzMJRnALc -wd6hXtuxd97zf3fVVECDlahA1hyFSCPxkXm4wwGyodqquA5lq5tc4YVLLxNF+nsDQ1vYU8ZZBwAX -HfprgkVh3foTcf9a3MiBtFp/SU05WrTzwkU9qVlhtZhJr0TL+u4U/wCyMHw9IgAL4+4JLWb2yyfP -zbKAXSjEw9FIGeXRml6ctf/67GuTzNZT11/JIwEcUJU9Nb2p7fBwgCUMbzZW68ntOvZiSKJmb+pU -751XXaZBZa9MTCCu0mQHptvqB/QEcRxCooHHzhwkz5EgoBfpl1Km+i6KTbcNqb50fFLPVXo9uBLw -b6AiDDGrVgU2dAMv4t8K71aQELtuocIWcy8kzeESzLPzR3TrUWW2oJw+8YM3eiyb05XCPQLLGIMH -thgRQiBd+JAae4CH8d20wgp31WWMf6IW3TrNNHpLVyCNW8Be4iNoRhlpsKH7I06TDRTjDRW3icEn -+OhOaIu/dasCyCxIkEMbTwxPKFB5uDE6oNqBuX5zHesxjebRH5hmK8cd4duzWu7gegKxotktNN/2 -WYmUU91PtYDdsK86AOvnyUeyI+k37hJEWeMWYT4OUYVH2Cv9TX9cho9OEHsCxMMRqca4trDpNybF -YdrDAB7Hv/dPRaoTwEtG7GDk/Ndt3cVRLGrkbHIiTP4D6hyAY5zToW5KRNXSoF++I9KYn9p1Rht1 -I1NajySaUQXr9F/4bW4KDmV9SMYLJ53fGgLJd1dsgNqlr7SdXVhBtu1zqxy6waFNtk3OY5CBsPaj -jxNnAT7VwvauB9VqYLpgfAa+ktw1y3qbMWPrYw9BHtHD6c+Lh2jNwByl+aWUtpXI81sCnAo/h6NF -83RtIJAa8sNVsM8ugtQLIJBWFQ36SZpdZR4DpH4sfnRWHc7ZokpuaXYRo2TcJylwYEjDd90JmLyI -PdwE7ODGinD96Vep7/ibAlpcm2gL5bLKAKfmezzctsP4/n8IZvJYFaygd+Mlo/61hPvCk9ZkkXQs -8ACCXhY3NwcE9aCMQ1aRmZhYLtMlmTeRbd9KkhVR+fKXjcN070YHFlsPCR2Y7qHH30QITDikLkiI -Q+C72brNe0kgSgQwfM9Mm/PNR5PVXyNh4TF9/lXaSuDEDNVNDrENs0hiDm+4LJy7UBRk+B/OnolB -tqJ4dtLeQAscifs6IwNwpYOSKKThBBJrCto2PIQBOuLjFa5EUrDljk+cXp1QnJ1+txRW5nsX3U9a -Uf4n6bGcqEYoTjv6aR3E/mJN9ADmTvCIDLqqc6dEUbIEUbeiyxdmVMGaxPRjSj4G8FtBYMySvX8N -3HvpL9jpxXzgYna/MLompxPpYI2dzUb7KssqUXt3T8KeFyqdAWGf4d6AAbziz/K2BCtJpnZ61KBB -jM2GDn9TBNo77RTyF1blGjafDvWDAeE1X1jO7VzgeJEzbVS0XtlTw8XSuwW9BJhtxmaMrdNzlMDl -EwnWpNnfC3S7j6Xw4VV2D7xqvSU4zK2JrsQq+nNSqW033JN4Tt89Xy7RaOZWQkGonOW/XTNgCQPN -JEevCWAqBgVQDoM82QqBYNR+tpT5fKKVkB6Xec1i1qujG1zBiegLryPtHBuVsPv5+/NKvTnJ9HYj -O05T6mHHFT5z6TAIjbmTzDtEzWkgie3BlzERb1bBp3XM11j7ykOU52NCxj2z6G2w0rMPoXH7AmGx -Z559Fx8mJiQbcFvV+CNdE95q8TxUAl44HumT5qKtgJ7EettGjMUdk4XUY3rSM7SuaAYS3++r3BEe -51Z29nJ+96KA9/WAUaCeGegheQjkKjya65OGzaHxJ7dX+Zst1jyW23/73vc6DoIRi09nQEZXqkrh -EvRKghiUwHWw0lQSu7QsrjvvN6AiK6YGD61V8zvvZFJTfy6X8NOJPwb8oqpznSQeGKSDjoRxLUrw -U33uGJNZhxk8CJODges1CMxhgUnKUSJ/3TEFcrWI8VmXGB/qViJFKqGKUfvWYmvytn7gDT/K5Zy7 -wmBAkBLQsss15sxC2y1hP1F6tU/+eSLAkvk/y06nSH84ddDNt1c+WodjCf1c0Kstbyd2CLuLZhOV -Bgzq5rlftfzGSOWA8GanX3qd0xIVYyFkmGDbV+NwaPGLHMhJWViKQlxs7JLK53PWzRNp+c5D8h6f -y+vxyjhI58SJR//FRWnJF3X4Bc8OGx9CWiYj3t8lrTXlMTq7uoeiRLamRkllOsAwybc3hnZpitPT -i6IIzAZUe/Ii36jKaVPjFZONqzRulImkTA3ClyrBJhiFQ76uNNPvVyJIvoCl/l0b++G4K1wObaqW -BHXGru5xqzkWVWq40Fcl91lwoiOBW0La7FkICCEO8lgtKl63UCWUhjzep2bP3Nst1RcL4/laH1ET -RYWdhAviUwmBwtLwJlBy5wVLJLIkalXBinLWpBGXmMOkagh9RoJom9wYFe6nNW9s8QxjUR+NGFEz -bLkJdzIw0eU+1aQ31WQrF9AQwjGtIv83JBVCtN8ki+XWBM9wxH2gomKA8MJbZpmYBc+9H3Wb+VmB -VJSjl05YBYA9RyzmGSYWIvGl78v+ebEfQIjbv7b70oaT9RzVwkic1Ody6hdF+D43xFa1XgcdaQlI -/pM0r2JbR6zBahygTMaLk9YgokSTwcaAtkts3vgaQAOp+7Qvs3vbMBpYs9F8Eem3oa6auwCxFdHu -wuZ3DDi5qAQJWdQxcfu0EUCwZfpdkK3orMK7ly0M0Q8ctvzXzN4gtqyehwVo44oUamvfDJcTteni -Y0jm5vf4sVp7RAD2ozJ1rG+Ucm0C70oicbJZSb993FTFbqHg/6VcHJqnoaRaY1GVxCU/jZs0cwyX -r9No2UboB59cqmq5CGtkz0ACvzG6uTHB2G7zCndJldy6M1awBhChIRAoqqimtD3aGgBwGNKH7CWL -A8zdge1VQ9t4ohIwdWZNt/MIGvDO/jEHn2dTUtmT5VXi1wcPIZPpo7d+8mBThNKItEXK5DXZj/9B -6O9FyoVssrEf25vh66fGVyJJZ574zUIl67vtZNa8hlJ/cRvwpRk4Np0owV6kJa6Qiv2HVvw2EO7a -y97uwJcW5gnh58dBb3zYOdBVAb2j3BNUou7Nk9f6/nwtZUvhAvrIWZ3b/rNuUpdzSE78NZqa1yCN -GActPxeLcNiGFCobDB0ioyI2kj4aS4TPvMXpFkU1mUTWkr6UrQCnJwv17lrdvfbbCVKWXYEMdUd4 -RXDY/B9Io/Q63EtM7tB8aWLEzMnOCFWh6IQrvtwkxwYF9fJzUsO97c08Mczip5jwgM2T2zw0Z14t -L3jJiYOCpoNeNRpdkyPyAa23iKGmgoFkeXKGUvS5zHipU+lyKRYaeGKjIDicleSL9MUsniD9zbyG -Uf6aJm2iziHlEyq/RV9i09WBkoDquJimd+4vyKVU4zcDoha+ANNgA5ROgUrorJ6jj2Z1Tv5ILRgs -WmZcjcrc6eLP/nDCnvgszYDVbrRp0E4wj5d8T1ROWnpX9qLryh8o6Zsa2z/8JWefWnik2g48U9Wl -yS8E89h1J5FQvLDrEWoPi6aa4/s8Q9fSv+kRdcEET/VV1R59SGiuue/zmQRiigx9Zfqca7+IBIx0 -dFd2KO2nRC4/XpDdN6LkNwR1C2/e8nn/uZyMgZA/KUM4qXTlnd1EOHqZoqSRscziA4+5wk+q1b+Y -2cM+6aldGon41YCuzMNxSl3EPFq30ZB4phIFExQimsxyVZc82y81oi3/d+SGwvtSoMeINOjE2sp1 -JTQol6rDhfeL3PT2X1asNCbWZF3XalCMCoz8Rcv37tFIFVlClp7O0CtpPVDANAGeOTFMaRazrYMN -wYTiYqQyKcKcyJBM1y+5Pt1yQp+NphmpYTeZrWfOtjCAt6x1CINfHaj0ThmZUBqMDTmm0EQo1BcU -v5HDPypDKOeNVbq9+ugRQ0GCXt1gpaOAL0FDGX5EeaDsenoPhBoR2Byf7f6e9RdCzZ4HrfWdwc9N -vVz3z1jnwiutDfZgLExx53+LbyjO+qGk2JZV1hb4kZqxaxaOJcGqikZG3QOMzL0y80xrs17+QLtm -EkGZOt4jBIyStKQfiRfe4p8i8gYRjolJXJtQ6KAEvjk7ouOYu83Sxa16WvM+SmsnMV0FsUs254kZ -0RHQCeHBVZiNxXDZcZde8eCf3N42/cZzN8oslAi3eeXL8hIAw06yxlX2QZmExucpprA/mrxFEzEE -nhNs7zagpSxAUgCx/KiIzGURzd2Y7IweVqBGo1L7kOeOCb4ppgsI+IFFGADTYXyKfHQ6sjx3glmj -0dQTjUCUXfWHNpw/Agmho4DQEMREo43bcWgXWGLglMGnnLyoSutjpZkviyE9cUCGWQ0hnHskOhuJ -I5FGPAN70S7iNj+lQq0usB2wkIgvq+ATxJlqHI6EfxBTirxbkuKPz2SACCTT/edzQY0p/AYRIVBf -52te/fvSk1E1l1RdxdxOZt5PbwWN14pUUSjJTr6EYuUmJbBvMiPuK3TBQ6cw7gx9Z/WTBwVercS7 -CcouROPnHvvxkjb5d6OnG8xl+yucFlZcpxVehfZQ3DBAGlV5WckScrH8nlzERuzFJeELRnU+fKy8 -vIR1hF9dwJZ8L1kRFuOBSCjCFeBoCbi89DDmmlpFuNzTfmmxJH9xzr8oh0XdtoaPtRIAwMYozOB9 -/KoMSHMdFJNUQIdr8h6nVuYiF9NETes+Vw9ayRhAfiUXGgJ5l6taYtsjXHvkoBT4OAdJi/j4L8zC -acNSCJsdbEHFzYi0DhDLrpiPV+c5Q04MUHOgz0KHh4+l9+BeclMcUA8LEfAZ0XqYAlbOvY8xr9uq -zSGH84GHRZej5omLCwKeowR8LMY1mTBI4KelWa2CziiU+cVyopOzJzfoRa4ETReh8yLbGO+XA0DB -4EnLzR7jbfUIsywZAE5BHIb8cE+frI/RkpY6dlmz1VQmDWxuQn+MnKqctF8e/5K5XGubZR3zU5o6 -Uc644I5AN+2OpoVEh2pEY5LCygQAA7wjxepk55BGyblnPFRboMBayezCZvQdQWlt0ulWrda1AOZP -ltDnfxt3aGRu/5EuGLsbpc3SILrm2M78tb6Ecmw3u3czv+Q0qGeJwBxTbF2X8mjq/I5QZ7+wKF+g -hNr+fOOx+JMRTnMxyHJgn+LK3tnolAeHQvmJAiG93sj1pPUwCprgf48wPYwGJVo68l8Ay7goe2O+ -aPbHtgr6afqjTNbwdrr5yIHJbMYcbzMSVt/CJN5UnDzGt92bKYrs3Y2UbLSEyezYmi2HjZjmTg9/ -mAJCxCOrJNWBRk8N/LADjGXy2p2dmWkv6y92H0GE+5lKwOy3gacxobsh+nNY3sc5PLNMgAIuhlkM -RrAdHzG/hePUpSY4aOC2zTX/cYDbenlyn2FqtTIaFNy3oK/nHbzZ5Mt6h/Ea9eOaH/HNy9b8i8fu -/Ui5KCd8Mk4hfVrIoJYKFxNS8kfDZiR+MXvp9nOljIVmYcNj+gHVfO/Js1K4cUVcX5juMei2XWpW -ohjoxw8Heg2ngBzZugNvuSLR2drhl9GYRRf304ns+p4AVQKVbPur0TxYh4VFFL1xJz0dXd+Rc3+s -dOksJYBe+AI2D0TuVoYVP3XKLMv7fu2qRRAxhzBLAWaREEnBKz25Wj8gpFyjtyEE8vkH1Z42W32x -eMsQnJK78l/021s0P2cOS6NAvc02JuFPU6Ptt9d0oMjT5dtrxVnf3USsrxSKgL5IjotXukA0ht/+ -vMRUkVGcDIKFFp/q5/60+gwKRKAuWRamDU+ATE0CoYfynBq1VAFTS0eotjMc56ps0Xjk+xuGbRGm -rus6fE/SQVf8TcbCAkfmGuygYFU51LxsTAVkVg2D2cysAAjeXAfZLbOvtWo1+uqgDO7T06gQJcTF -gfhQjYN6Gw7j90Z8RM9Hf4qf+2vmiVL3HpCJQen9utQduvgeezUQyHvexK0p2T2wAbkkvzVKVFtE -0H3UF6XZKE3k+/NUDjPh9XEs2CBTP3D30F2q9dCkDOdhEYXDAIKb5oIp0Q65F0lmUP8OJ5l6npEX -y6jF/qkmbm6hyXoGOUVR6BKpa9NejFNi79FsSsaLqsFpD0U/QOAAM3tIrS3EMkcfTMKZLZ7cQotz -IHNkxYbAGDMdOZ34a/TX+KBR/jT33Vb6XCU9W3eOoTU912LxAR0Nf/awh06+BBOBK71tDH0w8OTH -O48fDIf0Rmr27Z0tNLTDJKmYQvr7RcRwV9ewIdyIbXiPAXasXkZfFhFMuPSCB5Cur9KCWCNGxu0z -D/fa+51IQ1yiJa8kPbV/mjRXx6IgComy2bN2t7yZVs7sUgIWX2E70p55d/g9I8bO4CfKZ+9lhvt0 -mruTNMzrFxu9PKlSrLLLP/xbyMzjhM6mz5Wkm4G88bztC3LpPmYgnTu5SA6I0nhoY+BESq2SQTCi -Nq0KUcEy0TqGa7aA0+taU2U+v6thVZa8L/xOzoRRT3mVJh6M19V24WEVY/xARpfvxyrLk5dxUfSB -1weMpogKw5/TsaqCMpV3ggWDeFTvSRv/5EhXgh0XZKVOVs1KtEsqEfOhwxvWkj08a8C8qxDe01P1 -YBp5jog5WGQFTdq+xc6vaWOWmu6ux+iE8DcHpwYZGINNZKLWP668v2PSYNltBWO5cHl+ODzzMlMG -fRHxn1eo/qQ0xVnrOHovch8n31WADFtdKDmVPzEQM/WfO37QcD8TZyiQ6oVZ18vWtnfdKyi2/z+g -Nyqmmtq0TRG9Z7DwJxUmOkIWEDWp0mr0kMxhmJDLZc++UDRwI3DP7x7dhkDwt0NECXzOx3s8nlWQ -mvcEbiiwOyBWr3XvzN2tc7xcd7s5YhpDSgVBfvEV89CuneCRrsAA06ay5gMlc2Zr0+qwLPjqhX21 -eYM7TZm9D9ZQ6S1HRmgSO4n/zFJFFp89iNvwkrH37wZdpjXV50av70Umrzxxkx7ljUyzGnPFs5Ks -C5EkGrDipAB0wApghO4j5QViiJr0dJrq4LQAvVu1VbE9zox9mBV99+wioFTujb4pWj48EuaCGYmP -2+6IXwTHkJ0ycyQ+2O8Xv7rIwIgJaJzlCI2tAAIHzfNb34iCHVDSkrHWz3QZOyGYkHpvVZ+Id4E1 -iE9hXUIcT4Or0JAavbl6/8KN1S3hvXmnLwTex9OapS+ytsK1gTF615eLOIOjr7s0klS71qSqzeIL -RJoTRJV8357+V/17JkPaJyB6Nb3lHjlaV8bbhn2qqsBtQylP8Ar2yYE4i8ThiYsmyPV+xAALy9ss -HHyGmYXctcf4+zW5H41eXmGI827d+o4XBmhTpaEYjqrpuOQ7tBcyZsbpg4PTLrpdsJV8k73R7juR -wOJN5sXGUvPa4hEY74bP2H6GJxgg45+kgJxvBB8M623P5xOvl38BjayNoEcMHGLr7Kk+emTjlkOC -hJdfjf8CVx4NWFpMCHxNvPD1I7HvlSLbsaIcIew4KZMWLm9O4PSqj9CREXdmy1cIwD9jfp19euGi -fEIXkphPwqyaNcqJ3ctZZX/qzwcDivvrkYkWlBXPfGTrZ/GOoJu+b3TgDIRyRt+k6fNczey2TSKG -mRYo420m+TXoK9zve6d+UC5ROjzrBjz4pCtInjlMG8Yc3AFKmwooTkdYfUO3iPkG7y/Sakq2colV -784ZmKx7tNNLOM5dJLwqsXOrbtSrTUIFHd/Y09qMuTkHG/0NNbO7fOmF+3hVkK9KtQqbt1EihSY/ -JxWYUMEGn9y8yzbDdc5tBCACMklFCE5aPzblymS7nFFo0T66BSfR7PS0xzk6l99NiOOH/MQxUfdC -Qp2BKLK2+U2tIByoLz6Bl0vlcfkcgtAr7HWEXZU6r7lqJm+keU8K+ghQ0T+1oay4Mwz2PJstO1q/ -SE/GYzAAzAmghyJDmI18mv7jI9urLQs6jtItXg3uv5DSEepkgU8AxS570ObKveJ+RiH7JYQe+eDp -ZmdXuGGVud/lyEiZJgsaQsz3MRsNQN+M1YlRdFKyb8RxO5SMeontNN7E6UqS5vMvK74WAevhxE98 -EMMoxpA58Ci8ur6TvQ8tAnTVoFRKQn9UNI5ZKxc+XVZZUC8wg9MfNo8V1vzhdGsZTVdD6GYoWElW -OXPBYpr2sqX0KYWk71ZH7XgTrHARzvM+h6s9DQnhD4ySbBKMqKxKwXRCePMAxJE6uxSYTaOIPdVe -vJmKc7EhXykMibvhJD9L4BfyzVeeNxT+P9hHvb4rHjA0EXn0JMYdKSDaF19eSCR948YecszO6fYq -L3UV7hB/f/w47fy9rhwfgn2yKasKVwkTONTn69ys1hGILq7z/dSsckMLWErfuRJSTM3Nop5jw57S -03huGjPMbqZWNMMJrvwWanNpe2Ns54fNU6Hyg0kUdbnxkS3fRioDQ3KVPLwZpG17+Aum+dGEi3ws -v9AAnb+qrQaCVtRSMCBtCkxLQrq2XUHJho/I7Ug38+S8fMZ4LwlhF8bkTvj64qhObqDQNpA3LZ9r -WyWhskhONZc3noKtOG33TWMskbogiomW0ukojVgig+6tS+y5aWXol9tF2PLt76zJixs/brTqVfyD -LzbNrECWuVOC/ASdrBSTIYeL8n6Qa6ccyt+Ro9uYud9y79P95o4UitUxZkb90ypuByhBk+rZ1GI3 -qOAdXV1Wp//u3C5mPFZhpKtNGZZ1mxL+SbGMhjEJvJTz6Gl+sRXyoxpSvH/Q4uXZmESP4UOp9m4L -feYIyWWORJS9G/lsw/NPE9+I1U57/JbjmQYuswtQSs0QiYQg3wMcRRtdLHIjlEEMPa7AD53yLJzC -5K5MDhFCPZgarvesHkG3oknz1EOqltrz31M0yMwcReZJ7VBpodEwkwA06TwekeCTtOfIuFrm0RX7 -STFeuB6nenwT72ChO+Sw9mF9ctSsrsdCVs7RW+5Z6FWhlmcSGDWkycJhit2hi6Ni6VBcK8Fu+yAw -CGZIhjMAJhj6tI6QtWHejNeLa2KNL/ctuRmajVCpmOd9ktqGpQGDSDDlhzDN6Rz2QKtaLtJ9LM8B -xPenpxWMwgenwemGwd+r3bXR6tRgfz0XgTGFv+OF4HimF7A9dctMciehphsDONqGrkRh1IuvLdpW -tVMJjp1yLjviXW67MOOZX71aohRXS02GrfhRX6WQB7rVMurr4x3a2/+Ynw90fQSQ/SzhiU0onE5y -0xyl28+Vp0QlFWfkjb7OpcmzKglbSgWlJBWYLMjaKZazPDUoLBkiyUgRPs5KrYkI3+9O9qPSTAhn -cKdgxwA6osrtsfo1xmhDMIAZpa9SW1pJJto1MvokxvU9Lf1QQJ5Zv/gwXBX8Svk9USZrG6LMfwa5 -wJDExtl2qeha2X4+Fi8BdE/ebM02n8GLDIWpNulmVGeSrsDManY5Fwr2NbLYPuKxVCmNvieV7Tu5 -ciHEOvU5H6zOYKWWlFyI/K56DtrvzrrxXVahuJxzhCy65+q969HNbAfAwQ0OFWUhT8tLEN1p3Kza -bekySz6KjhFwDQEdezILil3HqA3mKdJL9/VkhJTUcfDs2KV7yoKJYd++FQiKbnj4oxSORpVN+IRb -VaHDczmlfWBvQ940YfjitfVSPaC/Lyl+tTWMLewFYHTZRjHSYI7cw0qNNJGq2JT4mOYpIigSuXw7 -7ztREMl17WK0GAr2c9Oa9OIJl7EmK+hJOOPsz3MhrtjecA1PX4o7TF9U5fGMsl25UZSW/O2vGsiI -0O0Nj8IgehbB35iFy0me3pd5YrlsnjOsNG7dcz7iBzhN+ajK3c2f6prbvQTVjn6yIsXyQlQDpwZ9 -PMpw+Gk8SFZexTJSkXbrIn+B8vu4Q/1xH0bOtiBCswfwB9CS+ShV3GWZ+hUMVnBS2NIz22z+umF2 -hQaJqE5NIaxPj7JGu3BHG/RR379mB98U9cuBMkP63EFmqPDYGYniJBv34pxzbe3KKWIZmtocgMFS -P7n4yWFBaqzBVHuyTkfAPhBgvYht087ls/70UFLRd3JjzySTq0/RXnz3DBSvIQ/fn2DutaxS/6X9 -pwlJ2pauY5j04bcwZxT58yDG8M9N6gOlHWE3D0+wU2k+vnqycBEvXS97UE3STsDWCABcNhBTPp3t -mzmj26dWxdTnwNdPLoj3p5mkF6Pd2D3PTkxJw0LTBJQGm8bcM6NPvbvV0RZnQQfAOJYQLhe1Tbe7 -Wsl+P5SZ0uuN1NhMc7JoX6KCRJgKcZ8XQlDtp3B/mTbf/5o448J6jkpj8vAKH+tzpikVUQvYDrDd -YEs3hpmuAzuLNgyXIjqLjlUAVvb1bLJbKfGZuzgT+uOPPF3A6lU4sKB1Cu4Fw50Zv6L8W0AQg3rd -L4q4Kk9Kqom1MkopF5uRnqAI6I5KYTGrWtKXpG8xcaq2fwGxMLvq5IVKOp24rUruOLaHI0Ij3Zij -jEUIg8aEimlLv79imX7235rziDRiZbJ8l5EftlM5whp4EZkL6V1iFMd5p5t8AN93aKwD3ZaAaOfb -OYNXWO+skenI7Xzr5MxJD5MoRfqrFfJZQHUerAxzPBgtZeum97V7RQd465GstI+/jUJF20/e2e7F -K6UID92aUiwgOq5gXboaC8ajVfDGtRvzdy1TlEP6lW4XLaPrXbm1rg0gXOWdBOWczkHr866ldhWM -DRpOIpJ/ScKSZN0/lfzxAdhaygMXOtnh7QlyJ+M5lc+fGVViRkOOhPrkem6fvqFWjojANfcecCSz -Dt367Fa5Z5uFd5X1NpGme2b2ln/ZJfhLKpD4UUqzCZiBvZ4o6+owxUX7Z9Wne+gV6SqQVgqqolQt -WteCfYVi0DpPc3TAVXKDEx5jj2W/ZADb4Up55fS1+OcW43HhmWRWzvkKthKJJcj4uiJbIMw9Kyaz -dhLvIlOcDnqV4c2a/vLUdywPrpR42aUDNZ/C5e9ZuWIH/4VyCVlhdpzazD7f9Wje6qQhiz4rdl7b -mpX/2h6HdUxvaBgj7FgVmkE+T1atYU2Fo36ACozetOhTxmdmFnvH/sfgUGoSzxffd5IUEiJuWio4 -uAT8LCxfuFLgG0w6MPgVpxAUTWAXlGkKWY9JiRLTxfzEMAfP3jjrzrb3yRJ9Brl1JmUbKwZgi3qx -8XpZSegajxVsBHjqQyOD1GFZx8wsB5ucdrK0kUtv/3XW3UzwmVPIde6Vpb0nBdhcc0SZCz/p26xS -SBTwO1UWMRTDcg39oG7wLDXG8sARBGJ5bOlxux6Dd0TZJOgWKDvKkdivRp5W9Varj7iWBbHtDl0/ -9tTb4PeRLX6PXAu073HCmQAU7yQmhNU/9PH6Qfr6/kxl/ovY3UGD5x+228Cv61Gla1NM1qTvqbZ/ -E2gAC3EYtjpGCv45MPPj7T8k4Uask5Fbum8qwjQyBuFCr5iSYiWhByTfaUm6qR6lIqxx3DnVc7Gr -V1Je7f9oeCdefhmFrPnYfLLBTj9I0yHiZs774PxBqfeSo5Xkr3UyIjqDBMYa70eQIWFaTNsyB2lA -Wd4V6Ryj3oQTmRzz8wB28ELRCQh8nCBxj3dZemU9yKELU6rPr6V69Y2uPmoCR4Bv3VsgIs8ZV2Uk -1rCW5Y0sCcufLwEU3dXOxFQbOXmg3/qo3GD3IlEf4nsy/0zHmCZaqSt4hLZ80+AcBRUgcXT4aFye -6E/JSBaB4iFYMUjfqWgQqNxKcx+PJm0SsJgNGSc3Zrfa+0XyYxEzY000g71AJ7a3DMuq3le1e+k0 -+mhmK4vyOhKkonFrtRdxKDRDt0T7f4qEjwZcotPC+BFPBqZQQ8b51myNvZmrjK4kw9JfE3tiCw02 -Dl32ElLBg1O3DJmmU+Emyvk/eGnRsl9kau6RdBul4cy4TUsEG4kH09TgnfKuaftAcbwgHm954xnv -PEZjfl953sJrcD0dbAI9VXcMqJfCMgl4K4WjeRthKPweTBN/+7FXezvhtAIcu1GjmCtHzBiF5vw7 -9w8RWceR8oRrPF6Xb7nRDGPdIZmPLJPB3qes3y9zftWl3SUXsFMyfhMdQEDGNqbgmLFTZs2iJ/Qg -nuRoNii5Ouiqkq6T27fTbONkFRrZqGEWjMtQbx92febXbxq7QDHtGyikOou7J7+GDK+/ra4qqw6B -Sq6rM/Uv0UqwBTebRu/Qs30pcnMLIAeniOeAUaHQwjSprOBLOzZN6z7CB9HktfdsEIK2cHwWsk3o -JfV6tGiLK8JQGYxDTP9AIN7Pu088Oc8guXf5Cqu4ZBjM0U0jc5PnlS4QwZKK+VQIxiBrm3tNcBUG -PkeM4rVWuyJIGemHkKVqFj1LKZgwYi8Qqsab8GoWhat1auUwBd76YqD8nR75MciUEOVieflKq5IZ -AQ3pxA/qeIL3odwJUHAqJOMlK2hmVn+IJ9MGXpWLanp61ibrq8eKgyUPN0slRp+w6ezxmsOqB+bX -0C+69zmN98Nh8utby5CYpLyc8XiDM5lBzgdhjEVDjJBR8lTbhfJN0oMjdH+XrdiRQqwzVTV0zaxJ -/ak/wWze2ZpdJVYzZqHr3Tcu3EHFUg/1sVmBfhzfodcs+bHCzF+Q2yi/dnuvMJU/x7uhTF08tPo/ -/qjsbILWYclJw01GabRTE+FIiafpRX1kbvaQSB8NvaOh0I2/A3mMDTz5zstI7RtxeQ7J62qx0rXr -IBOgA+qaCjMuMX056g2MeKqJldffHP2lWgTiwLwBqSbckJ3qJ1sor/3K2jSzVTIbHN6YXoxWpoDh -LWutdtL3ywXKnS3G+sh/STD3hNOK9AKKC1qMt0XiiJPOPMzll+wkA2BaxcVGbYb51aimMJVATzWq -Y77OWhy2mYkdwW8GbItAxgoajyHLBqRnrYQrr0IVuiulbDxSMoa9SwwbV8x7WF6o+Iil71QWR0qL -2lS5TuoG7z1dpqeQMQ4tuH8C8pv3x0OHKlMEP9Xe1q5Y3Viv8dpmrv7y0iIbz+RCENoLv8oMGVeM -SD4DoVVrahv6eArzC7kdO/Ad9dVnNhGaZ019REnieXTr7dKcgAlZ8+hFF/CHzPB3wNxMrXga2qhg -S2OO88Etw+5xM4+sRP8R4te0hL3D5Y6ORdzOANxC6Ho1VSKGAPF5eYr1qoSHYIHUJjzYl25kDIMf -w1ybj7WuTPkrf3tG7YjgAukqAjB0msVBq5OKgQtqvztBb34NSoPyZuevX9pYBJaTg/7eQWp5w6EA -f6DEk7V4ZYEGp9H/QBkxj2BvJ8csbiGYKhNnL0Kcb7es6Kwz2t5dxD0N0B20U1TTWZ7e4Uw96pPk -21kBN9v1KOleaseKPtlkw6fW82JECTM9F69/gmD3C9hjhq86fyLyksd+B8hEV4UpzQ8WSj1GGAVs -d6kGdIqFAQJNVGY27L8YLuC18y3wHM7yg+PcKCOoOboC9K3ODfJd3ttuTj7EdbpxnU5wkbGBG8ke -cOHM/jvcE7lRWZFpXv882RKFcE54TUoRuXW3dYcCWEaso7C7W9bV9ere9OCu1AaIf+QJvhrxGc0U -66sKEE+YFJcial+YCvd1GIyLFguntHLT46i2zoFvte4UC/1IQghn9Ezd+4BXMdpGNWt8l15fdFmd -AL0GHlxgKwMs/765294CAHrX/6VmeynkMpjW/itDIi5VM13/uD5L5A2GULOmppBssDYaM8q7lC+f -4/Iko3glOwz8DETOhu655wzfZXtx+rhnf4WEP6sZPs5AxtErhYEpgay2bQ64ijcjUgdKkVeA2dvV -8krAgMx2iDq2ks1iSMvchtxspHBCxQXbMWnrVI8ki162Cu6YnIl/RJntLxtZF4S9tgH9WdW2dQyG -dQAcPnSAIkPuyECQg0LPjy4x9MukQ/6FspKx6HEjgRHhuM9QDdM6HLz9Q2SFJCYRTRBfVAZZMaTf -92g4qwP7hMeOXrQkEc1v7D3TDsQu65S7pT/DODvOjUYQmv5sS1K0eoe69NHKDSoBn03Do81NmTb1 -pcLy1+bNhCjWH2Okvu69mmSktRU+uiP9wdy5ri1iEjMclddE25uBEJ2OV0fllNU+sXB5zaJX7Bb1 -lsenm7ydG1Lyv/iQ5EEb1P9ln45NgXuYYJBsTnTggRXcdOfQ5i3UwXdkpvdnsAsG0OcrDwu1tUxN -e1BKUuzn1UNkkgPiVjr1sBQpNuGEnPGEaBLfbEE9ACJNad1XVLvS76tONkcDtrh9IJcYH2LXHmKh -OYxPh61ZuFieaen1pBu1hABn+C6qpj0tdUZ10iRqtdXJc6xQiNDD9y4WY509lixzThQEBbL4rQrU -5sKuUuPbdb5ALiNktwdH9LxO9TQ5VoXt4s8kYlsVOf/LIkv4ftBElCxxUBjxYQAUq41/yFjIdV4s -ogFqWTNYLCV1BtOGe9Zb1GBCYUK8N6omVRQFKgd4S5vkkpjTgxU7Hw8gdmf8jH88ZX/6kLRZk1Pq -Yk4BZlispmnT/Dr2i5zf4qKZ0whaWFIs/TJKWO4knYZhrntcMipgutsipGqSMHEa+/31bC++GYcV -pRyP/fLL2oLppm4RvioxQ+tXTazT9Vhe5ba+PxeRkueTburzeXaVxHd6J1p+HivKk8X1mE268o7f -SkC0PzY1H+tJHrR4hoSo33wq8/qKZwR/45dC559/qclsP64PjjQ5AE5vsC+jhRfCWGid3z9U7YyH -zrQ9izrIVvu/olafa/lCDwlwYSXYVoOK8bqiQmR+kZ23L5fV7IoJExdHI2mGy53hVZmQet2aN4DE -Z3t2qRb09kHeBhb42akVvGRNf2Pj0sDM8gcfyHCxxK09e++2FX0oIWxPU51Bmcy8X5hpfxBYZLwy -3UQL2Nj6uYTk0sS3lAI8gBG3KOPol8p7GSjVUqwrWurYnEbjv0BhtkUurwcVTpgKY4DUfhuU+GiP -Xl5RPMDVKXYLZJ5y9w+vOah+9Orh1ZnRkuJAtCiUDNt6cCJ9oIBDLFz645515+Us4OtLuXV76Z9C -8gh4lhlz93BYun7q/GrUgpcWMRwAMt5fKTlcby57tRycBG405E3XxjwS3DMtlTx6EUa3OgYp4kWB -oxqKgYalEwJ4yd94xCkUJ4j1la5/acjHOUs3JtnCguHcbudpwplFbAhI9gnRlNaUD7GBThSr8gbT -lfivayXfka0c6b7STjcO5RtoW4uE16y97Cd/wxWhXNPaBuf8gdBu7QmvgWTcpk+XXM7pn204y6xi -Xnm+cKFgB/8KF8vyD4/y6lJnwXKKRcJQhBVZ6XAWY0Sx0tqUXPO0LRn/UXE7O4Us0M7yrmwc7z81 -uabXPZH9Bx7g7vgRRfAD305JSsF+eVMeZ2lLKzU3mrwCkI7yvirXdXt2DRnYjfzZ/mJyp3iJrXTF -fWuBhC/oBoaTQRtJo3U9Vv1qfZG1MhoO/UfmJooIz+VO7jcffvieOHMQf3VkwdYPWGIF8YK0FwTi -T1HaFKHFKBsoZX0rBV7IDWDjTlJOYKX2mo+Oh5gI7SpWZLepa63Eps/LD5hEBZZyL0fK4yjhHkBV -LiRXbRk0gkeMh+s+s/OdInhyCm9DyLhNq+M4lbeorRBTDcr+wCKnc9yidHorb4XEOKKKFdNnFK/A -O4s5XIF/s5AyXbV08yacJHedPsK+J6JkozXnw4KmA0cnDc4UdEB/VUFiCiKJ3jRz6IC3x+icx1EH -qyc6TZSpMGwEdLHM+faAQ1q/yLN9BQMyabb1PTejx7fvdzJpCk3I61b4WI095trpHuQw29aXjdhw -lW2o/EY8fd8Reu/UiR06cpWxZJ6eqapUKUq+b63FvNSC0qKewL2uUNpSUf0Naos+y09tLrOlzQRh -Z1BBAz5GSGzLiMkyNS3tx7S/Jvw+Y0IBM1TFMbNmk2Tr8cAD5M9FS8xYZAuNPcSxNwldOitqT8CL -FGnHRiqX/lB4U43Zhmbq3AmbZxWbjjeRQzH6G50RQWKMBd3bwaOBJ6rBCCBMuvV93Xy46sTTM8ge -3CcslT70yM6nP1SW8VfDOt+xTGxabrgQZ9eraLVB+XIy4E5g1D+DWWCtvzFLQLSOb77QVJm4qi8s -7ZlyGO4tRO3ISUqWLpnvrDDkwRYNgHcB/RTYSo+MeAADvCBFY/vdNlYVTcukFUD53IiW7PddzGbK -YEHQdNFtCcOQhtpt7THHZ4zKasXIVeHC8bspBs6CIPtOw+qHyG7DImzw8FtOV1CPDY2+mIRNcqR0 -qP/EBizb3UoeEVrYVKOCyiAvm3/JE7fwZhHH33wj3JIDQtfENOWnn/xp53xznqwSaXfy1DMmswiL -OojZBP7r7sFEu6XAYsORVInIW/iuxKM2j66DtJSqS0eBc3ZkwX7M+RKlnGtEoDnp3uICB5CWULfN -efLxjHkmHO6aHMN0EBkYJPsRZeywWqD5KgU9vHK04am0y2g/Y06hBpAVtRD7xjj6Igrmd33zJTrH -SgdvI/G8+XA9pU99556zUt/MgdMHgwh+Yw3K076Vbxg2PYu4zsKnXzAfWUuRO+uvSFrT1kbnM2fg -N8oKy4fQNzf1xa2lCyoD0oHHr8LhE9m/jq3f4I8WlMGtgA65gzFfDpTBSd4BLj9oEyT9MYsNEkYZ -CeBv/4sLHmaoXK2KavrGCvuv1evAkzm7DtxUzn788LTxPvsCS8iMLlbXBeLN05AuZofR1pmctv7I -JOWNuG+Eno17RQSPOrrSNYt2CpU5/wuGAoKq34Sb79qUbsIYGcWhrUzYKsrAxgkFTa+5oCcQuMyy -ueG6tdFCWNTDmCF5zgoF2YfLJJrVNJ1lFQ3eiDDO0OWOgYG7LT4KGxXz6NmcvsCwv/eE1/jNumtW -k1ex8nqGB4sz7HoL6FvWWm1s2vEscNR5k47Y3DspDsQMQWuBRxu4Ee+WkaJxXdcvzI5wxTNv3SPY -tw/ncCVzEDTqB+Eq+o3qXbVvegwx4OLj6XnKmBfcyKsMSbanSbALRCjQ0mjKW13okKzUmP7l0Wq8 -T8+Lpsx3TEAtjscSrUQOkXIQETDs2dAprGVE0IttxXhBFHNKau0YKMOSpp8dBVHEl5+5VdRKcisR -FpPNtmqR6UlVt1rxbzCW0ozkGD27gH3u+xT6WpE1aNXwy9fLmRJbLobNo1hr3rXa+K4IpkD0qa71 -cF/TLHekMxd7vKmrhF720ULka8oErbxBHxEB52or8mRRnjv9PTH5vmz5AuwJnT+mxmQctSAsVO/A -Ap3HizBVgStG1m87AlSUeD5u7/cO85yjGXRB2Odndk5wUHqUjVEW3+G2/36l3W4Y+WJ836udj0/3 -HDJXd8n8TAPMB5QU4epo/HHhHFwgQ0KayidfE5o1uz3xH+cVY630rhtYkziEBPxGTDbxeMKHfxOx -kLKjaV5oB10cy1mAX8BVAge53zoJGi6CYo48pE9uoy+Jh6IYAGDyPBO+rOWWUbPTUtZ0OzRpOAjM -BPJv0lsZb9Haij6wBdh+v/riQvg9BRZtA7fgDualKkwOCB1zwHhxx+2QP12CAnEo/eUV21Q/wZb4 -5sOS/53cJM6YrqdzwEivUKaJvsk6XmQ4CXE/CXVNc0Kt9e54/xisRDGPl9DGHPjoOWDdxpMkD9a0 -5cuukkEYblIFEJPlNG4tXUp9XrujWFdlHTztTFwXDpSdtmbEZpe4N9zq+72BYMVYxtqpvf6qnrJy -xIxoP7mWcb0mDar7f/J74LI6vsCl1uML1DPJi+AnfGHCGRP66Rct85bDIWr6ROtZ+Pz0trLTQ/2F -+BAZBALk9bxh5FQeb2rmRBQKK8e8b4hB5o4rJpo4NLr8jk7+Dh9mRos0sWAA9hHfdURQ4RlG+/qT -/jpXfnNaArYe7jBOY1OW4E7VMEjGwpmv2VnR8JRffz6n1z/cYK47mvKGEzC0m9kqLLH51azF3K+/ -TW4SoZJxFDipufGo9ozHO9V3xc8JfyxPg0n4Y8yueSuVYF6k///cVBz55LXTbz4tWt3AP4ZUhXPk -b95Y5ZGXmVK9AP0Dp/9/9wFtiJxUgqhKzNWXLImxih2iMp2vQAU5B88hEgv/k7gQcLrrPzpNzqqW -EAIMdaWiUmVazaLIZCMNdgSmg9ZA1+lsRaYxfrdUyqfVkq9bghyB+JBcZ2wwe1r/zjMeAN2ChDlc -C/mN8sw/dsd76lDza0buIPmLjKPobI4s8K1WXYk4qbLO9A6n94fbXMP3bcsbQe7AN27pyd4PEM++ -z3hFkZ0WBmuhDnZltFPylfrbTpBCV7dJ9wFNL0dDctb80R+7TdrecZHhaKgcqMiSN5uoJu7tz9wR -osTfk6/ngKSlGQA29tcAtFPyKztaOgdtww7ORy2vuenQrS9j9X17ABW6SRKed4wCjKZ4MO69W4p4 -6zZG2q8roqMdHAZH6+gCSY1PuPgKWQesB0Czwj0lBEHazrUhJs1KSwpLFVbIyj6kR2rADvPlPIuM -qziQm2FD7mt54R3FLv6wkq6dPnHXo/HPjiqNR8dxIpU3qVSjJJ8ybcEw4qOMVdttkZZsxfPVkhZf -D/l9wm2cDoqh9xqZkXKcHyzXgOCi69sQHKm3yLBjcMTPQAMzhEyAlDeBcJ5ZE4IJBt3Jrd3QfqBq -tuZP9THe8Z8CVfPzYP9Iuu+aXiK2hjPBzvyIiUVe1GUROYIE+JGeLaoiPVJw7AlGE/0LKsAoaQln -ziVec8ObkU7FzX+3QwSzkhhxQjC92JGIkaA4LLX3iEG4DxGo5BQNAsoHwkeslJ+KUlHfy1aol24/ -x2izdEPDP80PLYKl8CRZq/ngHXC5F3j7CEFGC5DL6j/OsQIJRovp7sKDrw1wO0W0CRvrD8HK0Per -9EeeKv9P4BOJbbdMds1GAsu/pwpZ1ECrTtGeuj80HGKed1e4Bz8Yz0X9kPMXAHN+D9/RIBdiIHJL -f4VHyzITqMiXZmwb2U3vLyhzQ2qqRIwvSDb3hTJ6AOdFEnCm/LvhIx20/Df3bINR7aM/Kq6rl2vr -OZ7RfV8F8CNmSLv+sijU+jIY8LOztvQEhmWjG4I3LNMQCL2RYPmewisP709H4PAPaStv+JcJo67O -bfHcg/HWC9eogTOkKXLM0IYJhyZjymBDB0pirCqs/HWuX+lKUWMpMQYyn1WBuVwP6yKFnDEwNdr/ -v1NoMm7zsI0sLOSHQP6emtPc5cRA1fFBMoMIWGWOzE27agYxbCpVfS5F3w9m99NVbHNj+ll4dn4N -VZ/rMssKx9UqHzrkxcIJY/yrse7G/q2iQkO+/fZUsYPuBrh3KnNa6skiKxWxBrkXvu664Bcs0dKa -FnX8evbGnBdrhybCsQ13/26HMmiewexmiu69npxwNVFrXv1G3DBl+hOzgl9fb6h4baKm5eG/0Zki -+cPvxtfqE4FP/PaCRCpPQlKX/mCfJXzRlo3V/Ivf9B/jy4zXkSmkvBFgCseaQYwowzR3sVu23cli -FU/ekHimELDsk0/b5GOyW1ngfGML6Q6Uy4tfz80pTOU1mcdJWHsjT/ZY1Mjq8Df+cCmGMKxc12w2 -yYLzVF5IU/NIPG98QvmjM9lq8AUjBU5CFCQY1a73W7AB8c/awJdz9P0udbPiimOiUfZFeXFIf6T4 -DuK273Kb2wKmKhgsnxltpGPcCjK7oOu6es/Y7welzmtzMTxVUVI9bnIOh91/4UQkq/Vwmq644k6j -sqLaYkpz5Lx/rrbwJ2zUID4CW8m5AC7Gypwh1XGm0uo2ZlGzzeC3wgHh7hsSJYUb4HbgYmukLusw -QsCrAn7Mt341qhGqwqZScK5CqMVqN+8OVsEdWkPlFHNcnGU6GOaEuFj5aOcuomCeAWcS3dbGxVrp -5g3KqkFPczvxEtFtoZ7h5yL6A0L1DeiOl7c2BfXGn/tv+fUz4x1/vSkC1PVRzI8j57GZpH32Xty6 -phyRYnSUSiNk4BEJWgvublCA+LkW9eAiYx3koFTrTVXtQvCvnaRgjR5UUu2gDNMpHgARUhtGDSiA -1Zfrkaz+oEaUWbOXOmNOEf6seWu/BKQHtLt5ngcL28sP0ovJnhzMoco9vmVYiKi0tdEYzheNySLq -Q0TDUCGAxOStyOIHh3B7TRNo/wvJeVMXPFhhvBl+2kx8h+dxnjwzTMSgY+jlNMsDb50YyKySOSlK -BEcLagMBB63kdd2oFBpxJnEruSH1yv/qBWpyDvV8+eIKKMG+HupP08tTFOkHF6VgWkMiXe6bsSFC -Y8mj1t/HwU36hLlNmlCCWJeE0zM9gvnpcIOE9qLiHWn5LMg/rtQTN/Dzl7FiJ+QfwrSCTmhXB3qx -WxU4dpWsczj2SbnWGOO75Z8o2n9tDDdAJrKt84iudqJ3p2iNV0dE95PjKwLnhdMDIWxu7UkrXdZj -R06T2iMpQqWojVgRjuCVsiKCwDVSOkfL7BmFmrcAaMfHIENIAzA+CkpZmr5Tcxi0g8IJ2KZ4Y5H0 -5nA/+tYuSQWN+c/UZ0QeElme49no1P4T2w5Oho2g0cvUu6XlHFii+/UsQRd+2aouUs8zRYtRvMi8 -91rhXT7SheOybdZhzGc0rm+YM4ANccAU90tP9U1cfm4ho4wuO+ArNk/+H6B7tOvc6tl/JHNyBaLb -lMIfqbM1/O8pw0L4XoKPM79cmDxXuYb3mNS6C/qCUKolwywR8uLznBR9c7qgBR2zLbqLyJj1hsXf -MCGuTgpedC7GPxHurtYkzD5JtvDU1gzvlasmVfx/FJZg0TCbOzZJ4O/SrCbTxh5DZBalWvDV2VQV -6e7VWyu8SvTpE4GPZ+5hZ5e25MFSjHEelwM46INhfBDaQAh8jsQxKoMlWKWYHFLtVYE52woW0FZM -SbyYnC2pIzUu+1o35m10JTdSnzLbFuLOOhloshclRK6CTb6Ls4irTwHIcQnUgUU9e2LZxzovBaBi -UuoIGY2w5ze6B2oRbymvnL/FMe0mOYKBhLEiiAHSljqmkzLtfzXL/OObcBLSpB2poGymxNQBC7UZ -t5+1JFBFQjYVy253yUv8bqZUwFJ6lzPpvumNm5OdtuUVY79K0p66NJeIHHi2Oa80LhP8ZXuARmwq -+wvWyIqFB8EHUYLN8/zhLeH4LG7kyPerzpq0O64eGGcT7Xy0fnUSCVWg04aXcs3NvT1cKaffYZpg -E6s/qJ57Dm+cyLQZDiS21FGQ7s81l9GrAxQnusn5tYR7HiXlTxuBYfjml0LGd907p0+eEgSnp4/+ -/GSt1y6Cl11a3eLbFOVkqtWftZ2/hatHjQyCF1Zamp/Fy5EyZBcNgW5gJ10XDe+BNx9FUlmuaRgV -t56V0NrzWXTaet+fXOkqzwfgDZO0rms93sl5zlvQf58ExwijZg6PFve7BpCJwUVxqPmBM5wbh+8s -QIFtpQzx+18DuKQHrx3aW4+/0dqPUquerSqVu7OnrscsaBgnBzRj9kdPLiUkWJmGETpexOjm3BSU -ayV87/iDKBTUmcM5QRfZCj7/H+GPYzRSo/CLySe0EgiDM2fIV7kS/vlUbULHz4GBMzADfqf4/4dS -bETgS1+hYE41zhg8JdAWYeqNrGAeH67chIJ8qC0wEe60ZxVZerm5DhumLZYnwL0gCLaBEd40IsDD -BWqauJxjh5OiZpRl6x1T+cTSfch0C2Gx/w4hZPHRE4SAifnIViRF30YOl+RHn2VwL5C5tZZDN15o -dnJgso9uKYtmLtyUjiObegzJcRGHp7bMdDpD7YXkHIeTKzAB+3iSAhfnFEqHJmHbKdtaWqkz/Ytu -PxOZ7nVyi6kMwmlSjE01Y5CzEexSeY5SehWen7zCGPakPJ4qNltkt8mNKkvDkZRlFPnFPUQhPzwP -4UXS0FLfTSbSw2xclTWjoc4Qi4NboOK++tIqcgywSAXejbikV7JeUfrqmv3UpjpxKEGTb/UvNpJq -QtvR1z3LS4RynXwd+sffUbNmY+AVlUk5nV3Zm0azPUba/4oEV9JWF83j/JB06inQGg/x2crUDGjo -iKFTe56pgRZI3PJ3/4pglfx6977DqeOwUj8hsQUCIEyMKS3DgtdQUdXSQBAnRxxGZQ/4sgg2jvSe -t+cW67IcrTAGagk9oCTrFwoEvmquAaqVsQiJ71n0CZOT7Tlz+7FDHd9ut5B3gqkJ3Tk7jjKZiRHe -KQeHZEvXgQfzETiuAZKZIzLSF6G6wejnhmzJDDTTRSxqB3WbnlvULA3ZlBiVM0yn7PiP4ZDeR1ey -9OD/LblGTa0iFARWdv6lkxmJMfowKqB4DD8NZVdpJkczR9y7jd0QxgUcG5LGOtzJ5ffuxTsAtyL1 -eAjg0ZvWegv0FOY5rPV0BdD+VwCfLUdvTe3UnZblKnE67BFz1cLzD9H9qkBzpPyxPrSIMRY1rvJB -tRKrGtLp2JZuNQQaYO/1zdU0GvpJND1dbctHNYq2CQ+E8+wDGqlP9Qsu3gpuMlvFZHpsqXpsic9b -fvd+Fnlw3n34V4V3p/jRjTFPGSgf/563tFcW1yG+1nNg0QYFTgdt8U6ndzGMRoydqsCNGsRTbvT+ -ajHWe1ObxdC7mJpyZmGjK277Afp2FzeOV61BPAhwBKO8cZyERsgicQpKz+bw6NJHxepqzQK6af4x -TG1sMKWHtjp3ZjLVSA1r4lhSiuRVE+nZ71fwRhY5x0irp9aN/NZOjtuXtKb2Hl6NQQUaXsEvaahT -o+Qp9HBl970GsalKxbEeFlnE6b7lQcxN3yVE72eh3hgfdkPP9Kpd45JhdPqaH5zCNCT2uMSjdiLI -pRkYHkeMHkQ94fVruqiWWSF1r73aX2bg5p3zQqg1DcQvFwrlJep9dxz5N7kRFFn1KmOEJ/NHbb4M -2aFAcsNq9psD9sqY7yiorjp6xsyFXyLHWGioAJHw8G1ilHY+yJPVFPQICu0mWKJs1ekrVB8zwH7O -lJ6EHzdPtVIH23CZRYR96Ddc+tnUg4sZ474wWYfUkrdp/hXiUUDbwbneMeTRH6Gbx2dNkYXrLfDc -AX8hQSSjMotHKCiNMaHdKmAl/3CCLC7cMtfCif6HPWtjZHR0ymPsob42j++vfepuF3m+McmLhwYy -P3UH7RhG0FAUDVEhBNX1oYrH7lbUSPN0CPEDiFk/O7vs7xZAk681WtFvXGz1OM4z3fCHVQHRCfDs -KPwN1twACtKwpw+ftp3G27o7E4N3Fxob3enmfyX7Rxwsx/bugrBouWTWE54pwPaM7Xs0UpT/E/QH -0uwBW6+WUglqkj7OvtCximdtl35KJYpErbPf0Z71vuGdJBsmlCVcYdUD5cDMKps7DNk9xUzmz3zv -iNMgTFrlcgoqxcs0Xw+uxb3fgZWnzaCJk5RW2jHgEDeulX+h8ZkDAPh0PNnFNKi7UfdJisVuUoVe -vxLBzfkNBg7ri+/AbkuZk1FSOQAfO/fxl6DGs4V5zawqhURb+BHruridx+ledgREFAMNRpM7kE7n -E0C3ugVV1AzxrRzeF9sPaUUrZflmekTSsNy/Tc8Lx/bxNQ6s3+lFXtFQEZ06Ykz6aznynQRYhAYM -rcjXdvXo6TxV5C1MSy5nxIJdxlqPdi0xN3iAAnThFH/bYzVCWdjPadBMM7uDxIKbcuZeCyH6ulgf -MDVQjSv7n7vyq2gHo1RUqlonHa343Uj57KRYrmUFX1M78tU9zu0BwDz4RormgjNxUqCyL3G6yAel -GUoMWc5j9bRXFnwgRit8QYawQAeG/CUnVm33ZdfDlaib7dBR3GcLgoUfwAJzGNvHHUm6bKXhgGjI -d/umkzlHfsXtBB9LgHaCM4e2AtyfVeqHARn9wsnYgVFy8dPex0GcdcH5qisF7DnJ1l7GDWRIV8Ak -L3WSEvjFNguVoXaH7z68tM5oWYnVozpN+oIkw87MoD55gxqwBdCieP7xSs2pltH1t+GjvC87YIA0 -fKMOJ+EWPH/MQHFqo0WUBcfqaaTr7yMR43DgPU5mJOmaYsxm2lI6pJG+PVbMcWWRZ6GLiCXQJ12m -W56n2v6HYZjuiv5bfWfhQIYRyOIzpV3tQQY7l/UJ1olTDF0mHfWCnmQ6NcxSRndHw/mbzD6ySOm7 -fY1aww20wDaFsulml5X8UtjW9PTyFEfESYyrSkkW3qQ2gAqveOlRS01JA6D0oaVb3c3lTTHLYrrx -w3l9vb28t8eRWk3vuEcR8jzgvTLjq8IQzr5uSop3GsP9FDSYgsgSdxAivmykWA2bM9l6PrtUB/tN -lO9dGihOM1GthO6GYq8/tpOLFBPawfm3DaZZbfij3f1le2B1YZWvu0H4PZ18WRliKXIIpRqoitf+ -1cXJ406WosFE25maKaOGGeYb0kY3AVCrCYacH466UYIU+whOELKbElpyiA4nRLGcD+905vzqUmBg -iUbv7TNy1SBpaRnJVi6QpUX9gpoHliikUFfHZmoI7W+tL1+uG3yUU7yU1CU5Xge3o4gZbpk0hk+H -Z7dZEQBMDyJjaObn2AVgn0LGUfcfyISid8/fqxQwBLBg5NwGHTno3liPVYNmmpFbltkHxPBU6+sz -w73pffg1zYe1Ps/r1c6euClFef8xw/3wyoYhjkdISmsMC7EmdVgKamDbZ9F6Zm4vCVu/jVk41PPA -66RJgcEv/mqIdam7Tq9eU7QeY7Go6nN19JcjpRNLFrRqjrx+Bv0uM8TPKWfcK/Ngodv7HWHhS3pf -M0fANIhO2CTDeEcTQb3AE21+Cd6wTVhj/1Wwa/J9EPNzN89yM2r9KIoYzSTTwkl7zLO+w7POZK8C -YL55E9/GTMerUOZ09ZwTflDwgz17j6az6Afe/TjArtoBF6+KhExvgRen2NcSFLvM5yUr9CDCLdwO -+czlZ0k6viIHu4Hs6He5bjVW8Mm5uUgRZ0nWH9/wKNI2GodKyqZ+dPrT/ujCMpOEHndYdmfoZZIO -77lHif2PnXGxDVwRYl+deXwPno3mBZwL4dcPibr//C2nTatUZmYvXjMiiSqotW0xYUkYUzQfAYxh -GrSa00LYD2LUS/vte6ak4Im2v6vzchOIShHDNc/PJxYWGBy35cutNzFu65Boy4s40BzspGpRrdny -e6lnr7Mav5NYY+hc7BGSqJT8fqF4yXZlg/AntXCT1vj5hlVluJ+6qFqabMWLo0mnNnbMUF3jPCzu -7N0NI8r20aCUBoWiPW4AauE5zNgyZAmobWy9J/YRDEcg+/88vHQxk/hhel4VnVBGAwgAS3G7f7dt -T7YSFRSQXYJXC20Ym6rvf2hist1huU8SEg/a5EI1XGkzfDqpDaslZAJDlWp9aaqgq0kgwaf207hz -yNF2sAFC3Z8YMlfv0eYkHJ16nIZMXET8bx0Hl4KOkUU1J8QwjMa1C+djGLYzjHj0TfjxkVeCiFgf -7cMcsfwa85RB1gpfzeWviBtZU0+tZSUr7NFAReSN+qk9xXmul2Bn0GfipB56Ophfj1yRMvqiLAwX -mwy5zZXr0XenVzRuc1vjRDnrm2e9g4zkic+p8GOvU5kDqAIlMr25RQYsubUI8LrgtGwUuX9AZnU1 -MGi73F7hgMbN0LqV2RlJmku1y5XR7zShsWG6gHxMXXnCy2vpEmDGZYlHJS37jqpmhQQUQfZa54mL -2Yv12SkTlZk88o9dG10I3XiH0hEAV1fLXSFeYoVur5p+GVTImCV+zXOfjh7o5wjYFt/t6XuB+pBp -/s40nuFTkuyNXFn3553tbM6Jyo9fOy7+4skOipHAb7rcstv5hoN6hemMvZq61L9sRQhPsbDlmwJs -noEFP/BJoLWLQwi5IhtjCU94naboMGJCGj+lEgBKDBEljvCuQPPpxlTonCU9AvJE6QtO/xgevm5A -R+sf39sSv3x+BmfRW6d/V8XqsHaK9q3nDPZ2k9IVyMXLMf6gnsYMIOwY6ZVuBCSavZwpbf3rtV1l -1hXC/r8FXpZKf7IZhSiOTrX5LM07Dl+op37t1m2DsN0cgS+C2+DIFB2o1st6p6361le2F3kYNbFE -uKviUHzmQm304QrUtdDAmxfnNOIbC+b06fjaJtO3qABPHz5nYlVPi1La3999W1ngie0M/4eJKZY3 -NFQzy3C06X+ZFaQ1RH5SXu6l08TmjJYo2D9tQ9WKqfup34Rv+D6id4MH1gAx/JO1QOSPG7Nrkgbh -jQgMVq+kXulcKFe0EkgOtx2g3baOphx5VS7dul9Icml9fvjpBfRUVfogQvZ/NjEoCqm8K8yl2sFj -wLmcVdP4aIMJe8m2AA2uBisSS7VvK4ak9+Spn5iMAfw1/ev3jZgxWxHNxpyRbP9xoMiBCvWoX0Vw -bp2YsskOgxOn24mFQgw63OyIXFQQ8ZNJwXBzY5e5+IEIUtFT+oa+cMQi9b8dbilhRwcfM2h4cQMV -xZkWA2bRloGzKqvFAEc0nIqdztFeP5Il03Wd6mPiPR8K/s1QBCafQw09H39jg9++jqpgJFhW7NMh -/AmpdyypQJ/JurSdtmWdFA7B0Lq8xLmBSIMCjukmU2d7QCnOPBogpy9pz/1bE13ymKKc0ulPkg8G -grm26cYIR9ytblTCY41dhBG6jrVgG0se2dZ25gZ4+IbTdkXXREtlFro1VZMfCLJVahBN5RrrH/pm -/d1JbPrbsE7lJvGMj1lCdszWPl3cI+xsw3Am/q20dc/jFvQpiQHeBa3HeCd6CNFZaHkrmlpup2Nt -gv/e4Os8bGTy2+yGXk3NVxB7KqvO7JHteuTLtO+G4GdiTEH9XAXwoEAAspOD+8RaWRxWejyNoBNC -1VJAwVwkPgaoFts7R6gE64BQX3JcfdSpi3TcoLaRaY3JfXsfWaKP1h16wnUgAqg2TZOaVBaO7pvF -J3cAIIDMHTmBsxlBVIHKt2ZWh22taw+Mw5V92CTurXHlP/8PlCn3mUwpG0wS1jxlzRqyQh7Q2+7z -/03WpSsBdogbjhMS56qE37UUqGt9Erz1rMTWXpGfSKYN4mDYrgi12xMKRK9p1B5TGWINsqEzGlrs -B9G+ZnUxWpYdC3dqWKA5vb70EgI3eMx71gSl7BtXvrOtJMnFUo0FB/qzjvMGGshah86MlJhTkIed -2BSzQjHgYT98swVN2FvYErnYZFN5tFEDmxZai5uDz1dZ8r86GHUNFSX+MWNvFPritV242tif5ACK -ObdaolsdAWL4FoRslQ22EASURmyAsjhKzBt4nPmgcSI2pV8LQAdBZM5lJEdyMVlBTmOk0UrIjIf/ -TqY1DCJx2EVTzSaB9LeEcWhqqxTkl6JJMM47trETCjAr//zheUigaJM3R4+ylI3ThiKNTkaTzpdU -/W3XBxkiHh3qj6PzqqNxL5vNOL/y/obQa7NVebW8wQ2cFM+DygpbmYWZsXUyJDspfu5fRATesmr5 -Al4NPKLAO4i9v9Bj5UBrsnMy/jGsaQ2cTAp/gq8cAHQDmZ7Nv7f9/G2y0WuLHCSPGv1nk63KxUTX -0EXXMw78Gh7WjygNIyQfb75STKg/jCO/g6atsUnK4xq1KBYbm5MKLD0JV5XY+GxmTuJYRU8FxvfK -Czn2+SLMrjI1i+f4vSY1VFPsRX0pif1fFK6FMfllMzawgYPioJD9TnoK2m5gIG34Qg/eL/xPDMEJ -tp+8eio6l1Xt9Wg0Xex5siOmzEKB05Ds7kGAcIJvVrR5xNM1FAqVICsz/e+vG54pd1PNeaQusNIg -+UxcC0GoMB4vtusKSjGxjCBwC6v/E1WzrunV2AJegQwg4moh//z553CkQcrXcMu02nViZwutvxdH -X7uj4QNBCZzZVFq3s3YCfLvYulDGwjlmogwYfyWuPX9fWy2ms6nX/nvD5ewqOA892x5ytxKZ5R9U -75U9x13hsKsVJzdkp4p6Ig33HOqRCPSNJ/k1RgBmRFTApFmKIgfjgkISN95rlkEY0RxsarbJhnY7 -qDp1ozAm79bD87wJhlgLbnmDQ5ruSTno7q5idqtvP6+6R/Tqdn6vsRuC+oc7EInrUfVXlTV01Io/ -OFqwoMWGC7pIW+tsPKZxV54qHravx6kSHXboifXe3bd9B6nZPBejs2nkvhmLMx0YUWc1epmS/QX3 -/PzuhHllBf0M/rX/EBwKW5iwd6r73HdeSz4cbu3hg/SI35bFhwQQhd4nm5IK/RNSk/m4K7z+Fldb -6iFQIccNbByWx8KEKC3h9tZYiHnHhK5ymRB6Pd4OEtuZ7GKPyu4SA+ckKp3R6S+oiWGSYMtufAY8 -oMb2xcJseNDdkhEBdALXEAmlIXFCC3sB9d6prETiFuM7U0wNvU5gjjhUjJ2E5jmz05h7zyNdy+S5 -Lc07Pg3Zr5hLYDnA2bI5LVNVfbhuwNDKc9Y63yZSEXGMsVh+ILkgxAoMaLV6gLxEE78WhcFrRlyz -ozEWYkGg5O5gTB32tD7YrJHoA1lvEwXtcNz8uqRZbPw947lJ8aFSDnFac+SaeEi+oRR1+klt+3XJ -ab//WrF+XaaevLVdFMiuwQJsDPPqzOEtdN2im5LzYfeU5R98gsW8zKZAcXOWzafK/38K+0nQwh1h -QWoR3m1+nCw6z0vToQSizH/FHFRJ6L5JDpgI2LVgcgfjaddgKZEOeuDi5L7c7xCeMFWwBiXgiC9/ -hoySoZUeaI1upqh3o9pssinObkg44ZvAav2Lc0yG8KaNmYh4WAXzazyTkFn90z38/Eqytg78+gcJ -eVQjIQzyZ5MZ2Ow2iee9ZEMoxNzy7HbIfD2bmwy7jTdlMJPiAmwRECiZcfOZulTJ8MWrt8mq/OUK -P0yurWq9sLl07+yjSmsIRNftNPSoD79znp7aGCR1km70VWNdyZcL3KaNqCp7J1MeJslesz4siB6j -A2mqca9UTK6dsFVuKVx4BEw2AOkK6/sUlpJdDoTOcONnRJMKOkHl8BItHgn1nOw6W+e2Hq2Jwz02 -4ogEWfYjVA5IdyOy6etHlUDOKMPRvrfn13mbP5gJ/msSUHQZYr1qM7HHVTeSXMR39xtbI0qESkwh -gGO8/Ee9svS5eCRJvFAWZoE3jjCQ2GxEmo2aJLFh590augrvEfy/2sViO0qpvp5YnN/zN06Q/0JN -E7KXVvMgVvZSlfuQbWUTu2pmmsE+eerXwiFl4+XpogqMHIa1OPO8wZupcqQY2e8hzzPX2hXcVpX2 -hdOq6yPjTEwQS1U0NTSpg5m/X6HS36bRWa7j0zHZ104Mkpihm14Aye+u632Uwe1XG0iVIFqyAOTi -mi8F8jvUuT2+pMmrS1/RZRv0mmKobdbuNG/87pbt7kwcig6VkHh3VK1MNH+zF3Y8nwROoZ8S+5lC -LW76wpGi5dEDIcGYIhFIGo5ULCkHh+K+jzQq4+EM1u6PT1DvKdVhp84ESCjBp9DmRkgukLPwWvzJ -EwZv9slXBE1Dx9QMQ8GQzC72AuS++3bSnpkeYgTPHAx5h9muf7XJBQlxtIGKS37+uylfdxhhJD1b -n3r4mqDsnIqIPhRFCbXxzoPy+pVqtlsf2GlnTkYek7UkRYIHdBUhkbsWfpgJosq6+tlyk+ueuAe6 -N/B7s5B9eyyw+Ejr+C7guZ96wPcDeRTbdpLdSl+9cYv3x9WUXBuPaZHQtOVS1e61KP8RPj4jKinG -Tdgh1vKCbjLRFJ4tM7j80lz3VFkWQI90petJ3kep5LIJvcnwxHJazFPcvBQpBQ5VhZQsDvaavVVi -Hu78sShNjLqziCsrSHIsCNH2jg2WsEhySOyl60s7P74HD9CbKWYeGReIqQJeRcOVsIGipWhFbU1o -swNLh3cavQY7o7l48tmjNwBAgOPvooI0bYjE3k79Z83bO/X102NILJEJR87ikMiJJg87AbBEAMp8 -kG+mGrdhPRNtNqfhasz1SrwAFU3g6B+nQ8haGF6cvz1AQ2UE9TjBxLO4Z6F1JJrYYRJs0xU/TlN0 -mNJ1FdD5eF5qPkl+MQu4FAgeTZG7jj5OBAgzzQ9uilLB7XD1STVQyNFjAzWGDLvV0GbkXHc1uqYb -LHQjNWr9qrI0X4s5gYNIVR2M+hjC83fIGNqMS3tZLup1zOtJPc55KwNg5qG6mh/SVDKsMPHJd98N -4Yui9/1IVpBlM4+Hk7O7Gyh/173Vv4/Se1cluQQl8SOZRlWlkvPjjY3maU+Mabyl7fht+u7P/wsI -C9h/MDQ+fJBKEq/FL9QxSmEWohSyZ8lKEUd9F9sPWoyVl++128qKZ1zBTJ8f4PfInXq+yZCoQM3s -OklllmiBLT/EtUKnkiM+w/IllFKFaPg4o7aJShpa3NS56EAJAHINnEchx+BRskdCcOGYyDuDFj7C -k9rBcpnsvGWqnGjXHj/pMWngn7DnYS1yRFIevipaIc8ga9XVO+MeJIF1rxfvDLmWW4XUUv1mUwe4 -I6z4rGPYKQRnozmFlozSaLvufQglCiPoUQ7tNLJZLMHX3gILa6dPoBxz779hnZ2qsz0hGE6k1CMK -XHbVranw/hhLuJAN/eZkfTr1c99P0cAGiz1/Q7OQpCaHd3nUzZ5ynA7voKuFajxSuI5zyOXqPdEG -/oLTlGEAHnecm+0CbhbIpW/wrvFT83nReIH0S+2Lv2okWafTDR93X5D8yjY5/s8SBAXBNqSVMfxL -ZODW74LYXUlIEQruOErYHy2Lmpo9ij+vN8ogJs+WHMoHVqZ+0bujRm/O9XiMexEFaV/RpnX1w5rD -3Mnfs3Fojb514G5ICU30Fx3ilBbXhddw+QLW76wWP5z/wDMpvjqmxND7h7qRIQd9c2f2J6g/lf9g -66VKQAD4FJTm/2QAqd3UNrYoyjMz6BaXRQ9YzY8p5db/v2OlwRy8NHE+KlZ+HPT9b++xJAlz5Zc0 -4RgSWuLxP8vBXXuGYuD2hAIc+x8GutPS5f9Y6t+Rds9Icnx3M1ldVbIj0d9iTd9caVaFE/VoRDkc -iL/AuFSzK/xLxH0FJPeUQVK+Fb5HazevG1f7+u8YE0CHVfdOmdpwgZBBWewcNk0C6UvmmkIAfZhy -kF3lMG40n0Z1QGU2zNyerWyhY+DgMm8K+Dxh8cf1WRirJsi9nQU48Vh/mBymsAiAREpkE90FPEIW -GdXjhdyyj9QbwDLrPYt7iyzf2rSF/4+HSNr6CGDMjEvcA7IEqA/W3ZP7h9oye0GMGFznq8WExiGL -UuXx1/xmhOAM9ZvvJW1x96SA88uOR/bUKtJo3KNRu+/giXCM7/zQ1gaB55AnD1LNctC7uhCFKMq0 -VznOah6LhICrP+oLOM6vYZVLyDNCVKEjWpqEzlPWAwaXtNGKQ/xJzvpQPbi4hM8XGXEI9up15ee0 -a4fU8QIbKGzRYoY3yUDcM1bwwfUA9p9YYKoWPw6g1GdzRSQzQ8datakVNHs1D9SUMO+8lKtf6Yth -x4CHLeI0Fv+5jmQEhtY4oIAqGMrkwYpQjX2TS+SF5M5Pkd8tDGHrEGj0OBT96k4QYdqc/WvqGmSN -GdKkjWzuSYX7/yOtlP/isQvQDcWyqINVX32yD1tUhguVfbXyzwiNUDyjlKLI0Kk475GWvN+xKaRX -35D2go2yfgsWLsPt55YeyrKQJhWuZp0ypazohSpEjhe7suI4mM4wyb7sinxGE3eSE1Ysb+i/HXjW -mHfQqt0MEx8XdwxEFhld/sIJl84icQfA/XARCi5rgi6M9NA//fkFVL89r2vfN+AUJWJSTonNtGSc -jaudWhGMb+R3wHMrgEKdq8yV6j9AYQ1Dcw2VUfon47NsYVLpVECbAl/gIn/EeizorjJRmH/2hKeD -4kPzGgK9EN+eqVCKJJL9jf4JSxIcYR7rYULszG0JCy/0VSStN3bd057TGYQrMN2LA42t92HhusEn -y/SUv0O505Np8Kmty4nGG/HS+kcVEv+B1HhZipRMHnlvXQ7RkbiBvgo9zqZIynUgvY2Gp1lvYxUP -WiKnXYrw+x2iLhqmhvsYQc+j/Y/JTuFYMxbO+U1NC1ie8TDzYfyLXRVu1oLYQZHyp22A4NzUWsN5 -H4m/8ffAgUbYI/St8cocPfq5K6YDgx0VuddIDQXuol3qIeq36ODjq2LKhHqvDDMjpuZxEorygQL8 -0gnNp4VtaK4aE2XXtSFX63UGJ6bx2h4yhL+hG2aY5d9vyD0RdivejlhplF4vl+EGsF0HaKhpnbhh -hfFM0In6xVL+bsZNl74kIwgcp5c5yCBLIjtJUhKbKLOpzi9yhss2y8dPA+mivnvA14RF4BL4wVwe -aQdWvRw0a9ODEINfiDmVlrUNC5ghz1AupHeN9MLZbE4J/VqpF1Os55zBHQWhBcJ+8QXinW0ptM2f -CQyA9xdAzp/MG/UQsErdSlZwX8Sw0N2c/aczYEaLju35WLeTaizq6m8QPrzyV0v0fRUfmyd3Ize8 -hKftjBImxGfBjWK8S24zRu4ycxobNwJ7tfvllhavFMbgDVjNJ3lLVNgYgZvAce78V1wKqQNdnLvF -TjB1A0nRHWv99pvAO70V+VyMuhEM7XozPdCEnqD6aJGXGdoOKetLPj7O+/8jNQGN+id6TScJAsRu -tnyty7Xtl0tyyfnZbTe4L6Ngs62CMoeHfe/sNyeWQAVUPaSs3Iu6jOavNgIIS2P999cpYwLJXiDF -zofVts2J6cCQ2QwBaq2CnUhtLvnsYdZlrUKswMxyyYnfrvbGnB3ooFpcPW4F5o8qtAU6IVdlTPgw -jHZ+n227oet5cempA0c6a3OevnNuNdMBeBDhE8IBFB8pYI4iPJo0dhvCVC+u/u8HjMGbdWeEXhi5 -NadjUT2ZYSPcUa8m3Feyg/9Xwp+vQnPSaE+FyWCJsDoWpcGHn1OusCzhRSGbCKQIA2jA6EV/nKgp -+OffxZlLhfftv2KFwn2jRtMqI2pn4u7e30t25DwN8I7PskThQb6K/cULqipsd+y610i3OGKbCE3g -Bc7hqQXltW9NVnLn/nRgjS7Lc1j0bcO1dKb0uV/4ALQYVgk7hVizLwQ72uSzUMrn8QePtrsV/Bb4 -y+3h1tL+rhMNCJ0z3njNImgtrKlFQSkjLey/a9Gw5rQVgyCt2v3qHTz1ndWsbkfBLq9sZP+pMgxd -tNMdCKPYfFmfiQeZa3Yg7Nes0RyngVkPxuxqwY2sdJwaCAllvuxsm7lNKe826021jimrt/Z4Gu1c -QeWHVT9MWg7Jvh2bD6Ubq1yFx27e7+YZCBkuAqPIr/Ll7UsGLxVe20eR+aUZhu0KJ5tURn+XnxGu -CiJqEPmL4XlwPixeshwkybXDnUJ8+AtjLK4HxhdWTN7pimAOX2bfhV1tZnJ4DxYONi4Lge51kb1X -TYYIB91m0BokJNH15IgxTZwQBJW3NTJFkJQOk/ULbJXotSSYM1wuQ2RVO2scA/0ABICImSqH4Pyp -NmeqCZQZqpehbvCotXqPR6Y+kVuolqxltsMRae/aXnBbWwSSY+X+8nkIjPJ/hLKXL9M78XIANM8s -d4x3W73XVaft2A6tRsajx0FBoREE5TDePCZd+qoJRwRcNLxNc7muj/JJpcKX7qbQcnFaOo0KSUSx -XNkrPZF1pWhyYPK3CzGrOo8d0qaIGnlPDyyiIDhZntFoBrQbE9CVNf5tURJxFTyKZcvL1waHOi1g -8wXh8MJrOyN30Df89qslUd/OFpEbVpLoKSJhfgMjQ7P6zrIfAjZmEXKn15WjTr6KejVXvUqLjGOE -tWUMnJ81VcrwbjXpdeh1Frl9lInJB/BP9aHmTVrq6HP6dauEV/ky33XqxFulLWeO6Es+SbcGWEOD -amPkoU65DtDJ0PS+y1S8IH0yx/+BhwWKz25dh/FNXhixh95ddqc0hK6mAFOQV+XyCHw8viX0u2Wy -LZxG3Laa8gkA+gJiKImDj1gQp2hDGZCPeWA7vMCPoM+Y06UXfZwGvfwVlunDN5tkNsPUyxfOFeti -QdNB8CrZBCF/ApzoYF6OclozWbHN2+0/8Hiw9Oma9AmCdLyJiS0ZIMyFTjfvmyNOPjp2u+cL1oMg -rhq15u3CY9kL3Z26Rk9phAMszmOoLY93zp4Jy0pR4FC9yw5zJOcEYBSw+kz34c2M64NoT+wkmVjj -aW9YfKfZJfPyy1H/YMfwabcyB57g3HPpoTqragN01K1zgytqipFboNj+TV3z1j9/FQqHCtWT3vBh -wrePB+F3MGBEF7yB2BKjsD2KzhwBLDNP8zNR4pDj3+qwDRUlUWx7iMmshANODqNuJS/V86zsmR0n -UCQF+kRrARN5gTq/jjMG6v9cxvNnlsRF5gH+XlwvTKD43BcAKhbF1L8UdzUFUNGStJSYNPUnnc2f -5V76wGnvkXSozQcpJo7NZFD5o4rJ51CCBvqmkKU+hpjjkccAXXBC5ykt52TQHSNOmoPIwwEVliPC -5HfDYtSltnHuyXgXXT2T0+e7urcoYUVnbFYV+2pj+J1toijUZTtAJV8aVRl2c9iDCcl7msfpj8jS -CH0Q2MF+M2PrwhzA6YnaPiHY9CpAa/VE6/eOmb1frqhmZdpKitolc7YZUkaLghb3K5cTz+FF858R -h6AnnbZcJFVXxrLNcmBQh5xGL4TqvOJkKw9PuCHR7+Ov55kHETdEj7Ga7GejDvZHT0vvFYQNq7A2 -FYa+2Fsixgdc6eu6VUbDVO6zhxLbi9J4QaclzHfmdqCk1arlteb/LfSUKDR/9irvgpfkL7i4EHeK -Kag0OC3GiEfWZfk3uEx9vxjgWhB6Uz7ZAbC2NAfTcge1YS9//Pr+xoUd0UNGsJ8m+NAVKM6xL9Q4 -S42GkjCZEDWRm+h8q03ZdrDu+YU+Jxa+L1mA+mEPqLndM+c7AshAeXA2TaFEiJ4+5oaR8CS5OT/x -ew89iFq6obDCPm8m/wNQr9Qjzme0wPQhp0taO8Oxsi/lqoNpmPXqwzrnw4RCGmq8kUdQYc4mXUSe -pMq2xOjzKL/0DldFngKTMhfEGlZaDbeNaLdaLKjIgGp8vxJsjSGEE3ocHsclwVwyY+hYgI97+612 -oP5DyT0PbWWdcrJm02Zbks0e0iFWQrkAYLbKRBRgWKufWlQ0Sgy/+B8HDbBJDmyWkd6qgXJqYLS/ -aWlfYaRAbCmaAhbMtngJnQpusHc3RUdTVXB3LXcWGLp91BFVpKI/cGDY9FTSvsrTs/M0rqWFB8oA -di/H46Q4qS9CUPLBMwSesIV0mO4OF3MvFUzBAkiYx8wxVNBfdOElFF172MUtZsN5eDCC2EEl1jiX -PVK3rZmRIgz/AvdEkxY4ozJJ7VFkr4Nt0O4XgkaTpWosr976ueRe/PMfX/KLLEbYNPCuo6+kWdxB -dGGv+tvPj80YzjkGRRWq5iID1PhThsp/fiAIM8LGdqdahlwPdx7SrbvMIlMH+CAaCUO7BxHcoFw8 -6jAiSkxfei2QzH3b5WVjvxaESwwtP7Rb7H07QUI+qDpEmSLCShtz6nYuohwoXAvJXBISwORCp/un -gLOVxKy4AmDMiJBk0WBDXqHezFjDbUY8gE+LQqHJ2DXH4QgHx/6Je8pCrcz6qrMRLqUmx3tdxfot -FFfprcYvhyl899YY49R5IF1Sh6LXF3q+J6MIlUFYKMHheSv2rLRiONquMVGxaW3v/9L1fBeRBuhe -y8yjMGcbcQqAoub+okTpN6/sIBWSXSx7K7y+06LFGLiETGib9r4+W+S3V3brNxzEx2HRr2G5DBEp -5Rz1eX4X74M9R564UeEZh/h8//FHlH9gWAnAQYP0J5LFYZ0sSPNDY1U0DAcBwayF1tMSMDX38ebM -Pf0aOmqRyHo2CqlN8HKE7vATzPaFUaM4hKwxLh0V3Y/WKJCUEZGgceRemOojWx8ekEaEyLZSrt58 -UTW1B8NdUGe+lX07VKtUjdc40n/JiCa75wpLovWCfCZiTFY0MU3M+gxaRwxhaiJQ13MNEd7na10T -ii4gh1KQ+C8WHs07MyyHyaLpJIPdPBgGhznY9YdTB+d6MuFLND7c0Xmn16riqMV7UJ0prAGA1M4v -oWXaO+8pMYSQT35WCpVSWY/Xqq26rY1g++HHIZJ3XIJ8aAxSQ8nkTDUBznXxmCPfZgQ0eAHMxrvE -LzfaF+ueSIW3dTxJ7Z7CK17AZ8tghRjaJES6IiikJDLBPEoi8hVxg3fRPaImEOjFXDjlhEz1rWEH -D1QKFsNoLbfK4lEDSMLLQf8H47g7/ZTymZFAciX/t3NdS0BOBoLNQGy53zuTI4qOmlp102zKNsb1 -FgGF7xFIQ1UDAtBRsPKmU6p4lsQubiND14dZLt9kbdbVokYzBxGSm7zmYckMZnQGrAxdqgeomoJd -DQiq7Qq/pnSJcWrFdlyY/aEIxEqjksJbFMSbO7gs9TqSl5RNOQV+KQ69hwmchdrhGZBcf84FJU7e -pnZHhTruE0QPZaoW3DF9aqGUeTd5jKi4/NK50nPBW9sS+zb+bycf3z2TlGHYHzLPSLRpf3A+MdMb -ttKZiRJUjIg6rXAl1XIef0ZAfLtNkmM7cqmWyQ5KJrBOoGT1L45NE9p1/G7OoimFZIu3nQI6se+j -K4fGHTad6ksKvZLIQlnKi3JvEWLQqByQORcUZHt9/A6un7mDvXDS8B7vAU6599MANmE5u03uXDD2 -dV0wQo9jfjrG3ReHWpUAPghsmzneW4F8ekL6JHES/nDFcqIR1+WVeBvCgik64E3pKtBmfS4ZMMJp -PVfcXXe2XM3g2p1U1sgagOntRC/DFPZG//+oF57w5g72IdY6YT3h3riBN0Ifup9M7iiiE08RKlNW -SYwmTfsRJOdsw4pr5jLzfZKCsiz4OiEAMhB9Ym4irzh84vlt8RUfXnv8A9BrfUdeyhmP9N67xozs -H05UyCn8k5Iiqyq/9aLbQdF2Z8CGoSiuowCRCt/+kj5ecTVzphNfZGDpkTyRHpI0OYLHx7r6NGUj -UgtdwsYuN+1WVWtU3QpboAP1w1hXil2X5kG+bhS/IgGqu2esdrv8bbzxpatq0ROKntaGgQYxKz8+ -zWjc8VtJ7aeu4VZgDKef/wSccP1xZ1VwDl/PVcIv7GenQC2Wed9k0ZGQjsE4JHe1BrsSZzGWjR1L -pWSNXJx+VGfz6XIigl6luarN5Mr5EK5ZKbRZrETZ7lT2XNaqTJ5AcVWMsMKn7Hr5yZv8QQtTZpra -UOCt70r/U/h2Eb4P7p7LxtjdJHNb5vFOwdTs+bM9doZFpICceVHKnyBPO2mPjUZt/q2uLiptc8fR -kCm7KHMIlZ+lnGaFTQSUo/be8AGXOYeirFG4xAnyNOOZyQ383pwgHFFH281YwaRRa03Nrg3bZnUf -QEbZp8WbadSML4gqLOTQ83zc4vzq6a5T9ystc5UTiiZJShr3dphtgzgCGh5B3WAMt7x4xOGGeFvb -vtszfSYpqMBqx2dEmf9bDGzlMy49qP6NST5be5lyHSVga1R9BkIltwzVt3e6AatsF4KlkiqH9zDy -hyjuZJQL+/2HTAYcHIHctZ4f7GNZAfgm5mIUjxJnw0B49bnqVUUwEWvQ1d0+SPzMAApr9ObV1Z0T -NlYqf/55BDyTMW76+krufG9aKwLr5bwa5dCRMeQoYFaoMIkUXEUm7B/dVp+umGJ6xAvoZmpprZpb -dPow55K8fhbfTCsMPKYIzX0lr14QiHEuoxXlSi7wEtG5xev6azG5d6suh2v35eLI90feDRUvkb/i -JAc9oodT/L+wNkLkMHzPmE9YNXrHY4yHenfUPryiI1hssSuDRJF5RhE2uAcIhDrQ35vkZ5lB3cx2 -hLF8dMfIheW+Ib4v2njnCHSZIruwO60JBw9wfJ4XJRuyLmSbZ9DKz0b3cHQoEutNOfZRP1Q3HVvs -/vUV6yURuCV/XaqgGrOqFofhJfze7uUsQ0bWAnfSWThVGCcOIQptSMgj8BL9K4alZf/HS+tm4qPE -U3pggbWSrnevbHPiaMmZD1vcg/kn9xA+PtcY4tNY2C6xtdtKQSNd1nktJYLtVwza/oHWDHKC5W7n -VhdmeUcFA068HoIeLc4rZXRqYYS4DGOZC+IG3Wx5IVN+r1VgOmM15ZcrTJFBcaJxmwIhX/BdUP1F -uG4gxXY01AeAGjNd6uRWi9TzBQgB1GYqSv3aLORurbTK87n2NhNbECiXdc5IuY5DZvHqrouHLN0A -fphQZ9tv3GatUuvr5Txba5+yZw/eiXQYkMmmX+t2QGY6YOMSLbdWVp2a7s9C+2HK6eUneRzv2jCM -ESzBbmfM9puOS+Io+DoePVcTJyvtc040gFM8MrA/uyuaeIhib0DsrEvp8lBheV3S3yySbMp0yays -uk9skSp9vDB29K+8Lkef2UYHxyHUmKZSJpeCa7RrfY8xPtiwlK1KumqspFaHAwYUPBZKwqLbdXrz -efpSaG7UWD0uMWBpRwPShf3+/AUVSOuz4yecKCMHgmLBmEHzu4efxfrEV3dqp+Kq5pBMtCbRZmjQ -EPlJGcoAOAGOSVks512BVCg+ZJTCG34BPz/DYOt3LUQPH6uq59BQsoh/Rtm4XDBIbWrYGat1mSzH -QQew9mPIBGFlJ76z+DTeXwdMBXToDNnxIVAa4QFoUDFk4kttDHoq7Xm1cy0tvoE6h7uUthKmgULS -KNRYtukGHCDnj7kJYR/oZnGx5VVyrMRZtNdeN32X8bWIbZxYZDEyQENvgEjtI6AVePWURf8lHwfl -lhUWbP3N37eqTSaos9DcLeOdnXzbTD8QMdVlBxnPxpfx3wN6wDvKQCII9+CGQ0HKEBQ10COCSO8z -8EmmNOBR2y7CKCtGfja3SzjLww//v4IyaqU1A6c6yBpKCwvk7tLzHhWfIsQsMqEncticcmSqnMex -eJ8/SNCXd8d6qm2yt7cjQloMdHvw5pMoJZoXjsn10RuqrrN+b5g0IJPf52J4Tc0nLgy3KYaWsrJj -nTF0G5etpWbdw7fsFxg1aPgn2TRcU+pAT6Shyj6hUCPyrAWOZUH+V903whWQsI0tk/WoQiCuOHec -JUfFjW92XyLWrkbA23Yi539Eeph6e/jNCmE0ttBjHvhSi9vncWeSxqdT3dX29AZwD0wcnP9SrGrS -wE528ck4TRUJP+3kyLaAYmAFC/66M8h1lJy6MnzpUcrWLbOT3Tdsjh+fozNcLkahkcL3hsoKtHQ/ -Vi/Eo87Xc/fb1shCMhufXLGxUShydcnBrtBRQl4IaGimJ0Vb1dBLUj7ITiOOhmJf/kERU09/B/RA -QhY2QU1iXVfKmvJeQ8liHfe/H/unAiZChLw5YdugzJiKYs/MiMwHBW9jA073EeaeNWVRdM0VKKIJ -HWvLU1pk8JK+PIwmVB7xw8Kb0il+8KTMKLG3R7CoCl0QkUaItATe7Yj7mBZUrKbfGfJXTvVKZ1t2 -52dGnLq5HVKiM4UfBKaFWpOeuH1wDbxcBBBetCKrPqLlTM9mcRmziml2BQY7x9teQjHgMN+A1HmF -KFR2hS9yxe4C5tY5nG3uysarBcSNs+kbPj/XPbsk2QDUPAaXvH21wsRv4cE3W53dTXGjuYQ7sHvO -5Pngkvc7fJrZZyjK461CbBazzHTUeE3z2I2wuLLDnFr1TgqtQk298pj3wVWU25G6uO+dy3cwviXY -Xxvs1JkqooqnAuf6tnDxoZ+Kikzm4HKZd0CUym2YyTh0A83BXCH6Z/Gaon+9/S8XjqQziG4tDa2D -hcV7iYO2gtnQANGPNGMMCs2tc1xKwZDyPX0DeN3o/ElxN65P9n0AID23POuH0elmNKCpy6YYumZd -mBEV5qDbNj290AYKdgPnP9OTalbaqgEEU8Io813pK3mdyQyLpVvk/0SR5eq8T7HAb3PQjAuAcLj7 -Cbqe79T3nFx07jB+IGcweQsxJi5JPc45ZnBQpkkGK1BXTzEOgXIWlyHcWJpei/sXFz8FKuQF7qkJ -PqB732YuCUxTZJ02W8yojAJM/C8qB4bY1SNxPZQZutwIlquru3+7VLYBOmoSL50dspEAoiGOnpR4 -nBo/ytlg6zMMFzrfdVpCgBi4mo8vwIsKtd/3yor+G7tySs4yUK1fP3bCBJJa72ZINkvhtE8Bkuyz -URyAES9lAfHDIky3mV2DFiqt8t9mRHCim7X1fWwYPPLAUYTNwnMGAwC/KdCQNXxOnhpNFlRWIXHe -kwDNz5dZ5YzsAh+CJvi/lrVS0otTdCYu8FrjcigokX+GXN340hzrNE0xkDTqUZzt8X3pI6lL6Cug -w1L3b/6u5jO0vgm0/WHUd1ylxUke2bRUyYL5hxOn7lmPK789AjfOR3CxPZ7h9fYHDULWtWV/qBTH -z3gBStsWOhCmuyPMYHP4LdawtlgT1RPfLQWoH81+hgev+YCYbq0pzj/pg7n7BeqY/K1jeyefzcIo -po8mylIKxh8fJZm2x18gY63/aH3gBkMQh4aIIJNh5qhCALHdNXFsk3eLio6Xx6BqbCLc3uIszI+7 -dcwVfbHn4a9/VF7YNTTxHbir1GZN0odb8J5Up811aC8ZKRvstTqAUV/mJS//ikVU/9sjZzqlkktb -evH9cUX1Yboy/xo7ue0P7fytGcyeDSdwpoz0YLIfDHEzel7gKnhsDn0L3eJzl7ZHOty7lQd9nEyW -fcOaM7AwGwG934PS2yjrhujizAEM28JbXYvswuGh73w4zkyOkW7q6OPqIs34kmpkfVpyh291sreB -4iXd767cR0R5L2M6IeVV2lDNHAVQ4JZ8cf64f2HF2WQskPmrYWxxAkwZemftnnIQV6dQB+s9gAfj -I1/W/I6He4dvjFTVDrLk0MYh/USfHRB6GpzubqUpcHY1eZKsyPIli/eqm5H5WOAz55Nwwxvgat4j -IPmf+sEvIg9EXxcxH7dp9cPMbpQgyojxnHr9OA2p8gFoOZ5CHDUfxIiOZq1/5PYeYXmtbTf2jJNb -TnLn04tZFN8b8Py9rnfJCtdHt3HrDLmyYt53kQ/HfsbtlJxkdDsw35OM942Revfz/RIhdbNGO/k6 -naW9hXIcXt6sViNOD2BeymssjLuJPnMVPUbPgVo5BVD6cTLVsVAowSnGtuksj0wjdbTo9MufcJUD -o8HpbV95+aMRVlUmCnTB21WzE4B2MUXnMIy0iF3KvU7pJX6kd5ZXwI5nD7dADAhA45wjZsNINsvH -WsUutdIXUQHpUOlIqzDm8is3VwPIqjAYPgky9JW2l095WB/SjxW9QBj7tL2ZGD8ZUfTnosnZJJ4C -MalcIyk+dmyInzVOeopHc3guFDEV16cV5YXm6nKkvsSlWSVOMtTng3rWREUXZxkhnQ6WyB9psXbN -eTZn/Rm+4UQI2hDoXjrbVqvE4xp2pMC0qpCxopm+sbd7DyeBKXOLbZ8j6eBZU6lWLmjz6PpxnAgc -gRf6+m8gzc0FGzdQy0++p1gtu2Oyg77Hk8oyUNRGII0CA3/1KDjvNdTfkEuEwYIf+G84uNQurMH9 -/gPyDJ9AiZz3UicQKejeyekxOlENYoJYppzRJXo6wusvRHocXLmGVNRqDWbiISYmEfxhQWiXoNVY -KjIYwL9vd7hS7LM49UPCmXBRPGoGB4Sbi1UmllmpNSCbJWmkn9nA7Gyfyjt4qI+29WoFjbDJfn8B -bSShQkm0zsNDPPcb0cRpgvq9IY8TIZ7la73hrmXasq1yA7/SXlhRUCXeh1PiXT6gNzNJGs9h6zcw -3gEaxehPV56Wh76nbsw9mA7c6d14CUPZh9gjfwsf/wY3XqhodoMQsaKfuynizSuSHK32tmKnds8r -eCdtDbAe+Lg5kK4q0hY3lJyJx9C3sWrwX+a2U+krtwK9tA1YusVagq9+9z3hdHznDsjwMa9ULIM4 -5+byllCq3VnT9yAAgbIiORFzib1ZBWtpmh5Z0VNOg++u5LKc9UNYTIuZW+1b2K1S7Xoiakp7miZz -olgqkDxsv1VoJvao68q+/hY6ers/jpGx3i/qA6JygRgRIJS6CBpcWszUXcvJC8pIxkQmVOP/zuES -76DsHb3j4X6syknTD68jcvRW+paYddVyl4QgygW8bCTa+z6zcfCKdYp0MgI2i/fVh7oSRn0gEUCk -rFWWa5c6qID7ZF+7C5nj7fum7nUS/6lQzXGlwod5kuK9S/z5EhNXSycVW4zSQ55rUAXlEONmubW+ -vnVVu32/o+N8CiTTvHZ9fJRVxvrQx2zvFrJBkN+1mhFAch91CdAWChimTssTCt1P5QnrbuNvKu4u -hPs9fi4O1UPtPAdJlAzZyY9SUhAJ2Y+OOQRojNu7ORqpf2yc8/iT5oshPjL4kdryMcHmFVaxi6lS -CLcAItkOYgCWHVqh7MJ2mrfyCXysWnwCTZPFYgZjZ3ysVIgLB4ufHX7XwUCyKPbR/vLyRSQKMIBP -gxlDJ4SHIEBSSiAXnNZdWvi6SDvX+icZhUl/VmUyncVakrTGpJpbmZBnKdy/YkgZFWhJQNOkeLSL -3ACQw9X2nk6yjlFlBGAd1gEAWPBhtwFuom+g6KW6G0fbNSN8hHtCfP/9mhO+XMqRj5R+KYleth/j -CGJdlmkEUhikHi5y2K6kGhk9cj3+4bP0JQqY9oqIrUu+SPNCSpIHuHfzU3M6H8UidBDgJloebAYP -HTyr/XZ89o9aVHSIQTpJQwqST06te7eMlWNDL+n0e2XwaHpo1HLjl2ZH/4HqOl94gAc07tmsxfxt -JXRq/vzR1kJxs/tnIdYsSZUMRYkf4U4CtkffDnH5geg9GLGP6iow/g/lwBk8b5HlF+rMWDCW03kR -CZYKU79E0Zvmym368S7fobbrPQioNhEn0sP9vaQCf1nyovSk+kXaFYbPprCRhjlt3EkYxuVeMpG1 -Fj3JaA0pP18WXNP2DgdsjkJyYqCm5rXWigJo6rzhA8jzdmnXbIQcC9n/arL3mSdv5u4c0UtkrPZe -zXuH5P6mvxb0i80Spb5aQj7fcxrezUBZZ4Fz/lj2CBuxFv7MYOTfR5zoOjyiUcW9tvwMFn9Ljtaw -38rxLwYjKER4erade2ULuFoxhrnbNAXJUr0BcL2pkip2/W8WqUyLUO+zAq7e6YGysoBJuk0d+H2R -TCYE0wObCSvRHUiSaQQfTev74SGymjIQrcIlNNVCu4jUle1MJnPguyEL47aWhp01hMUeLd9LGNha -jebX2K0Lmvnswu2ugL2ke/e5iCIjzmZZlvCpPHWUD0Cc9vIHSlboqWh6ufabt60oKYJg/daBJThL -oWPvz15/1HkpEJ0b9+SSTpoDMAjclrsJakyYB+sTtfmRtLUQA7f46h4OvkCeXWkNd3pKzRhOs5Rl -5DWyGHXzvCmmbODAVtioS440VnuEUF10qs0de3Dy2vj257PlLDcd8uQzWlIoa96M4X4gkAMr/0mY -wB4dMa02d9UM+ygb1qtmRS7JQgEjM+9cFkxAJIYJO/R5d6kBuLj/wzun/REavyZRp8HxO2qdimrb -2Si1xfrRK8h9aPDJb5Z8By7lK8nmgvJLCMNPWIvfIC6x2WYGtSyIlWrBQaB5YwipzDot5DI5oWkc -3wU0TzEzRt9+AsGANL44b0dKeNInxWPwbuaJeWp3SwKJVP0aPYkJCf3esvc2cBPHxwEQc+Jzjpm1 -vIzo00jBy1ogcDnO3Un7+J7ceKVPjUgvfexb6teuLC48e1zDpjD0PMb2F8KLFVakmbg63U7682Kz -GU8qoGcX8eGE+DKYN6XrCF7epS2q12KhgZk3cQ6C/psZ2r6QNTMNhEm/467llcxHmvAF3NRFnVZM -ov1UBlhl4Kf77qmYRQBvQTRnBgeNtkHj/pNpQ4+aRwj7dWiIjaG9h4+z+6Oh+zY/uSNoRIclqlGI -fD1cd5v/x/bEGER4wcn7XBiYUrSJywp2nxouaEEoe3URBIwxyLnJ8y1O4kfNNiCg+rR3KU4u295H -6PKeOtIOeQ0OwrFkSlFSetfZ+s4d4A9nSeX40g6zdGMFD4hurfi8WcMtZV9hc5cUyirj51LaRSqA -iC8lHegt2Q7SMira7OKskg9wRasRkSlgImzi3gRqQkyygPXpeevHbFcyHKhnHmN4asMCp9UzD49J -ifZh2bZmyuotb2ANqgL0DGdkEdbiDwbf2Ph2b6KgnUdWxiC9C3Ocxmbr+56bkmemCRX5fr3OGj1p -fdap+UaiDxYh0NlTh82ShUOEr23aKwBw8PcZhrEhOtu4R70/PuIqonuKsOIJkDNyjrBZFrqiKdNJ -u2YZHJ2mOmMLOzcTe9QvZ9z3bOE3DC/QS0Zk495hmTQdTKAMDNIYct1zw+rLAZnlR8nlYCmK9A0b -cmqIhMCPpczD11/mDp4DRZ0z2hcAV6ZOyz4F+w5n57+GSRDciZAk2lP0W/oP2s5BsjOKZk4zf6Y9 -QoNtR7+/377BRhmac4OpnOWblWRWjZRoLzyXXWzs3vtbgMW77EsUdtatv+xCMSe0DAsoMythL5wT -4WFhGmG8BgZgFW57vOP2xdK29Gdh9oCWlnp01mwNY7hWiOgYooTwIsHa1kLIHuNCLQFlwlDYKLF8 -3hiiK8SDIubPRujCFvd2OyFgqCvhqUSadTCfVNuPb9Wg1l55kEVsQzoNSRzbxo26I9uztckj4hj+ -JGwKL237WJDboIEo4/csRvWqBn5hQhuHkWHXY319TDmvusBFV/l4Kn9J8cAjaes8MRbiJWstc8Bp -kCf2cFbfUYonQqwFLk6GzGNwiTs5wsUE0cnmsGzeAjqUuNR8WGMYuSTodqaAFT4Jfr5OSM1XcVPF -w9oks8b8v6+c6ZUNcQjPh6Muw0qhPp58qiC4hlYmPh6LW9n8lyZCFa3p2qiNfp9doCJf9vVSwKM/ -p5UziNs0AqCXyGxoyfyI7AfhAxoj/ZdrjcYthMwmpQkeF+bOEriJHJJdd1miqUNtHR+I9ht6eiDU -9VliyuB2fdTYkreC86SsNixIIrsVEKgbEVcP1oyPIsAlOqVYQIorAjyM0bcuUd6f7N+kbvWcIcM6 -hy1R3PW6Khezws0PA3Q1z0Le/RdS4Sor/NE8MdyW+ov9eV8CR1ZtcanFKY8lQpn2Mj1QV28ZidIl -pCcu/MwvbUWaiboOdZOo4GRZP1iKshXUrgbflgWMCs5DEIT1XcS7UMhJIN3++otRnu3c7rfeS/L2 -p27neiJ8dEwrpDwZardKynJmjdc/iRYi08I3jl7hkMTdJHlsv1YKLeLFrzBS3NYsQdCmRQL0qVLj -izmZQiOw5+nMRAhzJWI4f4soDUG2mSMRotPVaDOxaiWjh0bOQTdccg38gK5bzxcPRt9qeh8VQrW+ -nLZiI9HOBal10CqDLvwLgq/e4GLmUT+lgdahzHncNi3f2gJa3EtmHrLZBe+pgF/oSd3QLbgmCz2Y -J43oKanHobbIJ1uObeprWZGfgVBvmgedxE5HkXFat9q3Sag/HXR0ZF9ZxPy/wm/ojR3nhG2HFxQj -bmU3aaimfjX3v7ewZx2T89jg5+tD9NPzDCyf3B0bKtW6D3oF62gv8TTzr8dV5Lq0QLzvDwbZOMLi -cMNnAGcHJrLMvX6QOCSoZ0BqS3GfBW13vJC1aiy3y671eeAjFIPls+DQqdhbqU3xr/xwyHaP7eB+ -++WTNCkTUOJ2jyUjajmbe4g7xZmKPRC4ebhMKUNvXAVd2DMr6iDDgLJhy3ZFFnvF40L93Bj9jtDg -SXI7GVnJ7E4mYLjSJlGIy1DxLQFsqPX3PQOd9E/7ZXrynVSsIe+HMEG/HOPsozcYtLFcNMrAEpTd -aRFNYKY2GQuQFR8HpPpQC9LapMzwEmTkfVJd/9TgIVT4zg+g9uG1OCxtjN0xrxE/qffnvckhMzgX -G9ivJD1bBgFHLRvSOPHWixkQ4dA4UdJrPwbgrql2/iHr2xGxpSFrwJy2td/q8ZCfro5dDQoTCsoX -XO0PpC0ky78Ic1DsiNWJ/zsykwnWVq9to4RocHC3I9DusUA3KWKya/aJgBLC8s2LsOgDojrG5PYw -zfF21umVKzm4UFkLl0LtDFL7hjmB5Xbv5EicLxzwo2QRnzuRF24F5TP9PWOjGG7gto4csPZVbb6s -Zgg9by7Cz6dbllb8V5hrJ6zFD1j7SocuRaSh9fGaNTd5EegvazILDedC1vWXYZSDRTxCUwSM0RR0 -OjgJ8QYLH0sJUPu7ObMXJrG67qwvhV907wFHnTxCI8zi7UzHLrPoXZBXASKGgRKsnsoH/IweXxql -YeCLPM4KYMTeaj9m0eJXpfAz4OrJQDcS/4IVYsdnU4pzAJjtZmcWP9q9KFQOb1hEov+7/uHv4u/B -ZY5VRmLb0yKmu5LqjNuq2gF/fmy54UF07KlT7TW22yo7yaaMNwdpu4uI+GmVxuUkiwmBAQh38QxR -YyFIM6KT30L6PU1MhChrOonlPXsqkfUqKurwSEIsDe80cM24ahA+u9SpvuOovo/rq/b9AtkmV5wI -28IqG6ZOQ34B5ira6+ibQwoqYsCTGINGdO24Q+v/WnxP594pLk+QpRn9QifOQJ2Tl0tTvRP0NPay -DOgqyGcRlydQ517bGigvGev+X7pdRIVcwSTiUMPIvySenUno8JaVJbWju1gLisaiXPVjhOLawyqC -e7YI5p3v8tcq7dR+dJ6sKUNlXQaBj8rYfEoHKWHi4iAgVYwuBf8kRyzuFFka6MJYZK3p22ZO4/Js -tX6xO3sPzwqZ+A4UN9b9D3BEe8W74lLYp7/pjx864UfDA9+bKYUOcna4FDrTX6UrykJuCA2U19ab -B58EYYfSRkAqJWCDFYedQMjPBat7nkTXH/dEKrEtAz/eNnia3TX/pU9lTuSXnEPx8fT1rurMqCOS -kqlJTZ8pIOVBOzKE0olycvYGvJvW7TfUkUIMbotryCg9W4f7VmwbEjAl5X3B5Bytv2mjRrTwjQXB -EiSodxlVXkZHrGHzzAGpCtg5z2k4b34/sx5j92pqt9R3aa9f98l6aDaIYR+y317dy9TnsO1elxIS -siBoQD90x1Q+JWvf6O8GzZJFCRz1jpkDwZ++p0F97Ouvwdl2zp6TOhSRyrSHGM411IhntAzEef+4 -AH/tJF8h1CnPUI24EagFw+FPeoHZ+NBIWNs+RcMDEQKWREqcC7CP6Cbf/SQGzs0c1Ou+cRJAv4bX -Jtc1j0slsLYesiHqRVFyw6r1nep+pYHHfzbp9w5Gb5Vn7s3wLtcACig/rUI34wwNFDS3rqRv63eE -1u02Fjdpmuy9I5d2+JoqFDGrvv5kFesfjCo+ZPuD3EP5AFQ/1VVxTgE4yoyOtiIzgAl4ztp+OYdc -Iq5N+/AUqjZAqoxQLmNUgLVGgxjf9MHaFjx7oUaXvErlPi/YvlI7qNhlgSmNHXDHaULLKs8Blahm -jAQvEwYfPA9UJBIRpEsbgimTcaZIc+ir6b50x2YoraZPzHGdwH+0KOW03YrhaC9XbuWjBBV0BX7e -wG7qdqFm7O8QHFRAu6vQc3447KLkVvN71zNhKbF3NWfOZ7RM6zhvx1lcauCtOjTajIYGdGX/qFRe -Rw4BXunbuNNia6FpZvlqMurIK/wu+bzH2UBL1cPPR9MNtHLdUnW4J+xWSl0jJosilTk5hbb2ev+p -0Mqcl7kt0kAfFhLKbMcbB5bpTgypg2bwJKwtIg6KREmWhKtkxUQdcntQ9yNe4NeO/wMbR+x3/xaB -VSME77jW9bbivhzfsYbbiI4aRRhieu1YKPSBNnf37X7sJCu5p5Q6S9HGgIM1VrUPw1kud4ztNewz -zEMZx0A+Gb4crNl9Kkd9yAkYHedLw7YCAgLbe6Z9LcXOtxiQit6UV1INJYE1Hxune1ntv4y6VuXT -Rrgs0dozmViO32iUw1QZwo/hh2fC81t1pY6QMeBPs4S0OoFQRBvZoiaiSAUqJEFaEPaqs21YIQqi -67MAl6oWdcZ5skvxjrIal2snl9Km50mcn1T3Ll3Yja0afAN5A4ilbnCPv06x87cGeg8DGCra+8HJ -qX6Z7eLaXL0PRTqh3m4xXjaTT7z91HOib7JIqzowwhaR5WwZJg8YZlV2sCMdefhv4H4PCllTikoW -boyF0x1AchsdXgZRnma9LMhYx5xV3pRf8DCkSafyBSgtWIlPal9EVsR2S2OgGs2z7D54pX9cKVJD -ZTsKV2A3/O+fXcYd3BbcwB9uast7PJAsRqw+y4BWBO48gqpBwOVpP7XBwhONvSLzH/6VzXPQBWGh -nIqGSb9ZFFJy5UJapLCv8YGNOh6dzNjXVhAjxg37Pexr7/gArZKGsT+1Qts4DMBTgYMWUWRUQNhy -XJuMBm8MZDdzpkCtTw/TTG6MTRLVxKxw4SrdADllh7BijU53aiDu/Mfbl4g2ngUivJwoXtppxCXZ -DfTK3m0DWnfUmcNuHaBM5KcexECP0NhHEWv0mnVaZRLsxCyJovPisbV1OkBSZDdL6fZ8U2TZ+Sof -CLm0rMMjXrN+pqtLMtn/dt7AC9oHEfrs0hsoptpDuhEk/qk+Cbuz6HvCoZCz7+W4tFMTF1YDauT7 -xTnu/4eWJWnTVGhDWMrXniPUjHNKwIiQ5IhlY2s5rhinkioiMas8UBBazeiXrjhhzjQcDea1z4z6 -eQUNIiFC69J7moT3D7PehIokuy39kNcPbzIkpJKkw9ccsh3CXctlsSisSog1fCVO/VfiGu905OtU -LeVBsrE/zYYrgsKjK+gcZC0lTv+Q0ZDmMay0tYtxxyVAKr2wd1snVejk/sElugpzxC6kfYbDL53m -LNMpH2FnBvXdGM5q6LDBPSyn8s/vUYic54z+jgILjYsKGu4ujecar+LYmhIGjGU9IOfy9czhjMUU -hy2WS/MrXapCdcfXYzXzdNikrTT7s9t0SjVuBmDY6cDwF3rSa30U887ElGWUGZABU6wVhXDLVPwu -pkTl/IxEYAz50b3H+SD039dSUu5rNh5/H22mGFDD/5Ja0PmCYvMrnrlOLRsy+GP+mwsEZ76yZ51k -gCtPptciW4cl4hjjfm3c+FtIzFiCVP19Y/mOl4LltGwm9YWe96/6gzACQ9eOnX5DOIc0+9MwDobT -wpwDqQispUfOvcAWrQAnYFymajjmsoJ0ocBxmSm97na5jYpDn//FW5HP5ffxouuNzAJgbPUfxAPq -76b8rX8vvkUzgbt66SfMsOVQfUdoE1eGpWSDpPxgqM+7zzz1JBmorN23LECdORWnIvfe0+Z6DaXI -dfup8/T5S6Z96F16Hd+8g4SzUwftiVN0Af4HxyJWYy7ceLhbrwrEYtJVMKW+zeDdSRZ8hId8Prgu -cOnzVpUx21RFywBxlYFlOlwCp1zOGdveaprppF8gpZmgqCDqmHKDyNbTfZIORcbffDldGCgJiEg8 -KCdllThz78sPYtto6udT6ao5O5ci8RJn/0VkcvPgGCuW0spov6SUwGq0cfypSIURp6fSTagm9ggo -2CEiCfsKZwB4UEO8Pr+LTpnORXUGpJzBbnsNp6tguxtiIQ5lvOmqZisodyRvQsJTif+wsp7g4PQN -GB3nRhvS+RTSdmX/oPjG81XloXfVynDG1qiQXx6ArCSqOjtrrb+vOPALxJ5KLo69nKbVMGec7jbE -1ZE0pkvrBsuzlT2tcGx/N55jTfFO5PGIJ3h51bYX1Av59pdeYlFzxpwCDjEOXSulgFRQHfAvs0sP -LyhpmnQRNWqbGy3THwyNR7kbxXx+JY2NjNGc29vUDptBcLnj+5szSfNu/1jfQA9AAB9DfX43i9tE -mghlTR1xGIacSySmYBVdxOp6Xw0DRAwO3WKREwSe4XjclyNapG2Np+fOklRnIdIuswfXSaaUfPFa -egSzW/XDKiM/mH29ffvvLBsJbpFikrkH/MARuP/tViP/K/xPyCwLHD+/Gqw+H0h2tQ1G7unl56Ln -FBWOP9q7I952Qa9yFLZsA0osxJUhl1rl0kdC+eIu7YPL5eSdUYBLys8kxNbsv+ybWZlTaTNcxNUz -4DMxVTVuQI06Ny1FgZxvH/12spHyyy51A4W9x5rHVcxPOPy9XGO4R8ni2GxGF1GiaOF6o0/RSbXz -tAOpRtjOn0AbVRy64TxuA9D2LyqjsD5N25z4DvFcx9EJIj7/iDJKo6pGgH9hmil437sgtfsD1qAU -klbJLXcHdb5Tl7e6LqvqLSjQqOAvUdn+NFBByxQjXcQ2+0/5jIqUurin9lL22JiiY1UQlOHEdjhW -VmHdRrE4Cdnv1HmpKi2VnMACGB/k3Mi1LBDN4sqg+vEoumxx0RdT0GyjAWm8eFTY49K9vTeLBZcI -b8ZfwTQ5N2heCuE4NUPHeIG5z+Ath3alrjCkBWePzddIWf1kajqzY6n5Z9Wx3ET/xJxtdC+iPWXb -Q1kVqJIp0WlGFivG2s+4igd4aJl/f78jhy5d03NAK8+Awf3TL5nYzPcxZYKQLWO3Hstn4U+9+VM9 -rXWcoZt8O6u5Zw3TKoyHBr5L0i6b+O7exIQj07MGynAYjcB4EktySSRmA1yc4Z5K+oaQaU2HwHlF -ICh9BeZ6WhKQhmT9Wxi26jx1Qp1Aub6IMu7SX+6AuzOxP1zzIta5zmCc980a58hCsXA+PnbZjDq4 -R51aJJWvDmAhmsT7yta/K6ptZADWVtJrS6rIw8H5qQv2LuCefnP0vxUkx8NAPjPOcYH1Fecw7lHM -dGdtIqLFtHesf6tkqK/jxP5CeFHKu9cog2/3s+bmLbIwAjtXk9nggK3EXmRXItEaQjulssOg3TFT -AhA+rUftDQckGaE1Cz9sRuAmvVB3MtR7PvW8hbO7yaupyRpqy0qCeKNPQ0eOT8qmQv7M6+xbP7e1 -CfJ6CyIdrPEejOCN+Rsh9VjZ6ZTQpIH4TNLUk4EedAWzYFqHRRIpZDAzjdLuKIGIXhdT8+TCPl3k -65j7yhnDMWn/DpgeTWIat/RTDT2fzlbIWi+wQkc0qaRG8Br7ZmGYdRFGYWijNdsEIl4ZLPVmZPd0 -QyEXsnrkgLMcgNJQsEe8jpjg2ZXqsExHWV2sWXeKdf2ieZLSIqoiiUbFZgxinLMdzc5f7DYcyaBN -Y4S+JEEnthl1lf4SB5j1qcNl81T5Cblb92oK5bG70Pt2TpEVucaW294tU+yS6F3iOq1e0bWdNixg -QlJHlD6SRPw+5hBQcHrzdbXg7hXM2eHhKRVJhRLfTXn2aclI7GHtzF7nj+O+9ErK1XS0y8PijAQ3 -J9Y4JJzi/0lflhcYaRnlcu+H/f20L5zPwC3l2bqwPOA4eobhRluTlkyZrZpE8X96+PmNqJe18PJu -pEFSFBiZca5hs8OA47SWotJTbzUf4AN/KdK19YN2KeG2ZEpnTsQwFFjQE6iaswz1gxicyQk+XqhQ -u7qCC+PBhQGMyEPfcWBPWChL2KAhFHrtXyV5RalTMdaF9c+v0YIO16/pnyuSUB1dwJSrm9LFMfA0 -x+fhXD+jteSn3B1QV8+q0Un7j2h7AsI52zZRvqpFS2IGEx8rQcTmP3ikkW2O/UIi9oLegd9ZM4FO -J9nzJt1wdtTle/4KTzywMcfUf2aV71pWj6L80KYHkFo00b/XS3TPNqWerG//3XzJ6PKa7RqgXtgr -DqbjhAr2UYwNzcgbV40Q4neBUMwzScWODMxecznnl5KMloPya/lErUfyTiv5rUELsuz7FJgkx8G9 -8XqA63crije+uw3JstYgUpmQ6WvZYWAefl+joD8f36bSgmfFAAyHQAZMCXuX53hn2oC9vuh3PcWu -DqVJE5uFh5QKONzd+YcK6lrZhAgE2l+TpdnFTZzdYA8X112WvRNWjJfDL11h4clZVOaMTUTcATWI -kq3txBm4H0sgF/c1g+CJJcIG8FqZZqFgNWz1EV0gc9uZbogM0vxcPL3rYg9t43ggNRwghHCRVrsE -OotafJ/+rvyLiz2Wb1p7SctcuCFWivQJuz0fIgZt83O5mOuDgSA7kcLn5keciBe/71bRZNBtkPLB -SFmRgmnz3Unf/yWI19c4LaAmwG1zWqhbaPFaeNFxFoDYhdSQXqNcJkjBlPGs3y6P4kSKNr2DYbqB -8rmtKO4iU7I5AOvwV8PEr03cji70ed+ltwXYOJkVWkfWowIW7ISjAmRhRmyIrZ+fp9UH4vAs4MCk -ZHrwjXIDAcHdPQAnrdNjPRmZym9IAc63QdwnWUcCSt1cEPqx2vEvtlMt3HjovhRZlfsvXngNzMg7 -wvnfHRYEegFDAzIVA1w/aRLZ1NR6233noT4PX/QdWplPCgl6hDAGarjLCXdO5n9g+Yj8iJX72VYp -PxJ5tVzuPOcu5bGCwjIAEERgpmYfEv6/I081WMTiHzSvdACXE7ohCBOzRySaT8nXDaeJf1hP47BF -W6i2D7oFSYzBoSd1SDM4C4oxD13Mpn4PPcoIbXdljHkG64jcRF+6QZI2I+kOrflxTL8gR7i5aEq5 -Te8CQnQ1CnXiUG35PGcPc08jsW7eyUZh7I5wfILC1j9puWLGBD7Sw5YuvEX7GgoBi5E0CTzVQ2JD -D3MRTgqDrAlBfjnCEmoNwPTbI6de5LZDmiwjE/mJ/jvzeIJJyxXwtiTIPa1Mqh1/0a7jiV2BqqO0 -2mxMf/fZ0TEhVlmtUEJCVnU3vY/EpfWZ+RPhsaFkhSM2MqrYJcaBJ+/u51ozdYVNZGtxG3kD++I+ -UCSJEV3IH9yXvkLn521VzqL/7MbV5jRjpOeSjN3R52/masVJ8mWjfkTiiJicASZWNpAhfwivLNrJ -iZiaN2LkoC6AUKphAbIL178yYWdRyNLGDbJgZ4/DpCQW2sfTYXzzxd4ReRz+b14KFekRAb5YSKfk -DxeBFdcolcIwfCK0A2O090j9bE0Qf9JJHGgHLfWXf/tkwDROw8a3DjA0WpJ9uVdHPWocd3TnUxZx -QF/1b2yJhsyVEUiFh3CN8kW/d0IhsLquiDeRV2Z6F92h23elz7A29RsbtD3A638n7QcqJwSMnuFk -Wcp0MwrNf0bpJWG5cRcZWZWKXhLibU/bd2pHEMCxzRN4izeU1KfiY/Th3hvXSV0kUy4lxrZZH8rI -gcvfe4YI40mBaUFqaQMWEmiK6JSpIwmQvIvgMec9TPAzA+XInV8NECiUoifZRVVJixqa37oxiSwq -kt1seyXT4ghOpD+TmSTHdS8pdNDorfanzntQS2hkqy2FLlHcsaLNMZ5sZM1brjyMPJNUI7N1K1Xq -vfTBdXcS7BcMCTWHtWBfuBgLBBbIHr5Q1o4uAiZ/2si/RrOKzljTOvKj6e4EX/Rp3uHdCY0kYrBN -eo+dK1kNM1DiaU7DyuuF79K5LNP6A7SBy0GRBvR6DEEsFhTUj1th49/eSX47b7emKRaVIuQdyXG/ -VY1JHFEMrTow1jAE9iDMqpBCem2T6qk4H8fvIU/wARlRBU60rT5KBhCo7Ov6uY2NdHnPz7qdpaqx -Cqe+XsJfAESDo+8JffALcBH0mR/Ub/uBADh/MIBD8MS4HgHybai19z2TQi+0dLVWUMuh8X0vhO3Y -xwFhEwiw75w6xcHVVmIBw9W1wE+oJhZ670yGRiJGx/KpfgI0zyHSI5YbdSu/4OXCz9eXUy0yoBTE -xDzLT4o3IvDQLQOMUql9guDlT83i6FDlbmtm0COKRfjB1nsvTso3KulStZBCkqQZWLlbRyUe9xfE -DuK271j+0Kb9Lhppiw0gPweWfouLL0D1ZhjazqHzjlTWVDzAQIrimZ567tDLjW2UiGLcWJ5zkC+j -9kFYUnaC5VH18I2TAMi7cLd3mWD3e4xBsoDii2og8YXPe66TW7OYhyyhhsmwJRdXzHaTmlVnOzDH -SjyGKnI6qc4kWbtdpSshTQbKbzDFTx9l//cWrjOjGzG60aMSJAEc0f9PDjNP/ZCwrcS4D8SvWbEa -YUOBDuQSU3WfbJ8hKk820EaFQ0p4OuXYazaLvRJ8HqaxMLygQjnoou19xFlPnb5Hxu6Qz4Ohx19B -ed6RWHvyXTH8ZIg8giaWL1+mhY4uLemTGl91XnAT55TuUH2G0kYCrE6jU6VrcCXk4+PWbihEXkgC -adEk2mU2PjiceCVdXdv0+WNy4xdbf7pWiVPxsNE/QY1C20sjPHeBfiX6ZAQKR+bjsH4MnIq0wKHZ -yTF9110RvLmX8791RWkOC6ux+XKx01jFwv8cZbXJFFilIX00r88s7C4CMsj2n6iVVtnQR4wGLjze -yheh577SNCftY5hWIlNIrrzr/+ss2poEu/fPTDVGcIyK64fQ5XJ4IX3EDdk8Nd6T1sc324uTqylm -RHOKrAr2rVdlAeiDfngQilOoY3VXeMIZ5V/1cUK7jzGCQbvcFUd/wVdUN7gO8NEd2aYqjn7Cq2wP -qPyDPa/RrIfbeSnqiNTMqe1pGBvsrAR4i1dANJ3cSuZP3aizfSnQzMY+vQo1c1KIzRZsEZBTBKPq -MtyRUe1zBOzoqYcjZwqkN90Jr7Hv9VQF45ACKPwkZNAJokaRNgLqSOLivZE721NkhciL92Vi3951 -muhXyN5kmdqEnL13w5hBuI6n9/F1iu4GWsdEL03xJI0sCMHOULCZdd+XxIA4pPZNc01FER9I+aCw -DdkT6NStImcZuNEgDgiK7tNXe+UylMFhI7fFRSTLghT9ha4lUEYWo80KK+9riCUu8fvIkfyKakE8 -8nRdKcHFLHm54CBcLd9b2u9VGzpDlB8L8BJB6xvUsOXXVRKKSbWUYNGdU93ZtRjiSQWHOUiz9foQ -B7fJVJ73SwLqHum8CzE2s9w9AtSsUeKkHhPVV0U/C0dkAr4kccTTiR1A28o7b8S4jWd5Vs2T0l0u -hkt/FHInFJpZ3BP5WTMwudLRpcqFLzqYG0+pGxF8Iu1kCrlK7hkC2NA7v7813CUyYv13CDtYIZIT -PiD2Ny8osmh2IyAH8PEecJ/fJuTHuDLZK8AZbXoiOqDWgVV/2PWNVsHbgxC6ZQcdx+BhZirMSjIA -doEGsxzlRusWYPoH3rKh9jJt8quesL3Btm2I/7zAPZmh0i/h/f1zlfKsr17AawnAO+MKZC6+gF3T -DZLgPXWxhAfkSNWDxPv8J3o9caHtVXxigjle4g0RkmMKLM3qjN70XWn87GPMy4q8x0N8GZh1Znfm -1lXtJgBDOJxat8aCnI8u7D6wBHJbkPYMk737JlqhcqS2VFmLpecrmIEihNPiwgX1Y2M0R1xZ9fc7 -0uKcw4bFpL6BbdI50tUZSMf+51PeEd5ngy9wI81GkayMbRqu/UgHHQCq339iDAmPnyPMZUkjiYkD -72X7h1Q9crI7eAwCuummcQ5K/Q9TdJIpLSn9rqSjefQdroacZjlUu5yMnpL1ehjHG5oLTVNqe0oP -kWWcR+HoXE/iBsjhVzZd6vtJyk6eHegVY/XtHU8H9PkBjSR0Pg1uk/5nEt8by8ntzW4AxRKLpG6P -+/ZNpV1vgA9QmV+RfnaoF0WcZfQVRICbPuAi7RNu2MMcbsta80zhRZAUPY+kwG3MctAVDdkoDnCk -Pne14ntwqUegSlc9banR0lK6vlhsvKsLttIHjuPofVjs9jiLmcqeDegRSIoivrqKwL59hAsvKcDl -b+IwpL8LUbetZEs9CPnJ9FOvA8z2aObnt2lNIBWvCf63EnqwS1OPQPvWd4duR9Ca3NxdgFcuXrMT -Jt6oAVzu9LVVh2eIVx/9eXQF7AbwEblUkuhgyg5mNWkbl3Fm+91AJNijwCQIn5U6lPmP9mzgZ0o8 -YbMqfR5YY9tlWMYILPVpQzEh8QE+JDBtkWPDboAM7u2+ssrmDRlMjlphxTlGma2hfpuhPbE5d4/b -uu+UmFn8vP61dksQFVcQEfZLuuCPS364WU3SLq6q9B7CQp4GIBiLL8pHeIqvoIzkgp5AlxjM7OQT -ug7YOw0mbLqU53OvAeoP9UE7Xr7s+Du3MJGxuJP3HKLwBWbJTxn4TUaG3yBwoAZJKYayIBHWKij1 -mGyTzvMeDUB1D769BmBa+zWr0SxAM+OKD1RDC2n2lfpVnKDUDLEqnIBd/j1KT/1LkWO8tBBnPcpc -H+iuV3NVl4I2EdIGWKQrK+w1Blv1jqGNrMHNEosPCYvPVLrKFLaGAsSf3RS6ytBkd3RgNy+8sGzZ -ZyhNzTZEJ2r6GHtXtyOT27PoyXjbPS5yVrGQXZ40EslnJIXrfFgNkATKvhlTd7zBRgUnYorPYk+V -Qv3dtJXwdAdAVcrHDNGrmbCvNh5KHVCGlMxeHjiPz0tnhezyCzPQ93HY3i/3M/GVdI9Kypkqm4mj -uJsfToVBWsqiesSTkwLreKBc+iIArtCGzGgQjRNb1L8N2E+9ebohP/5E6m3k/rKkVqvNzz/5t+sJ -LD+rz8Otkxo4LAZGSZoAWTa+DMyf6xTG2SQiwABhY2rOo1MQAk7nneanw8w4uwb43+tUowbvwXbu -4RnFLElZbMk+Gw8RZqVTNQfrDO92WkBKAWa9r4fuvEZJlWNXlpL7GnZmKMXG2tMLolBXLdxGshD5 -OkMq11CVGr4gLkCPlvPDapw2cFlO4GXwFIW/r1VFUuqOZOeeJoKRnCa3bguIphi0aiorfgFPRlUb -/cnDn8Fekola1/WRxA8SIP8ULaV9wvca5ckYdAZBGX+glZEvpx6I8B4DgZeQ61X6jVm/IfdzdpOF -VeofPutVPL+x3HPELX5fP7AYbt0OMKeAjZL8nRZV97uiqxyqlpkTG8/5EUp9N2fsEkiQzZ3q1X5t -UgmmdolbJfZA/NqNb+vrC+C89z6i0mo3IP6aHbUQutteEoIbg2HXY9xKOeIDHPqRi4/0Sc/EG1Lm -lLtadzDmziinecOfDh7Q49gGGEMCkCcI0HGx6SSzgufp7WHpqCnYR2P/kRdOvm2YSfIc9WrYSs9O -VmwOe0pKsNf9xQph1y3PKjtvRb1HJYgUWNoeprkn93sywyPsnS/FLS6FkQ4rH2S33GMvLTIOg8N5 -fUJDBATsn2IoiAkc3mh3H5uHZTQCPts5LJtmY4XJ95RtcY258aj3CebuTsl3H9wWcWQ3ufEHHaNz -QK0owDwejtXSGwcBXHPUYktZyFCc3fEukoaLRxQmcXBL7DH4KBHhUlfN7x/gXOxhZICTv+q5CSKw -LsHDyhzmPj9Jzdg0G08BDYQT1I+xZ1Q9uUMOqSPr33nGDVvIq6jXDGGnPo5nwnFJsToMvgjR6Xrt -oM6FIi86DDhNKXahcx8uIQg5L2OCKhx0P0Pg778mNO+yfDDf2v61voPaHy1Wq377fkkQEUJzpa7v -7qgryGq3SZ2+tnMe+V9Nwhy3/1mHJTca2oivY9uwzdnote3OwmHuCsozMUbc6BNWjBQHBvrzEH1o -8uB0l1Omhs+49YJkMHpYuMCSa+LNSOK6mtkXT5eawCqAqKEzUU20SC22JiozUDV5x/Kbdu0xIAhg -vZGlhHwtfogXkxOR3NRiIfl2PFwAHY4OqeUVaiNyEQNpIVYgbSkLr3lFvp43PxrKaNgA9+kFxZCf -8qQJMH7USPKGtt6vxIyIygtfNz1tc0ISd2TWX0yZBMYbkr0+aP8DllfI5iNM4Jl5Ph8HafdYQOJP -9QiFtoyphuDKBKlzu438Zs2pjZMT4z0CybbNCnU6tUv+LQgkR+A9PHHLUuljJ7Nn3J5Y6c0fXyUG -MGYU4zHBrwhKihjs0VJ0j5C7/txhCS50U4J6ms6nJ5Kv3HIjNoSXy1lxMjkv1/8wl/SI8jxn/imy -V65Wg4ANV3m7x2ZhVJDC9AfPQ6Ja48KwajXFYJS2q3Ces2fWUjYtMwrcc5JA5pysVXU+j/S+goul -uFQCaMt5O47qUwEMRiak5akhxQWBwSNMR2RR+AScq/4OSq5y2QLpdDtb/WMnltP0sN1xpuSHXFBg -w0TZ3c4OdD8qvRm0VKjHluwTcqmz1ninmPlLKoCtSiiR7OuDmOjalVb3nnimp36cIWKLBfMSBFnP -nw4K6CUos4q/R6sMNQ6ZvsRk+oQ5mcAEeRc4HNQGdh4vOXl2GDRc9COQgWeK0jjm9vuqkhGRPPqc -ZbI1/512lV91+9tPBFnLI30HFOAkIvUgGG0lkSPeMJXv6zgn+hh7JhBKN1LKCjrqQHqn92UHIYmj -gEhP9xAkqEh49K3iad5geItGLu1f7CMfvbg45Ckrc6H7X1lkwayAUG/l1kUwLtPCQWOrNHnN6Oj3 -2rmaiWqRkLiVELZftVtQd95/gGqmGvr5q1pKjjL6UaaokSd2rXw0kD2S/lwLSp3VGuF3Jdr5pFdW -Rd5B7+THYIuzR3uYm9NQYYiJyGZTUfKpYBO9ax9h+sBaQG2lWT0vdXR5606e0E4Pv5PXKqQbpv5k -Yc5OB4v6sh7TVCW2wcyoQYf8VmRLgAK5tRM3B8Mylsu0QlkNCt7jslbP20P60cCYs/JG63WqykNU -bE9Kd4jiPY2SfzjaKrRt8Pt3UOkXeetDWjUg7k6OKmexfhhFGEwlW4Lv1Qet/B8objAzmH58krUA -0BjOdPgiBWoA4l+MTCueSm19oI/TShLERpwwHOKHzlwNZ59EWVzEmVMiteaftqsD7E0J2pzov+UG -ZX9gTyGZxOms/5fHWH+l0DjeedZdgYByzek8UBzvoZtT1tDKJuS+t2wcgsQbHFyQWRMTNinfsOu3 -w1QA6+6kG84VLb4OB79y2lMbKK1GfaMq9doLASAcBymmG+H5DpMJCWQibFKe8/+sZUYknBOkSVNn -+0I0dKYg/1HQa2W5nBAQh0UEeAztosIXgmQ8TpwTfEQPrl1DKfx+yUGyH2KlfPGf2yJ97HqkwdxZ -gLMBsKhzo0xbq5Pd34ZZ7VrhWs7gE+UtMhNH2+YobvKAInfkl8tOh1ES+jpFWhah+53fN/cddd/M -J9T32ZICwKaTyKv7vuqXqYMgkGPxqpvmXdKk1gwdUzhhsxxcN03OhaKTpGSbEVm+5xF8y1JDA/BC -Kd370gcCOqL7v5asvBMhsUsogFlQTlK0XKo2BLzCejPoIQl+KJ/5Ap8QXmY2WiK7zOnZg0NuwPQj -678FxsfIbtYDy6lEsnnWGh5TjpwJn2qNlVKnk2soH/78FyWECcuos8Rlx0U2O0smaZB7b4IqziE4 -3LIJALw3AYjO0P76JCyp3am8HpoDyyioXZ3OqB4Csp9HJy2CXbGfCp6idWNDpvEqwqhwDxxVZzbH -pOLnidb0zudSwbKePy7PdQnp4di3iKBPGTu4KVxpP7lJjHSFT1aEuTiBca9n6Xh2axKiUlfSvRSZ -RK5cbv+uqXACUyXUkMUDq2OM2ax5ChVUnIgbCPAkYTZstKYY6ViQzJNQv+mOR82C/2riReTXOCyT -E+SexEdSgXe0e11YW6nVFZcWU7fdCwhcGEvAwsnCYrwW8qIDRJnjs996tBQah+cyphIcNIEg8w3y -BssLZR447p6egxoQWHaMpqid+4dbB+GDVu1A2cM4SiB+CFomAR04uk/Vg+pR++2z7NLgnuRxfd2X -Wn6YEjBBwmmUQGxTQCQLY4je81vXWUr8e04DInrpxu4qAIsUrIP6x+2ynCplQTF0EFZ5+S3qkKGU -os0K2xV3BwnEZoONgNPWpixqeMyBqyk8wC4hPAss0P2rbcuab/lTIJIga/dszLQs7+3DjLiQhHiA -YbBGJZAu9oy7m/VkGHik7Wf0+iXfrIN7NU8KG4ovnAj+b2NxbFRw2+NMjXga2fQ7ujHXAKkooqd3 -OfInKnrVIb9wQV0Xd2qkdwSpVqFZgThYsZvTAuvKvjdwkg6cI5jNwbTYbS14guJzgCdy7W53RWzh -qlgAly8d8X1/jnT4DmjTV4C6d0X/fiyyFBPxJ4Z30JLQVXLXeMd4IMOWuiWE8MexgG8ETi0iH0hy -rmHXwbJK2yMx/q4Wuh/o0WDzXOO/ymXePMdEi3TNNcb9RQeIRY86sxmgCl/4ksQhR+BsrAPJNhw2 -8gz4oGHNe5k5DHTFk0nxLtriOzo/br3rWLHUd8uI544WR5c0usH8F7G1JkDLVacKemZqYImWzcXx -nr/KLfj/iYZj02HL/BW1R4KKgPBbfDTHL6xUAeYyBev4I5JVR3VuRQPvUtlZxFtzfkN4YKLvaZTI -PbtJ1AA/bjCwnLuIpnHueSjkR00hy3PFHzRfUkVzFRWVwCU9wZdMm1NckXQOk77MtYf4fHEZEXn7 -1Qhfuk9++/dOe+adNq5goheqHNu7iJ5omOsRxrit6pG1lYjW/o1I8BGW65MSjRVTAHgkSBVQwNJi -hsFGNv9aH/4cUIKvZ9XLrMvOlylm0tuDPthriEXneOn3GSFyDTJtfX7YYF/nRw2P7IUiDzhdauL2 -T7kguDn3gcDHRpfMb3aHb4K6DK0/ot+qo2JQO1WiCjM1RV+AWJ2UoIy9WExBVOpLxjbV4zdROXxS -6zMz7LfLmfbyKYRCheiz60TpuWm2Z3KurY1qg3nn4Pg5rCxfs5GSYPbuQ0Wi2vvmkt2yYjYf4JEv -kEUMrR4s2XRJ1FHuUXfMzDPZhZrG6GgdjyzSate9w3BfgYJ5H3CR5nuzG4qr1gs0QljixHSHK9Zl -f9GDSzmHQzKScmr6SQvncaJefRqUp/4m4gEtFLppN6hSTJbJ8rLDAfaAoyIFCyXnjYoTLmOkyIBu -l5saAfxTmt3q5msCu97kMEgvi8AzKXE27Vd5JdwCndrUBgt1OMVX/V2K/aELAr49toUBBviN1bHC -Rt1w5zWgyB7qeJksqgWAYPYALWvsQYJ9rgZp2XazaUwJQeeEpZisqWEOiNar1ybhJwGefcXwWfsW -FLAxVUV3sDM8gXTyTZEwMZKx77UgEbHEThe9U0Q3+CTUWDPyY0BXZyLFf5Ln1YPMCpKcZOqxxp/1 -MvzQrKAt5cAeGwdoKYWc3vYtgDgTwOar5rheYVzkyob104auAXqNOjq+VoNsySLf/R26hU1CpEqc -vHTmd2yAu7wlaA0z7BjbAYvoSSw21JimlEaAZEVb+ENO4T9y/B1d4zVkcE6U1NABZtdHSwEs30YP -VotZyr4fgAsw5xbFu0Bzup4KCNIgwdlapejeVX5cElqKML6X/i2fqsItdTiQPuJu8JXzra7DY08x -1e+26aISj/IWRRjDF9Kc4AkWs4SSqjPz/8vRpNUvXXnkQRzn2Dy75cbxydritNfhB3z75z9nVt/i -YB+hwX/4CB8rht3up+rdAN9/8xUlU7UWFH75FdKACJf4FdJXx9pyZf21uFdbgLLh4+KZz0oBg5ix -v9HuyCJ7gJlsjOmHfqQwzrlvUuXHM4vTNrU4z4pzwCczURy9lcn8RyZbWsPe+Tm9Lixtn7ccw8eh -2nvWrd0wkQexszJjTaFes/uMGbLo5/AqiMPlYf/BA23lTk82p4m0dpFkwV4+14bKRGAj73HlO0U3 -SljXretxGWIGe8Rh7ZP27QJdhdt8CdDhSMusEcZaE+rUTeZ8deTwxVgpzur2FTWqGlhfl16quXRk -Hy/38UV8ll6h8xUTO679+hspX8leWNC71COfqdmeMcbDmVSTw0ome9r4Mm5TQcD+Yaw8pE4rCJfU -Xh8FaiI2kO12Bb5+vf19PqoUhz/E2Y2AnNfA2q3ejU5uYClCtIVVvy4DKysltCE/VMG21TS0ZKVl -Ix0i43i8QeqhK/ohsqUaB32DppXFA67w4VaxggGs0kZYGOLR5G1ogKnOIzV0AJADtq5qZMInGBkZ -QZmFOen1LDuVy9q7jNlTDFICno6y3zQgHglft+xfr6/fAztWJWNCw3c1wsD+n/PsBCtbgf/Qbrb8 -YQat7XQ8nhUAkSwD0IX7zcbR/+vKZe4rT/MwZ7h7xX1bE6LW/u5/mUygcBr5u/rTTfMr7Ogus3Dw -zDfhFo313ytEOuaZ7VBXsBkLo+ZoWubsJ4EmUQHnYESc8uk1PMypGeon0AmjlEofGL6jU244IB8o -GrdtPsW06m380hXTU/CMmBrQ8qcqnwuSmjsEhlhGbET/CXsw4ATJqcMLXpsEKCfLN+frCw+LDfTQ -4nxhNxlCs52WeBpQ61Kh5FxaI5IsmnC89K+nJhpflLWv7SDUKDguHUsKmjf9BoMt/jQ9KDFmnUVs -U7hvdoF8+bL+JoBVMrKS0o1CGaxz4qRDoEDHD+vHxXfBygA4Pk7WhWQtPajhWSfF9xznFPZtvAhw -KP/pRDoivvPNp2EIvHoo/SCMjAWOuzr8/vXP7UXucnDfsslPPflNE95HfAgC0c0z0GvhWCMppJ7e -CUZSy49CS+1bkct7P3QQa5l0Kk//xoICG+4OhbqUCvWgSWv5OEcsc7sHZGbsEk7c0w5i4HZBRz+o -/My0gJt6SmDtSXY6OWv6kXBzYuXrTZE2ixr7LxLRwkpVTgeM+n7kIEEMwsIUSrxXHHxHpeyewE8u -uYvo1T1EE0mOuFiU1zOlWmLktJTayvQYAYjWn1rV7d9IJYpNHZsIp6T399LmIoGnlS77vn6yj8oE -4SNOT2GNcBHqZpLW+jhT3xIlbcfF/MkMGysQ6bY8OZ9FXUljfxV2IaH2QKKNJTT5LfNGXCFJhO/O -byO/BlhSNSQAgrJB5Jdd7ctyjEsXlTnDt2hy5DenT9dCO6VQFH3CI2cA/IS+54UIHdSUAaYxnOxV -FLLUNALUwn11WVd+7WPXCPkGSRfJ7ite7okymIrhRBAGEMzZrO1ucBViLxg2AU05WPoRM1LFUjW9 -Ywm+YiyN08XJrFCjltXTkYMtmGEAfwoe2dijx6+ZbfKfkPFzWivH6kiF/CfZsN5iednAUv1rvFdT -hemMo7wSXuJL7boyyiSvI1thBJKKqSQaIXSI9Jh9OfPCdOciOFYZM/2ZXlb2ge1BjjpQKQ+h5//8 -jtg3JSt45nJawCoHk8utR/WTkW2fYDqERRJLKUdyEzRDQT+ClFsMzarx0cKf3fT+Oq5CdGXzUQcn -4B2/i6SrtHrHa8Jkig+CqhPgGJOWoK4TNrEF5dXkXMS//+OmdZIh6TP5GZAqxeiEAEw08KmtjIR4 -8pA4Vh5j4X3F9qw7NDPyiKNeqdCBuN/Y1rp9qgnu+4lRrgLqPP+BCtnvEFrwSxVtFGPr62xiYW7J -rCNAutCJ7k0LJPpyspLm9Hh02FYJ50c9vRjhjqR9u7gLZPS6meC3Yu6Gcyb8RQyWQyend6nMX13Z -RP3NN58pqfjs1uR/uJrJg5NNghZsvszjQKWJx1lmhJJWLGbz3zJiTs/BLza1AdvFb0JBhMFz42xG -rmjO7Jl6HIk+9sz6WckgP3odHEY2QwHDVbj73iza01G/ctKfTQJGUwykqLk5uEhAEA2ubhBQuSrV -rM7rmQ4Vnklxi/gTCDfLG36UACr1ws9dHZKVRR/5qKMgPsJB0dd5nJbDntXt+ll4j5k0I4bGB0kv -wk75DzPxZTTp0Sz6D7YPl9TgjqHyR550122jvxxUVcz1HKc9I6BW+eb+NN7uIXnXJOKNPJtAW8w+ -h92lmMSvgAzntAyPEF6rVFd1jyRfPrcjaM4ZEk5P8n9oxvQu9lHbjOg7R71UpLpVG2NsOR/1DPut -KFTIK0AXA8Gm3z7wXN3dvbtawhqlzLvAHSPxAtlsWzIZdcwcLZgFQpkr21YnE9cgj4eUGguV0dlH -fhizYNi4ZIbgL8imrz0XIYRWFOu0MQ/TUEgpfucy5LfjoiY/pEQJ3s+y+yulHvO6Ncw9SJQifJyz -wc7RsAVCZ8mHfbQ/7MREmtaeHCHURlsKV8agnAdc1ruu3uGFsO+QvgO6gg3Vq1lLW4SCiwjTLlJJ -2CfO6W77T5K/i0y22xTOurkyUVTVpG7fN3RlDNcq9RuRvJ+yQvrutGdogHdD8XkRr8Gla4AkHE0L -HiPoLsl+vlZ3oldfykdqNsaoHMDmrixk59SK8rbA3a6fv6xh+Ao76IcTI4b/wI4psl1G59959RTZ -5WDJtkD4GwALapSRjkhglWzWc9GrhYGTwrpadSCSYLj1wjsw09HdJ6Wzaxi0OB05xTATm2z8rHU0 -3vctEyHZ8Xt8Q4+fR/HOR9cX0UbVW3Z8hXeZKbRMCErksnfQESyLZ9dOjmVuoFeaw1FVrXu0th4Y -3k21zHKH/VssZvsUGFIZwoiJsM/fscbuY7Qpq+7YSvK17Lzh1ls62kM02zjPODKWja8babduo7Dt -R57DAFqejxx16kybbuCcZR2/Us7WEcUnhsRXebc+HXLXz20LINw3ICWnM5YCl2LLA7S2Kf/XQqLz -nQxWI7p0i5UOzwIMOAvt+4XKQzFWN3mfxN5ZGrWDnd+7IAAvST250DrgqFmCudvgD7u7mBJuyCSO -y8f42whuSklauXNoXjhROeoYu3liRDX7yViEhvsurHbYDLXXpD/PyND/P3YZ+GkqglQSjKwSk4Pv -3Ggx1/aOCRa2UfyfZfsjnppZgxv8n+VcwpZvdh2/0yCZLnnHOGepCWEn9BH0SnS7ehHqyd+AE0pG -dj/+ZM+/OJIqpxNLTAogUZeh232mHp7Ypy4GGkGF9dhNBu1oe5i/3ppiJAoQf91kN6Z9Wby1aRo8 -aP26eeBfHoh5T6LyZsqdExra3oFKvAPBHEZ9a96u9Si3GhPrlscoVJWZNj33uiVl0eKsPq0J3PKT -BK6CCmvZL6hMUpWsTYyaaC57BqkOI4Gvj7EQwSfMZIzBefKt2NmZ+km3Uy9hVLogpYUXDRl3g4Il -Ri7EJK+h1XwTo7oxT08EHlVg2QzpXwkRiVRVAfVCxKePXG2Xc2rE59LV0GnNtocpcLkbNJN4p5IY -GiKaxlNB89dkp5C/V9UgNn2ytlqG/1JQka0fJxdGDgZlTtwe8sybXUvr8uvGm8/ivVC3aMaI4Uiv -MiJ/bn7cKyQ6W7QY1dwGjeJazFLtVKptT8+bbJtc+ZVvD/ktutlPHllNQvjZA3lqO2o/pF2kaeS8 -gHkQKt9RFetXi1VKene00Wu1wpuVyqzjIExpwhZnXaNdtBTfMuuiWcCOn+BrN5OKPbDxeHRj8Qm+ -YT8P/ckaHE0b0Zt7HfDr9oKJuIbuiA1KcTAw8El0EAqukcdXhTQbWIYaPSU2QjVrxCV1DVGZEX9K -w9qn6E7ff1giPjt1+RRQrJVw92UTq23NF5Hj8OsAOSK83dfqIej6rL7Lby0yDImpkNn+/njVaBBZ -xQ1+0k97335ASF2p+ONWCM6wCAzHTVbjupPw92KhqpO0WBsNil35CXrlbQQbwaJXTUtVB0NpAxIH -Bj7DAf7rEYwNNXGFQQetlD7fwLXAxE/F4WYbH1IdwymKnDWosvvAgWE7CWg1m9LeNFoHJ4TgMm61 -AUEuLOUPXmqiTX/PTgk/cBlqOTnXhBi0HKCUj2V2uoJlmyP083NTYMcAa317pQowa9HqYj9ZuYAB -YHh6DZuaoswM6AAg9mVkJfF+Sl+9rx0VXeSPyCDLYL7L1SwJp7nWAwPviXmZEQSUmCi0NDhOeysW -0zriKGEi1p4hQrTzl3VS7iAZ7tBwPIkB2ojwCDnDFu8HYxLeOA1afMntdmQr3ww9x7NNWvepctDh -BhksG/ZMfHitj90o0+b9Rrv67/AjlYsHvXxcd2vUu/EWbxAnOoCXMrciLL4yj8sqNpt2SnF+I4GR -FskjxbVOMN2SdqfBDVjTi8H5lXsn0cwNtVEiXsTx+BiaR86Ipkm1l7TywJ8C4gotz9CV/TyECndp -/YP7IQbQ+yhMtRtn2E1Q/pPwrIyiBCCbhohRXwN1hdiiPn4AaqNFT6BoxvEEKBGz4MNJokHwhAte -1zEFladuQPwgV2MQ/rst17G45G7ejolQklgnsGVPzqNwRGxt+B0OExBQnMZyQ0UxaLtM+sqMGdN9 -bIWAw8+bCPBItqbAhR+amwQYBPwcMwflT1H7kdBxX9EJvIE5PQaUU6IIFuCqMYDQLAINsAaDZhQC -df3P8bWYDTRaDIflF4+mJut06235MuocaE9LFD3Gy64LnByzswdRC7FC/1Lg9yCcsJnGAwM89Mzz -yVnSQ3zT2QMWay9zWTJDSCRlrazeddSWxjsHpyXnWEfIDHbD9Tp0E6LROrhIbIGrYp9hw0oj1C4w -joN3suIOx1hJ1olmw+oqxFuHWChczUfgAXJWidlzBAigoIom+NEUPZm7Q0YXbZJ4F7PzC3Sh3V1v -6Wn1yZBewJ7KVcXgdaWi5b5wuGGTJJgwjo7/nICbc8un61lJJK00rqs2QH2fVCJwB4I3Imny/J6v -T6OQtajGW3zNiAyl4oFJwprXW9/jY1xZxlkvKuf1UPuyiokrVa1S+56H+n77i4sIzfnX2sCLLpj1 -2FHlwPr9vDyissVUDxh7FzhMEy+zMRyKKV+Srun4pGAGCL+3NCo7BoGKno6cngle9VhxyAligsPw -1mXwuQQ1GC8YvHMnz6X79NA8HgjHkGel75KJjoMM46RfWZe2oAHJsrwbE3Kou9mdoGTwCJ1zpZ6Q -HKVuu1qhwZkslsbxRhYKH/GxWSw6UPc6g0LEajy40HnCp1607Brv9D1EdXNSRD74OSAz/rLxp3Ss -mvGtSx6LaTMaWet0xepxmdTPWtEOXIL9BRNChe45cUxwWhvJJKcH7hNsvnkUeoVQb8b9R70ukcxj -vNT2Fu99o24jwMrDsntqVFjIMa4AMKc5tix9M0PEOQZrLvsJBwxo+UDUae6lFlNe73X80eruO9iY -kHZFanoWGYbC00whwURgwVK2evFfsDpCzTKCSSN4dCGMAUcOQ0JIZFWHrezCww1Msee2NMc0QAEx -xs8oJNLF/OqMPRmTUxJB4jvzwGUSYKOxlbfvCSFRyxr8tu2J7Elo8QbiZKkWL759G1sjv8C4lwk4 -cZ8KxJffLvyx5ehkCAvUJVkVhQWysRr/Z+tiziH0HyEUsUBsl3HB/duipYjogq3tDupiaxGjjVsB -kWMJ7LDAJ+QMPZHYdwl05eiFGv/+hkFf7llaLtGaXn1BMOE939G9yfvK+WzWoB5EIfZfUwHKx1AH -FBka+Qdn/pj0TVlpo6v5yHK3bBT49FQTNwqTbWDk5cY4M85Add+Tg9a0QkJNr1k9b5R0XZq2oRlx -zYfRNVsFBDXtIBWp37exPQ5/c8T9fHBcActo1C90NxPxhZjh/IfKZNHJVvJi7arbX4Le/Kiph8YQ -6yZ7/hs5zr5aD2wqyneoBhPsLhzBb3Hq5LL/JW/SI51/HUyXKblGnGOQOjtvpil63uRaNbVP5qpT -qmCI88lY7XVpug1AOTZSRBVXWvjOCL+9Ln0Jjd9CNyBq4gYa3FUlmaulxVZaMcF08zJzpADgF3Iw -LePA9sNMwssvlvpyEWCRLdWWcbyhhkYGxNTArSR0WcrEolIqwUfrRmjz+9LKA0p5nJuuFsZ7WZ+x -uhHZ1l7Em8f8myFzjRwmj5YCa6ppZ7mTiIj4N1hEsX/l7d5CUYLeWA4RFhr4Ijrrr/kDZPt81xUR -iICybOOKRiNfNZkTiIF8Uhm10GN6ERKYrmKjUDNYR/lmSwGx9aIhS4UX5XSyyL0jH2NVSxo2O7Pk -VldmyGSbSrwowckY9N+LVcpeS7wDhhWyDyPMGvfE/icBK17YUZFolvh9+NsetVP3ZeiZKZ3/OeOu -L6kNS6IvNna8wj70H4pqU2pa3SqgaIAdspCDJ/rrru1IzyVMZoTBBrT9y3sHJUf5wPg0+edbhf/a -353k3jM38fxe0iUS4LvQdSu+VQmir+mRWhcWP/xfVAHEgzC95mUSe8wVgx1XKmLQebdFp69fuOxC -bRTyKl4nZTTcx76rpcYDpJA7i2GUxqIyrrLy0IcppPqGBUH5TycM14eUVDyz+Zid9l2ZOB6toK18 -vjF35a5QyPCh/KXqeB2f3H44ywTQ+3VaeafVwq3JKJw66Axpk99m4z/s+wfPMNwvopdDaNG+2Wmd -G3aU+2ruE0h2NrX7R/9K82tUgGgp4kWkXC/EYEblrIAVy3d6Nt/QYuYBob1/9lYLq8eqG/uKTp5A -R8bmcDpLPDBtqYUY1gq4+3LsrMxkEpdrJ3amSzzBD5YZbu1RYUlK4/Q7v6RLajmj7zlPt3IkEP8X -wIISsJ9HgWloDvHan5dOp6qLhxxWx4JjmNwzVOT2LbWG0JdvHpk8BBpyRtjcnRPyAwuGxbU95XV4 -tfIOHN/6fR4WF2y27EoQT+EnbwkkiqLXdMp0CZacyjxRkWf5xa2qp6Q/O/yvwylrTrjZ73i4nLV1 -znrDYPaxf9b0F0kubhMIfTrt5+NxajYf7fQFlSQbMHCMCaIZiuJu8/nbb1SL+VMDtPLoBoZXsVuK -4eUnFqvezAyriXqDvnRFycN0dA6Mqb5duTcqUc/vNoTs9bqdjnzRLg9TbrAIOFEHK4gE2yy9JcsZ -Img95i5zHIp8ecZzEz0w0dyqkZls42WbctwgwvHJSbj/88BKjdEPePqwsKq4kIsZltwPiKJxvOpr -KXqOzd5cOPD4LcWm2lu/JipbP5S/qKmR3sTH6aJjEKYAWexIK7mkYO5i3f7rncx/YQgs3S0RiTru -FlN4VR/fr9iU9O9rZEq11XnmVvGykGZbbnJYOeLOq1rVyEwXsetB2F89PaycUT7iHX8ztH+iOxOn -GgI4WcaMm9EOba/JEJgjfy6p8pK1dFOHzMYIp56mDc1ifBClJQeA/rboL0BIAvDU6U7hs2oMPVHD -6sD1eHDQ+laTTRYt09Yu6uWJgLIQp/ggiEElZ+SzQXNKGU9c6ELVX3JbPQ+A3wItvrf9t4XP8gkq -1OdM6LC/kDjUiiUEgQaGoWUQ2qvRq46KnT3n9Asj06D5xIfb0GQXk38Wu99UVR0Od25vThh8cWY2 -pplldISC3s1MVt/xYy8knZwP9TJ5meEhU10aUO344VnztSDcTukezsfchmNM3k4BD/LP3zxQhF8D -13WzlU2HrevqxdM0s2TR/qW1/YRf26KOYGfbxezCwSYXkenIGTnrHAxKcKwJQfifujwCZ6kAUNry -cgZ/bkSJPHFY1u7Es/6iR+iMqC1Ex33Wx73ZOP/9RIgSZs1EWbYE/FB981s3VNUNEYzw23FbBalz -lRWGucohbNqKbqlGkkc21TFR9TfLsNMA33uUqZAL+bozCvUwm+rc/33gfkXQAGNfBMZ2hIh0TPou -iZUVNRtt/75iFXCQwjF+GYjbKnECyCGLK7zvetp210Huh0wi/FGbDPEY8M7XSnba3yHDAUGPl1p+ -VZMNPRR+/Cj9j4PzOvMeo8ZIj7L0zFHooQxmb3D97xiUbJx+LwPFgxL+izOQwE6WHphmAB3AI2dq -jo2epfhG0um/d32IwS0WFBTF4461qtp9yZjvnObE99NGTtm0B4zjt9JSHGzjuohoEmLe3l6Q1Ogx -uXCe+9lRFzEVJbFL5U7PnbQOoPejtfP47cwE/+SYkZwWLsAp4xT7X7DRdkm/VKl0zZHODO5WdOp+ -6IK8OVnmxpmO5KmOhFLO5eMj5u4uGJ2iJy3djvXQmO8Y1Swm0NJTvR07BTSOm4f5neR0bjH5hLGh -JKv2Djs0XuPZJ7mMH42WWUgGK5K6spNv11Q5NKTQt8MUXNU5DwL/04V7ZJRxCCrG6FJW9y0p/oOJ -PI1xdg8Igw++l1pPironfXvrYwZAKXMY/QaWwl048/aOIGKvSIh8emIFbCClmdQ89O//r50JzL12 -20mTa9N4jeFseaYBDNAAICMrGbqPLe5SXw8GnE/IPZ5LU4PgIUopO/MLpaovGDdIK+zGJj//jEQO -9oYrtVmosBGwJd/t5WH9mt1LFS/cHfzTPqJnz6DQTHSL+C+0HXXY/vHwtGyTKmvkaECp85R/Sl39 -+9UgaW5ywb63ZgvLA7nqrbOogT5e2dCf4bnWbQDtSkH0nC8/zvGraOkzqAITkQQaCE2xg7I7frt6 -JksZVEDqdgcbCrBc8/IMAVcFX0QM3UyFrbVnB1Imdvsdtv611Vk2Ltj4r7ygT1pIRuEYa4O/sfdo -ltSyEaS2WG/qt3OBRwSjHz8MO0mC4RWeJdTMFNcVDIwAjFegVWwuiZtIsitdgaNGxF5MRjQq1JaI -gztBWS4d2uCJ2M0cuVIE1xNS0F7LZiwbAZ38Gy/IjwJpB12Xp9NM36A5BqWmUjV3UE7XfOaiV9gN -MXgapEyRYgsQnIgsMvrg6Fcvg5ixAR250SsOfgw/EZ+cVDMlKkVgzxmVBz3DwDTTY7ZyWUGOXDwn -ByeLs97lZi7ihHsBUHggKG1Oj6seHDv5aVmLzwqdd9N2r5x9nLBj+bwl46fJaYGaql7LNERcVU7N -IeduMHzsL23PgsGeIaV/WTuYDcqg4G3j2NjtLDonbrsEWGSw0/oCU+aSrCCxuiQexx7NWfdT6ilU -txGJSFdY/xkLXnZ+E+2ge996yHbw2ytLzlzSDsKduLsg+T29+JyPj7fty7hSn372swJ2ywDpogqU -qyxv8gQQIvW5E1U/XUzzTWn2YBqEGrHxcnc/rZAjTCE6hj18z8sqpMXqaGJKkJK78Fx7y6FOcEN9 -MwYJobrXi9JFZpVfU2o9JN5aLrXaIuKhvnprdyETLM5wRBP5haWPCZA20OqhFZwZwyh2xxBgtsXc -fmrw/NK7AyZoMkqJmziel6YVzCzHC2BxmVfeC8fg1q/3Sgj/mbxYTKDc+i/h0pZTb4byM0l8ED3M -/WQfeIcKUxstFHwm84cXv0ClEBCuhzu2zy2i+U3r57i5/V2E/N01/tUfomRv469s3gdfP1bP1Fxx -Mm+BnEBd19ZZZ2i9Yf16Bm+E3w9g8s50rg27uUsfz+fBytNjcnCr3FTFXJJM9DUTuR3K35b9rdyV -bejZtjqhVeSGzJKFAAY3LemvHgyMbfnZEorB2eMgn0pdVrwHyAQrsYptycdyLzay1yXnpTWq0Ju1 -uWanD5ElNV3sUL+NZs1sCPHc5GVwVWsJYk4xt4reAUHQ1YCghv6L09dvy1jDE/oLOtoXvFjDwSqm -sDx6uc7W7R4zvhuptIpRUiOCj61KEPJ8CPm6BtE1PHMI/wQHVN3/g/0r4GUJheC9M5ADhDG5qQtc -Yepl/ENXNLFbnodl0g6M9h0mdJvk+8cveKou1gVast8j/liKwjaF3WLfogbF/29DYLN+I+7Mzn3B -xsL7UD39xiUnf3tBKuR91FPisUCMr7lMHwFq5C7+g1wekWJMeUArL1DZK3fcz2SbSP+xkAW7ICem -hMOkfCDksP9C9g0fKjBqFndoYQXTHzZsuxzqzlEr4P6lcy6nw4X9yanUGQJMgvuw0Mflc6zx+6vM -PDB8wbRBmNF6Rv1K/jgLRJhx2s56XvfhXJBnh2soutv3F4LKOgAlxRDYU93kXMBrANdNUi6Iiqby -EDjOyXG5538+hpGVRq0B4cNHNQK8dpxt0D+aW3MzQN1bjRg63SmZMva8Lug36HNkCcY8o0Vl7GA4 -nDlVnbqGyFC/mHHy7/+zveNaNyl/tlvUFq/VJLIBDHGW+W4PkK8TCd0J0HibR4o7gS+PJBHbM4AK -t9NCODXfVa9CjEJvJ+2tgX2rN5kUrERaG5rGKcvsUnPySNrIlOOIzgYmjcwWLwOY3W+aZVmjwxBP -kd+wGATkn09OYAK8sVpFx4UliqXOOaKrtNe6lwj3LfphVwulXxq580p4hexcqnYzB3bq40drl/ED -cktQBdp/r8hU0y5g0uHwB92Ase9OOkBl/XfgOHI83XIr+DZtoEcqDK0QK/uJQHg+Rn0vq28YLYIR -eWWXOn939JWnV7Wds3EgTzxf7Fvtv07iFOFUlzIbjSbpdNppAUrOYGPJOeDSejwcG62s+FeNDLSc -FXusgZ6jxV1KoPRLcoIJ/DTPfX++zJ6zOjoITuIz2ihT/MlCTbTaPWGoHYNHyrAeMR9HcdbIb3Gv -/l4MDizrK9Y0mulknFDmzLAq10XXrWbWAxplQLWCPNc+FKAJ/TqcLPOmGdmsOfvP5fVaX0OHXGiP -J6IBC2oMzV/l9UWZp1g3PNpK+Am/+AEa6ruvjuvs0lZJszCgJqpKN8HCxr61dI45YZA2gHLJrU24 -17Ci6HBUlD/XKdujun0CkJP4+8D28Cr8piZHxQ3dDlCOA0Xibco04GnQYQVt0fDRlS4t+mGjkjmD -TZW4S8heDe+Smk/MYCmeOvcwpkYrTU/3F5WExYJsOteCgk9s8K/qd6h0RkYceYMN+j0IQ1VyggHW -tt+JRQmcPdjI92HsPb1EUHDxZsK0sEnhCr+YFrO6geT50ecILI3ZV1lG/08NrJEoCkicwRySrTOs -wlp8MqQtccNATxdT33RpgGzzzcAMGkcvcfJAYK0MVSchpNCPgMVYJmT5gaQ8D26GObEtyekZY45q -Gm3/t6m5truiH6sBJmpt6sGczDdp9CD8zVDlDAkbKNcQz6iF5TsQMxZtGf1U/kUuQhuWvoTr6lkc -v5xt5o+YUaDGnt7e/E3bBkuO22oLo+RH33YVo76tNHk8ddEn+nEKxEPbZEFzqnCRbujdcqwNsU8k -LResC/ISfpsAcj+YfnyQzwliuOY1CkhJenvECe0ZdAifGIkaXyma2BaEsHUkIP2O1WnE0B5ayTwp -abzWcjKMBB9tVc2+EcomirZUp0GgukQD/cBdrdEB7iPFuS6F25PpdbLkSSmHkAeX9vxWYbr2sDae -DD6AwjPWE+ImiCK6P6J5GzqGShzTdstAByIraRUefZtlbI1cE1uLnzwGe4yvPtqjweLXgetot+We -Qzr4oce8skir0dxG4SqGv81dtdoyvnpzcqTYZ/6qi3zjiQM0BoTsY0C0oO+l0olfUeIBhNmB74T8 -+1+oe0uINI5KdwUgjKYmIW69EOIpf2/QbC/DLO9MljQZgd9DMS7+qPclPEmHuIN3AkRNn/uWWZra -qZtUTdAggQQtkPBwB2jidQ41T4M4/bKBAY3KX7u2kyrv9IFcnk0PB1e7XSdMNAo2Qpz2bdTaNo26 -dqsEvrY70cxNhypK+GsjUK55sTNyaMHiNraJfOkuRKFifQtjzgNALEPWWxV7ibs+i/OGHnBTG6jg -OdVdH6wre/PkusHpS3WRnp8RvkKyG8Jogy8LZ2/MabRfZvk/EPwjLrfG10amlFr6Gq6bFOgOjHJB -DmwmuI/hrw8kSMztW59Bj6wX9K9KfH2QD/7MrVrPunBIFAT19cYv+TRYVVUddTtBsfQwWOWkqpKq -qSLkQTukVifnmqCP1tUt6JGWftdXYXx8kLkZoYDc/2LEAc6dPEgZ61J9HIGxFDQRS+zZC8LhHSFb -KmaaUX2c131mAbhL086y/Mc9pEs2ADK91qj/l3E9P0sf92LvxboJOOPklMOGyMcFRcU/1UXH1Va6 -dw86Y00b6OP/XeCeClz0EeCRVUGqxuO/oGyMq2w5rmfXpP1RVOpMUO0Jk2yn+Y4tTfDOUGx0OMBL -5GZaSRx5Dv6/8GuA36BRHArDEGjisBl+d/GBG9APMW5Zx4KxJ0ErCDq1oj10fAsukrHO7InvO3s3 -qB+vo+qPhE4szPdDPloN4zZnG1jJaiTQcd5Wo1dN6WxhyVb1BZfQjUJ0+bUUKxeMsZdI0KisnyaQ -+O4sKL5BKKGcRUdYnSoUpm41Miu3ELV7Q3d6y1o3mFGXCRHh4NLT3MWLOwIdgJU34QWYLqszfmHx -j6ZNmu5I9s5LGJO6TsPNJC8naoIoa5tTSptD4oFHAjlYTh1VwGkmLVod/cGEs9stiJEwFatUvpRQ -KAxtxbGTSSGFevT0N5SKzmaanGyKRSLdNYheZEr+cFaCDlNmacAbHGjg5GElxVyuEVCDkADGpsze -ofk9cfp9n6Js+6ncPEcayjrJiRI3JoDeuCYRM0LUNF/8dmaCoPinZQzO8KjvbaUfb2ZcQ7bT70YA -9VL5aX9GKOUSZXFBLC0y/wYAOrifqV+okmVSZ2VFXzmbDninVHtbPUqg1Ogniq9qipM1I4pqr9eY -/dRZuMkLxTEAAAgHuFPB+CilXgpBuHSHS419YbPyYm2WdJDsePXuKbnr0QPLItC9TsE1whGp/ra/ -iqKf+1haI7u5Ycl6T/im/YkFHwO5aQG557Gfj55zyMoI6BLow48CRxpkg6s+M4hmVgn1qnqXyIhJ -a0MOLxqD8Sjq7Ve2uwssD1gt5NkqzpxYICICz87mRWAGZp3cfJv2hcoNucoa+cpsXoGbdmmAvLPt -Mx2M7BDFrPAWDkssG9hAKtP1TB45JAPNJ5cXzgBDEsx9VPKeR/53XrXmLL2XfWjm+muiPBPehOqz -ifhrDnDKhS81c6dOO49LcEKvKN+Epfht8imycgpFbefOQFttzKRaBfdHBKdTww7HRi84iThx04Rq -q2x7X7bZCpReQsNm/WfgtIUyLSRadmNPMxZvtrzKVGjnkkwWKKK0Er7dsvWu9qVAo3KD/uAX2f0W -Yr+AD5vdMsSHIRiGZxDuPFHBJAruysEo0ZuNG1aRHLcGZiGytMsGyhG9ysuGSv3phD5j/usEHvl/ -MXBkXAWe0kIVyKBctxpcWf5h8oESNvHPzgFM8dZgjkFpy1EDsQdBwGBJxY7TPTFD3nq4wBEOZbn8 -OHRDi3Z4vu0akxnhzyxUnX1ghcYXrwAvKAJBClHJ3L3itXNucYHLW0kod8e86/44jeDduHU0qdTL -hQPFqWNfHQ9j53zMq3Hyv6Z6BuoG1d20vXAkQqc9SJ9C3z6D+/sglymYsEs8r++M/gHcoGIG3ibi -8CWef8eaqs7BOEzoISkHJNyambz8Bgxz0g3AcI+phZwGiZjqYkAi4I2wVYgKL3nVjJVHLCw0Xbw7 -fE5axaQi2/p1bln7HReO+HJD61W+CEnXmWH1qpxZqvSY/2dpewCL73uIMP+KLdxUzVTQ55bO8BlK -17CrkYrwbWoTBKtKJEUf6mYzKz0sAYAYWdmziNwhZPXI5pgBekvYL/E6Xd1yvMD3KI0u34laRZGP -YVB/kCfMd0mGLjiKT+mLhEe0ycE2/RYncxvNCq5Lsg5ePGqkTqNcwNI0y2jSTDf+TOQD5stO6b3w -FFsfQZlPl/T2xw/YQ3OLXxL9LztYVSo3tcmDCuVO3mGoqgQn7Haz6y0zHkwbIBiIdYSLQkSE1kpx -uUu9aPso8fdgKOSzeJ9EI+2gmzuSJyvFfQGyjRhtoLUnjPqkIXuEIvBsr5Zj9BAUsb0pcG+bWVYN -DzbIZs8UVYFRz1x/VzQGIvKP2HMq+3mcsHDP50w1c0OJMCiNdqG5wjxGOx8V8bvup9onztKROvDa -62FaV25nb3QpG6in8Arom+2EBp/cE6aIjzB+vVGiBjeasmxmZQoovdtT+HNhMA+kChtxz3BqfZq+ -LsfekOfkZJZ9XSxsdDaZE475K4vxBMiGsChGn8nC8RGgGlmcmpjDV2p+J7+V2D4vZ1zaydrmqYcJ -zmWrwIWPYyOs4P7Y1KhmrIeYbT45XS/ahAZeO1Myjx92O/e9mBhoiDFYqrF//06CjmwXSorg/446 -9j/DwCFk2qwbk5wrLuFtF1ijpddVl7g/DfF3ZQYtw8brdHIxfqr4Fpm38qCeKNwCYpa+ljYdWP9f -kXvadhub2X8vguQk5xB29AYDL7JHDp6SELMkrJoxbcbzdYnoK7U0FcK2hpNmQ/0KZUshh4lTwQkW -LmhCvtuuCoo/kBdcz5lAYMujQ9Uf3ZunBgl/FqYYFyehhmCTFq/D82W/QaxvWp1qEoNnbWXF0v7h -PLo24Of0TGUR/STF/fCpIOk8D1pt4rpg5zIwEJ4GEsM7JN5rivLSyPBi3viWxqsDaoXJs2xDiQjT -m+18Af63hNERxVnoBtncyHruaxNIG89LP+Wye8g8oBzrJR41nPn8/eOq5OYpkc0F0rLCqdllVj0a -i2eAjIDheMr9JokbDlT8jCUTV7ojkjdhQJKN4m7aXJE9v0EH+alXSjxpy6mX9HfQdab6Du3OcdKs -PW4NEfFgTde3lNkC3vB7sO5GzgDR1pAgKslX0IeNIhZ6XWd+EwKv2CSXcy7tnFeG83zUcxY0Nvly -dQFp6i9t5zelTuKNu8Uu1Gv8dnJpLG/S+J68buyR0R2qd+dAsDbhCCs7HQKwgatfM3pTepjKtBVT -gPvmJYqg+7EHRu+xQY4Uq+1t2eCY9ObWLpeJfyIgPKKurMC5xB+oMR3WsLNSnoVLS5WAmPFL1O3n -NFck5Oim/l88BM+mpmcfbHxU7oVfQVek9SV9xjdMHtxwfBaPCwLyTAVTd7ralW6GPfpV4bDnpo2h -a/WjGSBoh8zoxJdYhTeCO5trPksDTIFS12L0rDd51uqpwkYiKdkort04eC/DFZ2dEJifklKhth6T -IAvcm0p6Okss5XoDTAfGq2rsQwS94rh3C6siDM8YdmJ6bdMTjjBLfAHbI3f0eDR9go9hn0MrDrjQ -B57hh/gQHi2/bktvJsuerysoe4gtVinbsig57lOcoSGBqv03AFek64/Zo3TXBO5vgiGD8BgqL9X1 -PfpweMoXVFYvALZV/C1eO9Z5LzuuuJgGlVMtYvlpmatA+l3Y5ijHtSU5jmvgsGHvMo+9mMY8J2cT -9cwkdpC3lH3ZX2q49NWEJbpa23t4icteARu2c9RjG30v4Q8wwpdjpjRtb61oddmL/owz6sMGvytT -r/e9oOxM+bbY0jdi2MM5Vi8aBijGoi3e99m9bH8at+WsvpeTAvXlhkVnxbuu52nAPBSd31MQOtGx -P2bjl1Iy3hB2Y3JNOZcZMlXRQgfAVJDm9V43GaqCj9wFGbVECSLcE3zDK+bBLeUqkPmkfPeLl27z -XKbRfimSO3RgQPhauRG/wmc0P0239hPlFhVdZu7unYovZipTGbsHH56GJVInmpym1C1xbSLUVbSO -v+HCCzL0XgbSK5t1XdehH6riAaRmfGVeVR50ML8iYGn8xjrELZNH+gFNMJ8ZVs6QLuOxXp3nI7RX -2fnKVvRcnbHw2OulOqZ02Xlqs7mcqXiSzMrLyGnmGUqHBM+7Rz+T3rMtgrqpZmba+xXsXzcafQTf -Ul7CtBurKrrAgkwYYRjcRGo0qbW34r72Pdks8f3l/1ZoKPHJkmi8xPvKbh+cR0gLF82aemZZSad6 -HwQ95Bd+9rOjLt9NtKVH62rfvGuHs/H7gkf8PcFlKdDDWLP89/OXOjrG6S27/rdhn0ebAk0AQR11 -0rWmPayG6ysO5NofFQE7tK59yEO4e3KG8y0PUUgQyUXZrggHEvFBmIpriiuotNhHvPRpol50ZQiW -rcBJJjPN9zANkTIAQtfXYqsXhW9TfQU2utVPdU3OAxsyeGqzWRRkEtyJ8HVrICXD1swWfHO08eI0 -5OrVtiJLMo7PGbc0Nv9RMZT9XhrXH769Gig4QW3TYwZG/zdVOHz6LhMhKFKNMtCilS4b039MZDeO -nnjiu+PamQTgdLWHHINWoQN8MH+Ec22XzrIBl5abADowsCHIWidjEGofDbrRnM0qphXMA7jQIQDZ -RzkGcanbVcfMnOorj0dOivw3ujUR+h+i2p45oBaP4vWGlySpdnArWqVNQRu6rIJwOE1w92JMtDYu -FQioFWebFK+Vl/IikzUMO+XHjXFvg+LEXywursoGK8SMTbyTG9imI+2io4fO+fcI424ozyoPYfWU -D8TjpPxE5PSdtxuSWqjPNgjbuX8phKY7daSaDOyQ3D1lnopZLXDEsT/cNN3VkxGcPY5CR5hoXAWV -hkpx+42y/JpBFXP35D77MoiKmbHYNUrBwKtRfNCDml6ZACNEexZtl/G9MWsWhWiROIRjqtryNZ+C -fcWsS+5j/hNYcSLqCfyI5loURaADzAS6N41hoR2NCn/8vKbqVV15Ar6oqpVWu6JSe03cbxkJdwJb -plWxCW1qRjQGStw46+Hr2PICPVdsxAKTGJZQxOyN7gMraPskaFBS+JGU4jOYJtYG5z4jTqwFQqJL -3aBBxtwyOinkGpL6rWYHwHs3fEi/CW1uptI1LNV4E2dysckPKCt3Lu2mzB3D0rJweWX5D6ANGWSq -5YR94Q7B5gj3RGde1DYi61JOWVFSj9TC8DPlv6jDKIoKqj/hyjRGV/uWfoyoJxkn4Ilcdh+s0OgD -RBrjRq/cczlqZMU3N6SiPTIdd4hImCskTuoDXkRUhknJchagaWlQwXkvR+YOf5YKdbxYV384IZw5 -yBfNIerb6TqgH4XBqAJlnX6qLwPgqTPgnFPbHYdtNRmXPAxcwCaE3F38QHOA8Gun7bmaTZyaQkCK -CGeRvad+c9AF6xnbE74GnugT0SOD7zWMXJ1QLNZAlvX4gp5Wqnq+ylir1PAY/H17L5oHsDvJxEzr -deRiSyUDu1+l47T/rTUe8t09jEeGIF+RJy0z+TCPXUadhchcHcM/5+RjszAQtP1Cmw9dko92T93i -zIF+QAp/X9n/7CPv4Hjw/xL2sCGTOvQsWwyDxM8TsYoX1oTrKLKHHaOCXgcbgDCM3W4CDW9c+ntT -5eDomfdK1LiRhvTGC7nvQP6hxB/2lQfxv7SK6aNe3caH8Lqsref8QBecJMoKzHGNzBfWZpZAjARj -2Un4sLNZV8wGvhM3iJQBV4Fcz+0579hhFL34YxvR4/r0Vqpx7cMeCiNOvMZ+GpWsk3UlPXFt5xT9 -ZBPj/QcuIxB/Rpnyc/KnBTY1iq0k6JgPi3W6HmxBg9+BDXsoGle1IwGREXh1K23xSlsLKCePDQlm -jdPNYbUVO5KtFnGIMOws5zYDIvQ/qtYh6oiEX7BS6kCWGpuAbGpgNv0s8B5OIqWFTpEqrtkoR5tn -7IfHAcWsx1+A2NgjSpQScHI/G5df/eeWeJqiGUtQF7aaUjmad46r6EaJK0dshsP72uqrLgICmfwK -Rmjp7D+d3Wp11UBb/ZZNkuJXvrKW+UGk/eDBuC3/89ZHa+tkJaoDQXDVzwVl0e92HTtaLSDSyXYF -2tiNvlQAM0Smi7p/bbPHJDKQw424M8JKfunvYSepQnVA7UToKHHKJrunLafsNoT5TW2hHOf6sbmH -o9opd6AnKAeVNZMkUOVw/ZwXfeasdYHRgk3ZtFr7RY1O5sKPsJpALRUDpv/Cij2Ysq0ZvUjBZqDG -9X4HJhrd4oMsABxNTWoXkNeDiZq+KpFUaIOOykwix2nkFYob79KP499qo5tPOMAtNZ2Rh2u11ecV -AGSI20ASecU2cihe39lPQLHycz2C5mY7hqbjAH1Br5Qr7FBWzo0vktoWPT5fIWAkATTmpLleXe2j -bsRHVoiBGvIBXoqWUhtOVb2c4wIR2cddMSwDBs1eVHC/TzGBcBLIRBy+7jONBFKKVh+bkvs0LYcG -oPrg+hFm0dBQzZDblzSIo/Ij6MrCbIT6Y/dLFkbMFuTJZOj/XCUpSCMfdQjhC3STiB5VEPRebqaq -OmcgtnCJpohz0LTkqH+7HSzSvB3i9TafTghxjpc5RugfDxlHa/VVN681tGzwa331QWL92CNx5EbG -pEPpMnKDeDPZuqO2+XAVy6PiS0dD275Eyoqi+pa6938+yifdwCtf/3jfsyysHL1hCDRdzkNnZQEU -7eAYrlsmbwgHFIAoU1YWeVOdDI31DGTslVVPVwCJZ/HKiNgqV6fOwk/ej7rrRtmA3v+UlTPXw9/w -cNmEgwwXuzQWGURvLHMGfnUG+JFfc6VoLAb0OZsyZPquYAPN/KQqLeGACLkFKr40zs/ZlrafRYSB -I+ICD6W0DMYwP6qg/AsmhlV+0BsdrbwkJYk6/c+3wm1khLjhMjRJxoSkTaSo+qDqurayypNVSl0M -MEsUm3YNXDQtKpO12fvWI1THmRamy5NxjmEFGzKte8XYfuVfbFCpln0udSfIlCuAdmzSKFr0i6iv -IWOeF5Gdtm7PIAuL9D/lTlxibpgD+/ZHf/VoVZB3lj7+ITojmOvf/6o2ZfVU/bA0OO52mWSqY4XP -PAG78Gdm7/kcGkJPLhbT59oZedThVhzXocetNihPzRSRf++i3Vq1g1HGR0y6JXu9Bx4X5oiKo0Jf -Xyg2+hyablrIpFK/Af62KtcHlMX9jM9vjLON2H4XKRc9kl038esA8uhsC5cQSMfwD3d93Np9yedV -u2sntlIru+KjndjkUXsT2LxAoaRViBPCk/HgkGjPNd55WOYveDn1Q7PSsq5VOIj7DOMhauk71rDH -Ec8yZlTve/esD2X4K4UKEnl0B/JkYTk2c1FOxAkSfBje8p+IPTvMyBCsDixY4Ch4pQlihq5x9FsS -va6mXqTD5Z8vwtREDQegJv7F34Vj+5DP4+uS/vwNepzN5j8SU0UhvoKCsZhZSiQq36eDIAlNe5qx -miHOK2bOhPhRsO4vB8QSrurm7ku+CO6ySf2NkRi7zmrFprOB/3Lx9hynQDS0FOVyueRj3zoqsdUp -uFq6MkS0ZApYFgmJ8gzJb/jbLM5LZlPAojJrAt46KAWMsJKqocFuWTIoqK8msegVOtD8pF07gjNr -pW1WmPZxXqTXTK4Jg0IK+awSF0gLt8F9BD4R+B8BWRauN1jbUrax+IHr+Z0Gu4SnFuweoT9VjN/F -S04jSo4tZqwubk2iATMkEv8wu4iVc/NwlK0PuGZMOxJFbfzpozK0pV2o5tjWdSEWcJkarei6+l+T -sW9SqHAyNm6tLh0RaZYx488kf23/G/QK3t7zhHOcVQ+eqEd1j76VYuu2inQAPQqRUb1dAMHkN19R -vxSoI/YeDDrcrGVpY2qcOavEZgNZgjSHK0zXW55eKKP5mgfgSLo4xT8Rwxr+4hyl3/HghTMkoXis -RQStCe9TQdVFCn+j7Ppub109mEN5ROyTAsKZPTQMDpvHu24T39/YO8KmNFiM7Eh9Imu+G6JfTQ44 -tqTbHMEyyMBW3QfTR1ja8qN85DQutPMYSp1/SRPuusoh9mX7FNYGWOIYAgACUeYBfCCuXMpCqptT -yQfPADLPsNRAJn8y1JxGRj6kk013/fcSt78kIJiDZ4uSUz5tMeVl+c7fMUqMoDK60rd2Dlkd2hd7 -Q/xTITm7JEOI5Lo5n0FggQvshvVH2+XVfMRiLGYNnY90kgMD2dOar9cP96FjlZc4Joi3e9buInlG -KVVYlHkyvbx9kSm8c7fscq+Jx7Duy7hDS68gt1iMoyra2xSEXOyGF/UJ4NFT3ynMuB+jPJ0VmNX7 -l3cmYc20vi0fn+KXcbkGuSjeIRlBZDHd3LlB3ldbfCh41kxnKRrY5JMgMlv/PqUrlR9GLW/S5Yl8 -tfYeabJ+OLE0bYKBjZynrOyX5jVV78AvLLem+yQmmjxU79hD3rLwmbkinTjj+XHpK6oE3OxE18d2 -BB7MrzaSDUG8zftM1j9NE2zc7htqpsziNjSqDaddC3XNeNmcRDbvhgs7bdbLKv014fJAbsQrhsBv -kWA0RsBqrNYZe6l8OBIT0dQIU5bFssQT0sN6QX70RXP5Rm83ta5y9lqJ8+r9SgQyZxVbi8Jricsb -T/ODUTHWFxgR27FNZb6Vc0dZKktE2w/jWhS+el4TpBe85UQE01OdkPyBJYB1WpbsmaB7wAERWtv7 -u8w7YiksgkodcMkUIUmL8muMQGet1OdFD+2qeM4e1Ev2fQHsQNRNWgXvTgvriOlQGL7rEatS9bjC -RLGWLG2J88y5cToCUdwse5GwHICJEe2hxWLuL3eJkIJefEY/yMjb+kJYwUU3J1ksTyF8ig2QfH4J -msOUbwjGkMTgo5QCFq6z86z/VnIW5DZv2RS9+kloaM8hvYJ6Ld3x1hhtKJgq1bTL4wDGtkG7WTVC -LFuH7nRFNh1ET5+Iu1bYhrdOAa5gqrR5OUraRUgQUD/hPMzpvyAxKI1LyDfLreNRNwCqzAuJcX4k -jVlIYQuSnIq47VR6yVmXO++CpHsvzjQNAT2ylRjtLMywaMiYxV9+IeK/LU6vzy3lMRCMF8f4XWDw -68EDBoQHXlri2VK7Mvq7KRkFojFgKGGe/wXqvnil7sfEOFmciJyu+w+EBpimxP7LtraE+toJKBgR -dsoG0A6PWKPVp3lIPtP/NjSlLKVlRGmgT1mvhJwLM7elb/zD0DGcU4NFxmGas/oKGqDxRYshp6Tp -tIWQHU0ms9DuHxlfc10MgvocSiGoNPFiizHzOlrZwy63WwTmopJihlWfrxRsNzKQGkc9VFBnHGLW -YQULEYX/3ItTnloho04I/L7YiReXtvIijmN0n6SR+Okr48RE2kfSkkraQ0xqwHAptv795WP0AyT4 -xc2xGvHd7DnJOGe6XlnZTUr8UzRoyS2R0oz8+rgRuWC/dedBuMQJomBzDnaavdP/wx5vblJ9eAvD -pmXe9+wRP50atFPDZOF4iM8M11StzASCwTZX4mybapfE4WkZOpw4nWg+h7tlCQOxWAwdXDIr6nk+ -0VpAQHzqqDxGMiMoTymp/LZe5R7sMTMfRpLI5bFaJ6koj+nk+Yw1NE1atT2AMA2fARyCUNs0Cyhh -qxPlISSaJBYIwqSbmED7tAOOC0BYCGtqqo/s3Fpj+dgdCyR8VsAPPvmm/b9CShA9eUK6zolrMdGt -s3wxv/9Mv190Nx6CCA9+5iaMlXaCqPILuypQM8rXoduWzw6wrMNws92AucrDms15fjNNBFF8KXkH -J45SV9P59jSRvBYL6xgUGkXg5SXSTaTf+cnG4p7nWt82s67dlgMwnU2+JfbPxe3MjuJZ/wgXQKE9 -RyF7DOIu/Iq1GfI+iaVwEWM6LeUxA7cMOgsG6msJrbPQdPv67uxWJjxx5S0rPlQABGtgBUFL0Ec4 -DEEgq04en2DcLsDaYTT8JnAf6xBIYoa2MpcNQnIWcRUjNS+NcM33S+HIzHBbGLkYxTHxmyHi3I13 -BR8jwbCPS8hJ3+FvstsRS2RRcB31LtyO+YnlZLakDr1ECAsiAWbyHJrhjtfM/GNBRVUmGWJoADuO -xA722zwrt3c755bXUiQVj8CM4yYi/Y9VHoiQHsExZYtB96Gyh9sNKaHvTHSSkcq/Lo2ryNsuFnMc -uEnWSVowrWggZVSdz2ZxvNWpoOj8mRS753AZq52dYQHQsRGVgW5PUmfx5FYPXeKSQXV/lYABuEXe -T0NFfCB01G0ZmapdsLcLn/r/4XzWR180qyBPHClChdEHuJHLmxi7q9KJlU62e1K31fDXaVNxG9UU -wUhFMa4TcPCMF8pSSxDsdttFlUfykPjD8lIKpn8LVidc2+7dtpf3XnWyy7nSR2TGPaQiF/5Vg5mh -gsOBZg3x/jFH6iX3/VXBVc6bd0WC9mIsXokESJ8ttacqMw8/XrbGlfKWfs8pe7+ZH1pmVCUcJjlf -ALi/1iWxQgVT+glrNpA8J1U2u58rf/dlCe5dE/ykdMEAwdi8oGDXP6qktDxGN07ll/vwi34plkfe -gc65kumenhLoj8hmcN3Bl5RK/Bss8CTs1A9zS0LtX05+GbReAaU40lBJvqoychEs8wh3eI0y79+c -Gz12bkIfLkNg261tYMwKzVGmEy9buuFn6/GtJgVQAbSnoH0Wwr1IJ6AT88Vd2AS19LX7Utrlav2c -nLNpUZmAqhoMXLufR6bdHTo8oxx/m54ZpVkXbm+kd8dKXEQcv2Sj7Ku4Cz/lgAZunDhzUIm+MSXA -G2FITJo4WyHmtMff5+Sb6bZPmvEUzDxzp+or5vJ+5O2yY6yMlbVdfwNr70JrWxopGaNLsoXMTEFZ -6UIGdeLrzB35ACOpb2xmuVlH1Tt5+RQg93e8AE+gJh/xL02v0PG8/aNgiSO0XQQuxkmlC43kITpd -33hvOTtcGhsNFbZz6rpLCps/Z36OSulTljKDLxMPfz81k0HH4wmprIH5KhQzewISgT99w+xEZE7R -S702JVOGbQTRhGivEHsWnN7pzQppym+jwognPLzbbjODRlsTqGSUFN0g4DIVBfF0gAHsJ+Abz6Z9 -BEndEIzjDPeuTvYAwKNrBgtHCMe/FWI21vlL/XggnCC4LXR5sBK7in7T62214fA/cEy3KMd4UMEn -n/ivevIHJAksbDJ75HgVqP4bRwoKpxQ2dEdXfRjQpIepoUVTnMQWLSuSUGYv8FtW010fqxln6mqr -MPq/Y6+/bOnjXnjxf19J8Qq3boiBYdbckWBuCr2aLP9CsLBzJF68ugMi40dNal7hDO/O6x93Z5Az -Z9hcfHDh4bV/Q5QaztZmc25NVheIMNNL4d/ODFehnPvk7aOt4vK1uKEefvf3/oBzT4lxVAiKO/pQ -Bu8PsCsVKTG7vI9sWgus5vtGeLvEAU5TDmMDmBHYf1FQ2YFs6ah0pmZgPoBlhOojsNLsLx9RPVfp -knERxXwsX0EWdIZtWLUUu83iEAxehIUb6XqA13hQEUd2eZEkn4Kd0zeZdtoTs0p7jMbuz9G+1F5d -mBry/lJ/7WUx1rME8WIrxpOJ9hHe3Mr+AWmhzrpugODsSADuj/gXwCTetvswHJt2pkTJ9NtVvfX+ -kkm+xrhXRcY2KUvuht/i3Djmx+S3Il3rt8Jmz375oYIS7Z3Ne1J6yjpHUFW5JZSV8PgsKMD+ZpQq -BchZsY3ytB3jRzvhVlGHMTlMBNXrY/EhLAqCL3uQponPG2Zm86ahtdfYRU6/1OcdIeXzKEbu5trx -LLkH/Lfv4eKGYFnMyFBYDxlWy84Yxp45lVlRfbNHyxt7rR+ytkI5i+nKiq7MZKCDi9KO4R8u/ZLr -t0z0QSL7uMjcJahPfgAKG0uj4QGPxxYhN/1Lf8CdWEs1LPGQ38bJA/f3qljQhpPylj6NhvJk/x4Q -JCa0iQsyvQfLhXHSC4runkXn/HSSwNft+kbwxtcTMPogqWaL6VvGYxv1heVJpSiK8EtApDs0iGSP -tKkbpM4XFrje+j7trTwpwoyt+ocIT968b6f9pVb1Cn+kTK03ndbnygP5LKWHNbkhwM2VMOVRt7Ra -O6EKD//F+mCPM2ZaeQPwFX5DNtK6QyvnmUX+SUiG+ADXQwhw6OmeBOB5iuVlhvw6U4rNnHzdxXul -VoWJ82+ObuGiPteOioW1jgoqe7FH03DOOI6gk/e0WLrOm8kw1oVJYLY+6NKBVoywMei02AygX5kj -dIlBnF0HdTqtI6Q3XAH8PWtIQsPJBeCi9q5Wq2YD2TEu8/MWLmseHnXl8jbRrqJJ7vNIHEHbFdwE -kZu1yXfYBi47Rn9PEgYp/Au8BjgNUy1Lcic8Br8tXfPCtoHKr9FZf906GL7J1Wd0jxgUCI+SHt1r -tIDMv4YbJ7K2f6S1d5qJpWgEj2Iqhsod6/OPVKYykmeGxlBX94sVeie9c4RmXQSetMnbVbXhBnlY -k1u9U/GFkkLyqmWiae2i+QJ0N2fi60eNEEgs9hLU7NblaT8Oqhny0LlIugUzb0zxe4ZBTi/QaRkM -BZKq3UDLoMm0Yk3ctT18ZPtHXGP8At8NgZK6P+BODGkwAy0XMvkbUlupAlalI4Dua3TI3hBFCf1x -f7MXkxPcczc/NXIXLMLiGiIgkmeKAiPLsy4NEoLmfUgSOH2vb713TI79g3EHfdioTNuHxV0BMiFT -sb7UGWVTQAm7C+h1GJRmIxOEXPMYQ6Zt6uVgVXTzCuyLx/WzcSDttVYde+3ZGuX+6jKeb2nvZArV -o/99J1baxmiTV2BH3pkmnM+HdOMO9DRVSvsiRgCYYKKZ6jCH5z05AerGUMh+ltgWlze+arhtsD5O -5LsPbvgxya63XZW16BfDST0WYtPdNY0geZDK+Qt7Q0CTTuaR3xJYdDbV3rolv+dRjRP3fQWN47v1 -DSlfB/oisaBG6OCcmIx4W4HtkVNd6EMbZCxtuqUvH2tfdnBv9HTopmiKVJnien8Je0bjqHm1L/sq -bRjiJiDiRH6zzXpU57uLBmIUPS6SSFJ0cmbNdqTAjFkwEdR8Jn1yQ9kvJeUUgQTuvZAMWHw4zQAG -XOvIaMXJHzHJwLzk6JW5TOkpJ92GmlPiM4nzdpYEjphSHjwVSQcyZ4Q925QSl3S46LynrlrhMMbl -UfJqO4wbNw5Ejmo0jFHtMe5j0B2fKFJSigCqf+eVkoDN47eHP+ZPwGKp6rg3hegdg1PpD7e8CaLf -/xLVsdTUAiHEkKA5elHb7Mae93tbBdKon7lw94KPjNcjQGf6SDHxlYRc3KUE+FIXea6ESp2NgwOf -NMEzKgrdDw+vP1lilwfIwj9jP1tbWPVKa5bEdYx8Mf6S4LZtLfI0RA8lyTfQEBgHymN/OpsLFGFZ -pccTG8UZOwcIaC9yQU5M0fMqavyx9mLzgldKmDJ3XXFUPVxH7GONpw8J60LOOyDQ/ow8aGZBWATw -3oTqd54VnGR/rcRaiSF8qEnHCZ82bIpxZVy3cDJLqCcJDt+OMe3tJOheiERSVP2+k2jo6lkdXz7k -Sr32Eg3djcZueKOo2ySDQkprhFr1VKBRtfJPndINrl6+0JFu1PfjeO9E2/MoYsaoeHi2rDbCk0Sl -RwCXDEXfnUd05cdRFnrlTlQmrEs+wWtu/sLj3kSo0WOHmvMgKCJDBT0HbX6Vq74YTJ3M82NnwPuD -uVv9Uzy/o0VHHqguk3L58xnoMkXkMqGreTJPCrLMMZRjcQYOfS3eg581ntu2c/OuvA99cNNYSJFO -P6rmpqtjAC4CXy5zS8DAA1P+waLj07k7DDK7GlqIwlwUV7kucabyoUHV8vc3I+1Br8WY22xbCTSY -lnr2B7hzZZ75J8IkhV85f2oBnn00RK2rF2VhFnSbGJzutPfguRGjFFszGRHyK659FdHjvrLHTdGl -/m09Q82n5edfZe5c0k3NQoDgWqDI22D/MHqQcTkXtrsTOIQK9oh2+8f/hBlEf9VkuWQGu9dh53id -rzO4d1fAfY636NXsnBQVadiRhD6A3cRR3BRdd5E4ZiTo0aHiZ9/r++m+kg8xweznPPh5NM75REgO -rgRrD2FmqvjDY4zQiOBKLRYEehvBqYXcThHAaHUefqW+lQGA0PVTrhZLmCz+OOe0QolkAqZzS1ix -j89julpjrdqZagGOhbHYFEVRKDK7OjyppF5gdnFNDMuFbVBZPVYt+Y4IEL2GYcKyLfuamKqpneWZ -/v3UF6im6kHe7/iUR12sQ3wClOtqKaTmSWeBBXolhvr1rgbV++BAx4jchD7YZdpI/UgjX60BD8RK -MWPoQvxmrA+F1SFqQBABN9f3n63kbY2kvRbawVuiB1Tyh8rD/bkCNFWZTmaAxGMfVaZEcTMFP/Fn -AznfX4Pp3513Kinc6EjnAsd8mr776WhVNSSrqdIJfcvwhMeUzhPQ4pT81sI0M0IbyIh5xeQKBV8R -a8c9z8IQFEh5WJbLeEIQDwkle97tYV0AG1Vv5P0Gg6NLSMy/aHYdb0MOQwIhsoBfUyKG07HJPeji -mhS/IOGSPnw7r0RBsD66mUGCSF1+N6ItSH0hO4J7qkzaQE5mrqfi+E3x9wmKy8az2lhhc9dVpKm6 -V7BB6cE4Ozt/1TA8JLyo1wAQ928kzchvSZ3coKCPhm7wNqSt58tAqgy352bn+X8Q10CTFok0Vwda -qYcUdjT7iy7LhT7ZXmuz8dTvUpSNWYKgJfhs1lbuqjJE6pfGNxSUr5Xs6qtxtL4/cZvAWqUu7lyL -GfZJanMyaKsNrkBzQ9PuBpEb7z/NByhhBH5nom1iyRTdBHtLsLAw1+MVmbovynTBHogidIIpG7fM -a/A/GIkR5pS+e/knwr/5RD+FMYCL4u8jElA5NeXnuEKJJLxLrPXIT8ESBeVOL32bYQm4BUKXVECH -WUp1XcskSX6syiiV2imfOKo8vDt1G4vj/Rny8sIGXoZM+GOaxVerijGn9Fuhog8nvljQR9lF2Iod -tZ7y5YQxxqoophEplXzfWwUz0an9Vevqe9Kn5dYNhfS4nbJuxQnccdTfQhC/rtLHp0E6Wiw+GDEi -6uhOTgbgmPskJHpwkrznVgkm60QC5f7nlkH7bzIl7Qi5xS68VV5mOfH3ZJQTHWxFEqVHY06PT0Oy -nBJofNtj22I5578N9QQNBT3GjfoYrObrqHModtasrYzkd35uWwtRwF/nn+DwR7WFqZa+PqE4JAoj -Bh89VxOqetqWblSipXOWyXFGxgSt/DdrgoMmoMPq2VnKR/Ohh/PGAq+rCH+yIR7swzXaKndpdcQg -U4w9oO6RnOTtrMVeEfN3GbgefZirQV5XL1jiXS290N1Y8WCJiXfW0TApK06AEPXi7OsBrRkwN7Rf -vIPbAZ7BY5leLOB+TqcZOvP0c6n4zOHRi1JPFNuljbYwS9e90Pd8k9UWyDOjM78+eOhl0RVGjiyr -APXayrIn0Jo954vInO5NJzK7jbl5njGVnyyLu9UCfiA0lI4pRvTI4c6nNmaqQjNkM1vd3eZVverv -rS3k0y42t/ZdOr4RMNkRQj5nf5r2NsSROISbh5iL6gjExIqosOmDiytVu89b1BrJ5QH/nObG2g48 -ZBIZ6m0W+Y9ZdiG0cme2fhnDt629hjr1VNSKZS20a3NXw5jxlkbkjqXgRDedtN0P6NztoKb5zDyV -2L0r2an/Enh5K0zDeOVABt8+WOF8vG8vXJhiIuqY9Qm6GuhJcnWqChqBNZq32swISo0j4+jV4zCT -yhhW4hk9uX2f+P0xtVSHWYJ4qZ9saaT1RkzJzpJm+idDx3MgpnER1NbA+m0ku+L9/VY7M59HV/mb -hQvlyKwOrdyRdN3QU3OUAV/x+jvm1uaXOOU6hl+ykMTVH+ut/M1BxsHZyjxPpbnzzSEqCxPOp9Ut -Hholwck8Lx4j/fzHQ5G/T8lwAtyM5ygNRGr/L4z0qZHCR580M1/8WPKAogIGFJSN/GsUAEhjG+eU -+ZSdVHZQ2j22wkTtAf4WOQ3s30XQ/CkLYtfOu9c7LANxeHgD+mc4dR47E3CeuSp+ya4O+WZX+l6o -+xxH6vSppAkrenvnbM/FuP+SetrRtdp/Qbea5ZyhodR4khnWdyELzzAT2ciIpQx1RXj+SjkKgSwE -gtW3m+c2p4nn+c1lSdJTimMLDueocRe6F/bwkii4OODdiexWjmd8DNTXmgw9lp6vsw/VYqwhv2Vc -W8W28JC4MUFhlNzPgs150Op8eFYC0Vs9lp7BMQ24xrRQb9bVzHfyGZT8EDiazebX -`pragma protect end_protected diff --git a/devices/Micron/ddr4/tb/interface.sv b/devices/Micron/ddr4/tb/interface.sv deleted file mode 100644 index 1ee28fd5a6..0000000000 --- a/devices/Micron/ddr4/tb/interface.sv +++ /dev/null @@ -1,34 +0,0 @@ -// MICRON TECHNOLOGY, INC. - CONFIDENTIAL AND PROPRIETARY INFORMATION -interface DDR4_if #(parameter CONFIGURED_DQ_BITS = 8) (); - timeunit 1ps; - timeprecision 1ps; - import arch_package::*; - parameter CONFIGURED_DQS_BITS = (16 == CONFIGURED_DQ_BITS) ? 2 : 1; - parameter CONFIGURED_DM_BITS = (16 == CONFIGURED_DQ_BITS) ? 2 : 1; - logic[1:0] CK; // CK[0]==CK_c CK[1]==CK_t - logic ACT_n; - logic RAS_n_A16; - logic CAS_n_A15; - logic WE_n_A14; - logic ALERT_n; - logic PARITY; - logic RESET_n; - logic TEN; - logic CS_n; - logic CKE; - logic ODT; - logic[MAX_RANK_BITS-1:0] C; - logic[MAX_BANK_GROUP_BITS-1:0] BG; - logic[MAX_BANK_BITS-1:0] BA; - logic[13:0] ADDR; - logic ADDR_17; - wire[CONFIGURED_DM_BITS-1:0] DM_n; - wire[CONFIGURED_DQ_BITS-1:0] DQ; - wire[CONFIGURED_DQS_BITS-1:0] DQS_t; - wire[CONFIGURED_DQS_BITS-1:0] DQS_c; - logic ZQ; - logic PWR; - logic VREF_CA; - logic VREF_DQ; -endinterface - diff --git a/devices/Micron/ddr4/tb/proj_package.sv b/devices/Micron/ddr4/tb/proj_package.sv deleted file mode 100644 index 9cc4fdcbf4..0000000000 --- a/devices/Micron/ddr4/tb/proj_package.sv +++ /dev/null @@ -1,496 +0,0 @@ -// MICRON TECHNOLOGY, INC. - CONFIDENTIAL AND PROPRIETARY INFORMATION -package proj_package; - timeunit 1ps; - timeprecision 1ps; - import arch_package::*; - - parameter DEF_CCD_L = 6; - - function void project_dut_config(inout UTYPE_dutconfig dut_config); - dut_config.min_CL_dll_off = 5; - dut_config.max_CL_dll_off = 10; - dut_config.max_CL_dbi_enabled = 32; - dut_config.max_CL_dbi_disabled = 30; - dut_config.min_CL_dbi_enabled = 10; - dut_config.min_CL_dbi_disabled = 9; - dut_config.cl_17_19_21_feature = 1; // Add this line 0-off 1-on - dut_config.cl_a12_feature = 1; // Add this line 0-off 1-on - dut_config.ppr_feature = 1; - dut_config.min_CL = 9; - dut_config.max_CL = 32; - dut_config.max_CWL = 20; - dut_config.min_CWL = MIN_CWL; - dut_config.max_CAL = 8; - endfunction - - function void GetCWLSpeedRange(input UTYPE_DutModeConfig dut_mode_config, input UTYPE_TS ts, - output int min, output int max, output int ideal); - ideal = 9; - min = 9; - max = 9; - case (ts) - TS_1875, - TS_1500: begin - if ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) begin - ideal = 10; - max = 10; - end - end - TS_1250 : begin - ideal = 9; - if ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) - ideal = 10; - min = ideal; - max = 11; - end - TS_1072 : begin - ideal = 10; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = (1 == dut_mode_config.gear_down) ? 12 : 11; - min = ideal; - max = 12; - end - TS_938 : begin - ideal = 11; - if ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) - ideal = 12; - min = ideal; - max = 14; - end - TS_833 : begin - ideal = 12; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 14; - min = ideal; - max = 16; - end - TS_750 : begin - ideal = 14; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 16; - min = ideal; - max = 18; - end - TS_682, TS_625 : begin - ideal = 16; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 18; - min = ideal; - max = 20; - end - endcase - endfunction - - function void GetCLSpeedRange(input UTYPE_DutModeConfig dut_mode_config, output UTYPE_TS slowest, output UTYPE_TS fastest, output UTYPE_TS ideal); - UTYPE_TS default_tck; - - if (0 == dut_mode_config.read_dbi) begin - case (dut_mode_config.CL) - 9: begin - ideal = TS_1500; - slowest = TS_1500; fastest = TS_1500; - end - 10: begin - ideal = TS_1250; - slowest = TS_1500; fastest = TS_1250; - end - 11: begin - ideal = TS_1250; - slowest = TS_1250; fastest = TS_1250; - end - 12: begin - ideal = TS_1250; - slowest = TS_1250; fastest = TS_1072; - end - 13: begin - ideal = TS_1072; - slowest = TS_1072; fastest = TS_1072; - end - 14: begin - ideal = TS_1072; - slowest = TS_1072; fastest = TS_938; - end - 15,16: begin - ideal = TS_938; - slowest = TS_938; fastest = TS_938; - end - 17,18: begin - ideal = TS_833; - slowest = TS_833; fastest = TS_750; - end - 19: begin - ideal = TS_750; - slowest = TS_750; fastest = TS_750; - end - 20: begin - ideal = TS_750; - slowest = TS_750; fastest = TS_625; - end - // CL21 w/ DBI disabled is not in the spec!! - 21: begin - ideal = TS_750; - slowest = TS_750; fastest = TS_625; - end - 22,24: begin - ideal = TS_625; - slowest = TS_625; fastest = TS_625; - end - 23,25,26,27,28,29,30,31,32: begin - ideal = TS_625; - slowest = TS_625; fastest = TS_625; - end - endcase - end else begin - case (dut_mode_config.CL) - 5,9,10: begin - ideal = TS_1500; - slowest = TS_1500; fastest = TS_1500; - end - 11: begin - ideal = TS_1500; - slowest = TS_1500; fastest = TS_1500; - end - 12: begin - ideal = TS_1500; - slowest = TS_1500; fastest = TS_1250; - end - 13: begin - ideal = TS_1250; - slowest = TS_1250; fastest = TS_1250; - end - 14: begin - ideal = TS_1250; - slowest = TS_1250; fastest = TS_1072; - end - 15,16: begin - ideal = TS_1072; - slowest = TS_1072; fastest = TS_1072; - end - 17: begin - ideal = TS_938; - slowest = TS_938; fastest = TS_938; - end - 18: begin - ideal = TS_938; - slowest = TS_938; fastest = TS_833; - end - 19: begin - ideal = TS_833; - slowest = TS_833; fastest = TS_833; - end - 20: begin - ideal = TS_833; - slowest = TS_833; fastest = TS_750; - end - 21,22,23: begin - ideal = TS_750; - slowest = TS_750; fastest = TS_750; - end - 24,25,26,27,28,29,30,31,32: begin - ideal = TS_625; - slowest = TS_625; fastest = TS_625; - end - endcase - end - `ifdef DDR4_STACK_X4_2H - GetCLSpeedRange3DS(.dut_mode_config(dut_mode_config), .slowest(slowest), .fastest(fastest), .ideal(ideal)); - `endif - `ifdef DDR4_STACK_X8_2H - GetCLSpeedRange3DS(.dut_mode_config(dut_mode_config), .slowest(slowest), .fastest(fastest), .ideal(ideal)); - `endif - `ifdef DDR4_STACK_X16_2H - GetCLSpeedRange3DS(.dut_mode_config(dut_mode_config), .slowest(slowest), .fastest(fastest), .ideal(ideal)); - `endif - `ifdef DDR4_STACK_X4_4H - GetCLSpeedRange3DS(.dut_mode_config(dut_mode_config), .slowest(slowest), .fastest(fastest), .ideal(ideal)); - `endif - `ifdef DDR4_STACK_X8_4H - GetCLSpeedRange3DS(.dut_mode_config(dut_mode_config), .slowest(slowest), .fastest(fastest), .ideal(ideal)); - `endif - `ifdef DDR4_STACK_X16_4H - GetCLSpeedRange3DS(.dut_mode_config(dut_mode_config), .slowest(slowest), .fastest(fastest), .ideal(ideal)); - `endif - if (default_tck == ideal) begin - $display("WARNING Missing CL in GetCLSpeedRange(). Default is %p", default_tck); - end - endfunction - - function void GetCLSpeedRange3DS(input UTYPE_DutModeConfig dut_mode_config, output UTYPE_TS slowest, output UTYPE_TS fastest, output UTYPE_TS ideal); - UTYPE_TS default_tck; - - case (dut_mode_config.CL) - 9: begin - ideal = TS_1500; - slowest = TS_1500; fastest = TS_1500; - end - 10, 11: begin - ideal = TS_1250; - slowest = TS_1500; fastest = TS_1250; - end - 12, 13: begin - ideal = TS_1250; - slowest = TS_1250; fastest = TS_1250; - end - 14: begin - ideal = TS_1072; - slowest = TS_1250; fastest = TS_1072; - end - 15: begin - ideal = TS_1072; - slowest = TS_1072; fastest = TS_1072; - end - 16, 17: begin - ideal = TS_938; - slowest = TS_1072; fastest = TS_938; - end - 18, 19, 20: begin - ideal = TS_833; - slowest = TS_938; fastest = TS_833; - end - 22,24,25,26,27,28,29,30,31,32: begin - ideal = TS_833; - slowest = TS_833; fastest = TS_833; - end - endcase - if (default_tck == ideal) begin - $display("WARNING Missing CL in GetCLSpeedRange(). Default is %p", default_tck); - end - endfunction - - function int GettCCD_LSpeed(input UTYPE_DutModeConfig dut_mode_config, input UTYPE_TS ts); - int tCCD_L; - - tCCD_L = 4; - case (ts) - TS_1250, - TS_1072 : begin - tCCD_L = ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) ? 6 : 5; - end - TS_938, - TS_833 : begin - tCCD_L = 6; - end - TS_750 : begin - tCCD_L = ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) ? 8 : 7; - end - TS_682, - TS_625 : begin - tCCD_L = 8; - end - endcase - return tCCD_L; - endfunction - - function int GetMintWR(input UTYPE_DutModeConfig dut_mode_config, int tWRc, int tRTPc); - int min_setting; - - min_setting = (tRTPc*2) > tWRc ? tRTPc*2 : tWRc; - if (1 == dut_mode_config.gear_down) - min_setting = min_setting + (min_setting % 4); - else - min_setting = min_setting + (min_setting % 2); - if (min_setting < MIN_WR) - min_setting = MIN_WR; - else if (min_setting > MAX_WR) - min_setting = MAX_WR; - return min_setting; - endfunction - - function UTYPE_delay_write_crc_dm GettWR_CRC_DMSpeed(input UTYPE_DutModeConfig dut_mode_config, input UTYPE_TS ts); - UTYPE_delay_write_crc_dm tWR_CRC_DM; - - tWR_CRC_DM = DELAY_WRITE_5; - case (ts) - TS_1875, - TS_1500, - TS_1250 : begin - tWR_CRC_DM = DELAY_WRITE_4; - end - TS_750, - TS_682, - TS_625 : begin - tWR_CRC_DM = DELAY_WRITE_6; - end - endcase - return tWR_CRC_DM; - endfunction - - function void GetCWLSpeedRange_locked(input UTYPE_DutModeConfig dut_mode_config, input UTYPE_TS ts, input int tCK, - output int min, output int max, output int ideal); - ideal = 9; - min = 9; - max = 9; - case (ts) - TS_1875, - TS_1500: begin - if ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) begin - ideal = 10; - max = 10; - end - end - TS_1250 : begin - ideal = 9; - if ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) - ideal = 10; - min = ideal; - max = 11; - end - TS_1072 : begin - ideal = 10; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = (1 == dut_mode_config.gear_down) ? 12 : 11; - if (tCK >= 1250) begin - ideal = 9; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 11; - end - min = ideal; - max = 12; - end - TS_938 : begin - ideal = 11; - if ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) - ideal = 12; - if (tCK >= 1250) begin - ideal = 9; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 11; - end else if (tCK >= 1071) begin - ideal = 10; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 12; - end - min = ideal; - max = 14; - end - TS_833 : begin - ideal = 12; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 14; - if (tCK >= 1250) begin - ideal = 9; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 11; - end else if (tCK >= 1071) begin - ideal = 10; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 12; - end else if (tCK >= 937) begin - ideal = 11; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 14; - end - min = ideal; - max = 16; - end - TS_750 : begin - ideal = 14; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 16; - if (tCK >= 1250) begin - ideal = 9; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 11; - end else if (tCK >= 1071) begin - ideal = 10; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 12; - end else if (tCK >= 937) begin - ideal = 11; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 14; - end else if (tCK >= 833) begin - ideal = 12; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 16; - end - min = ideal; - max = 18; - end - TS_682, TS_625 : begin - ideal = 16; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 18; - if (tCK >= 1250) begin - ideal = 9; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 11; - end else if (tCK >= 1071) begin - ideal = 10; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 12; - end else if (tCK >= 937) begin - ideal = 11; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 14; - end else if (tCK >= 833) begin - ideal = 12; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 16; - end else if (tCK >= 750) begin - ideal = 14; - if (2 == dut_mode_config.wr_preamble_clocks) - ideal = 18; - end - min = ideal; - max = 20; - end - - endcase - endfunction - - function int GettCCD_LSpeed_locked(input UTYPE_DutModeConfig dut_mode_config, input UTYPE_TS ts, input int tCK); - int tCCD_L; - - tCCD_L = 4; - case (ts) - TS_1250, - TS_1072 : begin - if (tCK >= 1500) - tCCD_L = 4; - end - TS_938, - TS_833 : begin - if (tCK >= 1500) - tCCD_L = 4; - else if (tCK >= 1071) - tCCD_L = ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) ? 6 : 5; - end - TS_750 : begin - if (tCK >= 1500) - tCCD_L = 4; - else if (tCK >= 1071) - tCCD_L = ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) ? 6 : 5; - else if (tCK >= 833) - tCCD_L = 6; - end - TS_682 : begin - if (tCK >= 1500) - tCCD_L = 4; - else if (tCK >= 1071) - tCCD_L = ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) ? 6 : 5; - else if (tCK >= 833) - tCCD_L = 6; - end - TS_625 : begin - if (tCK >= 1500) - tCCD_L = 4; - else if (tCK >= 1071) - tCCD_L = ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) ? 6 : 5; - else if (tCK >= 833) - tCCD_L = 6; - else if (tCK >= 682) - tCCD_L = ((2 == dut_mode_config.wr_preamble_clocks) || (1 == dut_mode_config.gear_down)) ? 8 : 7; - end - endcase - return tCCD_L; - endfunction - - function bit ppr_available(input UTYPE_dutconfig dut_config); - return 1; - endfunction - - function bit sppr_available(input UTYPE_dutconfig dut_config); - return 1; - endfunction -endpackage diff --git a/devices/Micron/ddr4/tb/timing_tasks.sv b/devices/Micron/ddr4/tb/timing_tasks.sv deleted file mode 100644 index 6fef43a735..0000000000 --- a/devices/Micron/ddr4/tb/timing_tasks.sv +++ /dev/null @@ -1,457 +0,0 @@ -// MICRON TECHNOLOGY, INC. - CONFIDENTIAL AND PROPRIETARY INFORMATION -typedef enum { - TS_LOADED, - itCK_min, itCK_max, - itDQSQ, itQHp, itDS, itDH, itIPW, - itRPREp, itRPSTp, itQSHp, itQSLp, - itWPSTp, itWPREp, itDQSCK, itDQSCK_min, itDQSCK_max, - itDQSLp, itDQSHp, itDQSSp, itDQSSp_min, itDQSSp_max, - itDLLKc_min, itRTP, itRTPc, itWTRc_S, itWTRc_L, itWTRc_S_CRC_DM, itWTRc_L_CRC_DM, itWR, itMRDc, itMOD, itMODc, - itRCD, itRP, itRP_ref, itRC, itCCDc_S, itCCDc_L, - itRRDc_S_512, itRRDc_L_512, itRRDc_S_1k, itRRDc_L_1k, itRRDc_S_2k, itRRDc_L_2k, - itRRD_S_512, itRRD_L_512, itRRD_S_1k, itRRD_L_1k, itRRD_S_2k, itRRD_L_2k, - itRAS, itFAW_512, itFAW_1k, itFAW_2k, itIS, itIH, itDIPW, - itXPR, - itPAR_ALERT_PWc, itPAR_ALERT_PWc_min, itPAR_ALERT_PWc_max, - itXS, itXSDLLc, itCKESR, - itCKSREc, itCKSRE, itCKSRXc, itCKSRX, itXSR, - itXP, itXPc, itXPDLL, itXPDLLc, itCKE, itCKEc, itCPDEDc, itPD, itPDc, - itACTPDENc, itPREPDENc, itREFPDENc, itMRSPDEN, - itZQinitc, itZQoperc, itZQCSc, - itWLS, itWLH, itAON_min, itAON_max, - NUM_TIMESPEC -} UTYPE_time_spec; - -// timing definition in tCK units -integer tt_timesets [0:NUM_TS-1][0:NUM_TIMESPEC-1]; -integer tCK; -integer tOffset; -int max_tCK, min_tCK; - -initial begin - LoadTiming(); -end - -// tCK and tOffset are the 'master' values. -always @(tCK) begin - timing.tCK = tCK; -end -always @(tOffset) begin - timing.tOffset = tOffset; -end - -task SettCK(input integer _tCK); - tCK = _tCK; - tOffset = _tCK; -endtask - -task SetTimingStruct(input UTYPE_TS ts, UTYPE_tCKMode tck_mode = TCK_MIN); - if (tt_timesets[ts][TS_LOADED] != 1) begin - UTYPE_TS temp_ts; // 6.2 does not support name() on structures. - - temp_ts = timing.ts_loaded; - $display("SetTiming:ERROR: Invalid timeset requested '%0s' @%0t. Timeset stays at '%0s'.", - ts.name(), $time, temp_ts.name()); - return; - end - - if(tck_mode === TCK_MAX) begin - SettCK(tt_timesets[ts][itCK_max]); - end else if(tck_mode === TCK_RANDOM) begin - SettCK($urandom_range(tt_timesets[ts][itCK_min], tt_timesets[ts][itCK_max])); - end else - SettCK(tt_timesets[ts][itCK_min]); - `ifndef SILENT - $display("Setting Timeset:%0s with tCk:%0d @%0t", ts.name(), tCK, $time); - `endif - timing.ts_loaded = ts; - timing.tck_mode = tck_mode; - // Clock timing. - timing.ClockDutyCycle = 50; - timing.tCK_min = tt_timesets[ts][itCK_min]; - timing.tCK_max = tt_timesets[ts][itCK_max]; - timing.tCHp_min = 48; - timing.tCHp_min = 52; - // Data timing. - timing.tDQSQ = tt_timesets[ts][itDQSQ]; - timing.tQHp = 38; - timing.tDS = tt_timesets[ts][itDS]; - timing.tDH = tt_timesets[ts][itDH]; - timing.tIPW = tt_timesets[ts][itIPW]; - // Data strobe timing. - if (0 < tt_timesets[ts][itRPREp]) - timing.tRPREp = tt_timesets[ts][itRPREp]; - else - timing.tRPREp = 100; - if (0 < tt_timesets[ts][itRPSTp]) - timing.tRPSTp = tt_timesets[ts][itRPSTp]; - else - timing.tRPSTp = 50; - timing.tQSHp = 40; - timing.tQSLp = 40; - timing.tWPSTp = 50; - timing.tWPREp = 100; - timing.tDQSCK = tt_timesets[ts][itDQSCK]; - timing.tDQSCK_dll_on = tt_timesets[ts][itDQSCK]; - timing.tDQSCK_min = tt_timesets[ts][itDQSCK_min]; - timing.tDQSCK_max = tt_timesets[ts][itDQSCK_max]; - timing.tDQSCK_dll_off = 5800; - timing.tDQSCK_dll_off_min = 1000; - timing.tDQSCK_dll_off_max = 9000; - timing.tDQSLp = 50; - timing.tDQSLp_min = 45; - timing.tDQSLp_max = 55; - timing.tDQSHp = 50; - timing.tDQSHp_min = 45; - timing.tDQSHp_max = 55; - timing.tDQSSp = 0; // Nominal. - timing.tDQSSp_1tCK_min = -27; - timing.tDQSSp_1tCK_max = 27; - timing.tDQSSp_2tCK_min = timing.tDQSSp_1tCK_min; - timing.tDQSSp_2tCK_max = timing.tDQSSp_1tCK_max; - timing.tDQSSp_min = timing.tDQSSp_1tCK_min; - timing.tDQSSp_max = timing.tDQSSp_1tCK_max; - // Command and address timing. - timing.tDLLKc = tt_timesets[ts][itDLLKc_min]; - timing.tRTP = tt_timesets[ts][itRTP]; - timing.tRTPc = ParamInClks(tt_timesets[ts][itRTP], tt_timesets[ts][itCK_min]); - timing.tRTP_min = tt_timesets[ts][itRTP]; - timing.tRTPc_min = 4; - timing.tWTR_S = 2500; - timing.tWTRc_S = ParamInClks(tt_timesets[ts][timing.tWTR_S], tt_timesets[ts][itCK_min]); - timing.tWTR_L = 7500; - timing.tWTRc_L = ParamInClks(tt_timesets[ts][timing.tWTR_L], tt_timesets[ts][itCK_min]); - timing.tWTR_S_CRC_DM = 3750; - timing.tWTRc_S_CRC_DM = ParamInClks(tt_timesets[ts][timing.tWTR_S_CRC_DM], tt_timesets[ts][itCK_min]); - timing.tWTR_L_CRC_DM = 3750; - timing.tWTRc_L_CRC_DM = ParamInClks(tt_timesets[ts][timing.tWTR_L_CRC_DM], tt_timesets[ts][itCK_min]); - timing.tWR = tt_timesets[ts][itWR]; - timing.tWRc = ParamInClks(tt_timesets[ts][itWR], tt_timesets[ts][itCK_min]); - timing.tWR_CRC_DMc = 5; - timing.tMRDc = 8; - timing.tMOD = tt_timesets[ts][itMOD]; - timing.tMODc = ParamInClks(tt_timesets[ts][itMOD], tt_timesets[ts][itCK_min]); - timing.tMPRRc = 1; - timing.tWR_MPRc = timing.tMODc; - timing.tRCD = tt_timesets[ts][itRCD]; - timing.tRCDc = ParamInClks(tt_timesets[ts][itRCD], tt_timesets[ts][itCK_min]); - timing.tRP = tt_timesets[ts][itRP]; - timing.tRPc = ParamInClks(tt_timesets[ts][itRP], tt_timesets[ts][itCK_min]); - timing.tRP_ref_internal = tt_timesets[ts][itRP_ref]; - timing.tRPc_ref_internal = ParamInClks(tt_timesets[ts][itRP_ref], tt_timesets[ts][itCK_min]); - timing.tRC = tt_timesets[ts][itRC]; - timing.tRCc = ParamInClks(tt_timesets[ts][itRC], tt_timesets[ts][itCK_min]); - timing.tCCD_S = tt_timesets[ts][itCCDc_S] * tt_timesets[ts][itCK_min]; - timing.tCCDc_S = tt_timesets[ts][itCCDc_S]; - timing.tCCD_L = tt_timesets[ts][itCCDc_L] * tt_timesets[ts][itCK_min]; - timing.tCCDc_L = tt_timesets[ts][itCCDc_L]; - timing.tRAS = tt_timesets[ts][itRAS]; - timing.tRASc = ParamInClks(tt_timesets[ts][itRAS], tt_timesets[ts][itCK_min]); - timing.tPAR_CLOSE_BANKS = timing.tRAS; - timing.tPAR_ALERT_ON = 1400; - timing.tPAR_ALERT_ON_max = 6000; - timing.tPAR_ALERT_ON_CYCLES = 4; - timing.tPAR_ALERT_OFF = 3000; - timing.tPAR_tRP_tRAS_adjustment = 2000; - timing.tPAR_tRP_holdoff_adjustment = 1450; - timing.tPAR_ALERT_PWc = tt_timesets[ts][itPAR_ALERT_PWc]; - timing.tPAR_ALERT_PWc_min = tt_timesets[ts][itPAR_ALERT_PWc_min]; - timing.tPAR_ALERT_PWc_max = tt_timesets[ts][itPAR_ALERT_PWc_max]; - timing.tPAR_ALERT_PW = timing.tPAR_ALERT_PWc * tt_timesets[ts][itCK_min]; - timing.tPAR_ALERT_PW_min = timing.tPAR_ALERT_PWc_min * tt_timesets[ts][itCK_min]; - timing.tPAR_ALERT_PW_max = timing.tPAR_ALERT_PWc_max * tt_timesets[ts][itCK_min]; - timing.tCRC_ALERT = 9000; - timing.tCRC_ALERT_min = 3000; - timing.tCRC_ALERT_max = 13000; - timing.tCRC_ALERT_PWc_min = 6; - timing.tCRC_ALERT_PWc_max = 10; - timing.tCRC_ALERT_PWc = 7; - if (16 == GetWidth()) begin - timing.tFAW = tt_timesets[ts][itFAW_2k]; - timing.tRRDc_S = tt_timesets[ts][itRRDc_S_2k]; - timing.tRRDc_L = tt_timesets[ts][itRRDc_L_2k]; - timing.tRRD_S = tt_timesets[ts][itRRD_S_2k]; - timing.tRRD_L = tt_timesets[ts][itRRD_L_2k]; - end else if (4 == GetWidth()) begin - timing.tFAW = tt_timesets[ts][itFAW_512]; - timing.tRRDc_S = tt_timesets[ts][itRRDc_S_512]; - timing.tRRDc_L = tt_timesets[ts][itRRDc_L_512]; - timing.tRRD_S = tt_timesets[ts][itRRD_S_512]; - timing.tRRD_L = tt_timesets[ts][itRRD_L_512]; - end else begin - timing.tFAW = tt_timesets[ts][itFAW_1k]; - timing.tRRDc_S = tt_timesets[ts][itRRDc_S_1k]; - timing.tRRDc_L = tt_timesets[ts][itRRDc_L_1k]; - timing.tRRD_S = tt_timesets[ts][itRRD_S_1k]; - timing.tRRD_L = tt_timesets[ts][itRRD_L_1k]; - end - timing.tRRDc_dlr = 4; - timing.tFAWc_dlr = 16; - timing.tIS = tt_timesets[ts][itIS]; - timing.tIH = tt_timesets[ts][itIH]; - timing.tDIPW = tt_timesets[ts][itDIPW]; - if (_2G == CONFIGURED_DENSITY) begin - timing.tRFC1 = 160000; - timing.tRFC2 = 110000; - timing.tRFC4 = 90000; - end else if (_4G == CONFIGURED_DENSITY) begin - timing.tRFC1 = 260000; - timing.tRFC2 = 160000; - timing.tRFC4 = 110000; - end else if (_8G == CONFIGURED_DENSITY) begin - timing.tRFC1 = 350000; - timing.tRFC2 = 260000; - timing.tRFC4 = 160000; - end else if (_16G == CONFIGURED_DENSITY) begin - timing.tRFC1 = 350000; - timing.tRFC2 = 260000; - timing.tRFC4 = 160000; - end - timing.tRFC = timing.tRFC1; - timing.tRFCc = ParamInClks(timing.tRFC1, tt_timesets[ts][itCK_min]); - timing.tRFC1c = ParamInClks(timing.tRFC1, tt_timesets[ts][itCK_min]); - timing.tRFC2c = ParamInClks(timing.tRFC2, tt_timesets[ts][itCK_min]); - timing.tRFC4c = ParamInClks(timing.tRFC4, tt_timesets[ts][itCK_min]); - // Reset timing. - timing.tXPR = timing.tRFC + 10000; - // Self refresh timing. - timing.tXS = timing.tRFC + 10000; - timing.tXSc = ParamInClks(timing.tRFC + 10000, tt_timesets[ts][itCK_min]); - timing.tXS_Fast = timing.tRFC4 + 10000; - timing.tXS_Fastc = ParamInClks(timing.tXS_Fast, tt_timesets[ts][itCK_min]); - timing.tXSDLLc = tt_timesets[ts][itDLLKc_min]; - timing.tCKESRc = ParamInClks(tt_timesets[ts][itCKE], tt_timesets[ts][itCK_min]) + 1; - timing.tCKSRE = 10000; - timing.tCKSREc = ParamInClks(timing.tCKSRE, tt_timesets[ts][itCK_min]); - if (timing.tCKSREc < 5) begin - timing.tCKSREc = 5; - timing.tCKSRE = timing.tCKSREc * tt_timesets[ts][itCK_min]; - end - timing.tCKSRX = 10000; - timing.tCKSRXc = ParamInClks(timing.tCKSRX, tt_timesets[ts][itCK_min]); - if (timing.tCKSRXc < 5) begin - timing.tCKSRXc = 5; - timing.tCKSRX = timing.tCKSRXc * tt_timesets[ts][itCK_min]; - end - timing.tXSR = timing.tRFC + 10000; - // Power down timing. - if (timing.tCK_min > 1500) begin - timing.tXPc = 4; - timing.tXP = 4 * timing.tCK_min; - end else begin - timing.tXP = 6000; - timing.tXPc = ParamInClks(6000, tt_timesets[ts][itCK_min]); - end - timing.tXPDLL = tt_timesets[ts][itXPDLL]; - timing.tXPDLLc = ParamInClks(tt_timesets[ts][itXPDLL], tt_timesets[ts][itCK_min]); - timing.tCKE = tt_timesets[ts][itCKE]; - timing.tCKEc = ParamInClks(tt_timesets[ts][itCKE], tt_timesets[ts][itCK_min]); - timing.tCPDEDc = tt_timesets[ts][itCPDEDc]; - timing.tPD = tt_timesets[ts][itCKE]; - timing.tPDc = ParamInClks(tt_timesets[ts][itCKE], tt_timesets[ts][itCK_min]); - // tRDPDEN/tWRPDEN are calculated dynamically. - timing.tACTPDENc = tt_timesets[ts][itACTPDENc]; - timing.tPREPDENc = tt_timesets[ts][itPREPDENc]; - timing.tREFPDENc = tt_timesets[ts][itREFPDENc]; - timing.tMRSPDENc = timing.tMODc; - timing.tMRSPDEN = tt_timesets[ts][itMOD]; - // Initialization timing. - timing.tPWRUP = 100000; - timing.tRESET = 100000; // Stable power @100ns ramp @200us. - timing.tRESETCKE = 100000; // Spec is 500us. - timing.tODTHc = 4; - timing.tZQinitc = tt_timesets[ts][itZQinitc]; - timing.tZQoperc = tt_timesets[ts][itZQoperc]; - timing.tZQCSc = tt_timesets[ts][itZQCSc]; - timing.tZQRTT = 44_000; - timing.tZQRTTc = ParamInClks(timing.tZQRTT, tt_timesets[ts][itCK_min]); - // Write leveling. - timing.tWLMRDc = 40; - timing.tWLDQSENc = 25; - timing.tWLS = tt_timesets[ts][itWLS]; - timing.tWLSc = ParamInClks(tt_timesets[ts][itWLS], tt_timesets[ts][itCK_min]); - timing.tWLH = tt_timesets[ts][itWLH]; - timing.tWLHc = ParamInClks(tt_timesets[ts][itWLH], tt_timesets[ts][itCK_min]); - timing.tWLO_min = 0; - timing.tWLOc_min = 0; - timing.tWLO_max = 7500; - timing.tWLOc_max = ParamInClks(timing.tWLO_max, tt_timesets[ts][itCK_min]); - timing.tWLOE_min = 0; - timing.tWLOEc_min = 0; - timing.tWLOEc_max = ParamInClks(timing.tWLOE_max, tt_timesets[ts][itCK_min]); - timing.tWLO_nominal = (timing.tWLO_min + timing.tWLO_max)/2; - timing.tWLOE_nominal = (timing.tWLOE_min + timing.tWLOE_max)/2; - // ODT Timing. - timing.tAON = 0; - timing.tAON_min = tt_timesets[ts][itAON_min]; - timing.tAON_max = tt_timesets[ts][itAON_max]; - timing.tAOF = 0; - timing.tAOFp = 50; - timing.tAOFp_min = 30; - timing.tAOFp_max = 70; - timing.tADCp = 50; - timing.tADCp_min = 30; - timing.tADCp_max = 70; - timing.tAONPD = 5000; - timing.tAONPDc = 5000/tt_timesets[ts][itCK_min]; // Do not round ntCK up. - timing.tAONPD_min = 1000; - timing.tAONPD_max = 10000; - timing.tAOFPD = 5000; - timing.tAOFPDc = 5000/tt_timesets[ts][itCK_min]; // Do not round ntCK up. - timing.tAOFPD_min = 1000; - timing.tAOFPD_max = 10000; - timing.tAOFASp = 50; // Async time for ODT forced off (read). - timing.tAONASp_max = 20; // Async ODT turn on/off. - // Read preamble training. - timing.tSDO_max = timing.tMOD + 9000; - timing.tSDOc_max = ParamInClks(timing.tSDO_max, tt_timesets[ts][itCK_min]); - timing.tSDO = 7000; - timing.tSDOc = ParamInClks(timing.tSDO, tt_timesets[ts][itCK_min]); - // Gear down setup. - timing.tSYNC_GEARc = (0 == (timing.tMODc % 2)) ? timing.tMODc + 4 : timing.tMODc + 5; - timing.tCMD_GEARc = (0 == (timing.tMODc % 2)) ? timing.tMODc : timing.tMODc + 1; - timing.tGD_TRANSITIONc = MAX_WL; - // Maximum power saving setup. - timing.tMPED = timing.tMOD + timing.tCPDEDc*tt_timesets[ts][itCK_min]; - timing.tCKMPE = timing.tMOD + timing.tCPDEDc*tt_timesets[ts][itCK_min]; - timing.tCKMPX = timing.tCKSRX; - timing.tMPX_H = 2*tt_timesets[ts][itCK_min]; - timing.tMPEDc = ParamInClks(timing.tMPED, tt_timesets[ts][itCK_min]); - timing.tCKMPEc = ParamInClks(timing.tCKMPE, tt_timesets[ts][itCK_min]); - timing.tCKMPXc = ParamInClks(timing.tCKMPX, tt_timesets[ts][itCK_min]); - timing.tXMPc = timing.tXSc; - timing.tXMPDLLc = timing.tXMPc + timing.tXSDLLc; - // CAL setup. - timing.tCAL_min = 3750; - timing.tCALc_min = ParamInClks(timing.tCAL_min, tt_timesets[ts][itCK_min]); - // Boundary scan. - timing.tBSCAN_Enable = 100000; - timing.tBSCAN_Valid = 20000; - // Per project settings. - timing.tWLO_project = 6300; -endtask - -task LoadTiming(); - $display("Loading timesets for '%m' @%0t", $time); - // All timesets initialize to UNLOADED. - for (int i=0;i max_tCK) - max_tCK = tt_timesets[ts][itCK_max]; - $display("\tLoaded timeset:%0s", ts.name()); - end else begin - $display("\tTimeset:%0s was not loaded.", ts.name()); - end - end -endtask - -task SetTSArray(UTYPE_time_spec spec, int ts_1875, int ts_1500, int ts_1250, int ts_1072, - int ts_938, int ts_833, int ts_750, int ts_682, int ts_625); - tt_timesets[TS_1875][spec] = ts_1875; - tt_timesets[TS_1500][spec] = ts_1500; - tt_timesets[TS_1250][spec] = ts_1250; - tt_timesets[TS_1072][spec] = ts_1072; - tt_timesets[TS_938][spec] = ts_938; - tt_timesets[TS_833][spec] = ts_833; - tt_timesets[TS_750][spec] = ts_750; - tt_timesets[TS_682][spec] = ts_682; - tt_timesets[TS_625][spec] = ts_625; -endtask - -function bit FindTimesetCeiling(int tck, output UTYPE_TS new_ts); - bit found; - - found = 0; - for (UTYPE_TS ts=ts.first();ts= tt_timesets[ts][itCK_min]))) begin - new_ts = ts; - found = 1; - end - end - return found; -endfunction - -function int ParamInClks(int param_in_ps, int tCK_in_ps); - `ifdef ALLOW_JITTER - int param_in_ck_20fs; - param_in_ck_20fs = (50*param_in_ps) / tCK_in_ps; - if (0 == (param_in_ck_20fs % 50)) - `else - if (0 == (param_in_ps % tCK_in_ps)) - `endif - return (param_in_ps / tCK_in_ps); - else - return ((param_in_ps / tCK_in_ps) + 1); -endfunction - -function int GetTimesetValue(UTYPE_time_spec spec, UTYPE_TS ts=timing.ts_loaded); - return tt_timesets[ts][spec]; -endfunction diff --git a/devices/Micron/ruckus.tcl b/devices/Micron/ruckus.tcl index b7462e98b9..ec819a2d8f 100644 --- a/devices/Micron/ruckus.tcl +++ b/devices/Micron/ruckus.tcl @@ -4,8 +4,6 @@ source $::env(RUCKUS_PROC_TCL) # Check for non-zero Vivado version (in-case non-Vivado project) if { $::env(VIVADO_VERSION) > 0.0} { # Load ruckus files - loadRuckusTcl "$::DIR_PATH/ddr3" - loadRuckusTcl "$::DIR_PATH/ddr4" loadRuckusTcl "$::DIR_PATH/mt28ew" loadRuckusTcl "$::DIR_PATH/n25q" loadRuckusTcl "$::DIR_PATH/p30" diff --git a/protocols/saci/saci1/sim/SaciSlaveAnalog.v b/protocols/saci/saci1/sim/SaciSlaveAnalog.v deleted file mode 100644 index 16b7eb5040..0000000000 --- a/protocols/saci/saci1/sim/SaciSlaveAnalog.v +++ /dev/null @@ -1,124 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// Title : SACI Protocol: https://confluence.slac.stanford.edu/x/YYcRDQ -////////////////////////////////////////////////////////////////////////////// -// File : SaciSlaveAnalog.vhd -// Company : SLAC National Accelerator Laboratory -////////////////////////////////////////////////////////////////////////////// -// Description: SACI Slave Analog Module -////////////////////////////////////////////////////////////////////////////// -// This file is part of 'SLAC Firmware Standard Library'. -// It is subject to the license terms in the LICENSE.txt file found in the -// top-level directory of this distribution and at: -// https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. -// No part of 'SLAC Firmware Standard Library', including this file, -// may be copied, modified, propagated, or distributed except according to -// the terms contained in the LICENSE.txt file. -////////////////////////////////////////////////////////////////////////////// - -// Edge Module Definition -module SaciSlaveAnalog - (input wire CLK, - input wire RST, - input wire ack, - - output wire addr_0, - output wire addr_1, - output wire addr_2, - output wire addr_3, - output wire addr_4, - output wire addr_5, - output wire addr_6, - output wire addr_7, - output wire addr_8, - output wire addr_9, - output wire addr_10, - output wire addr_11, - - output wire cmd_0, - output wire cmd_1, - output wire cmd_2, - output wire cmd_3, - output wire cmd_4, - output wire cmd_5, - output wire cmd_6, - - output wire exec, - - input wire rdData_0, - input wire rdData_1, - input wire rdData_2, - input wire rdData_3, - input wire rdData_4, - input wire rdData_5, - input wire rdData_6, - input wire rdData_7, - input wire rdData_8, - input wire rdData_9, - input wire rdData_10, - input wire rdData_11, - input wire rdData_12, - input wire rdData_13, - input wire rdData_14, - input wire rdData_15, - input wire rdData_16, - input wire rdData_17, - input wire rdData_18, - input wire rdData_19, - input wire rdData_20, - input wire rdData_21, - input wire rdData_22, - input wire rdData_23, - input wire rdData_24, - input wire rdData_25, - input wire rdData_26, - input wire rdData_27, - input wire rdData_28, - input wire rdData_29, - input wire rdData_30, - input wire rdData_31, - - output wire readL, - input wire rstL, - output wire rstOutL, - input wire saciCmd, - output wire saciRsp, - input wire saciSelL, - - output wire wrData_0, - output wire wrData_1, - output wire wrData_2, - output wire wrData_3, - output wire wrData_4, - output wire wrData_5, - output wire wrData_6, - output wire wrData_7, - output wire wrData_8, - output wire wrData_9, - output wire wrData_10, - output wire wrData_11, - output wire wrData_12, - output wire wrData_13, - output wire wrData_14, - output wire wrData_15, - output wire wrData_16, - output wire wrData_17, - output wire wrData_18, - output wire wrData_19, - output wire wrData_20, - output wire wrData_21, - output wire wrData_22, - output wire wrData_23, - output wire wrData_24, - output wire wrData_25, - output wire wrData_26, - output wire wrData_27, - output wire wrData_28, - output wire wrData_29, - output wire wrData_30, - output wire wrData_31 - - ); - - - -endmodule diff --git a/xilinx/xvc-udp/dcp/7Series/Impl/images/UdpDebugBridge_stub.v b/xilinx/xvc-udp/dcp/7Series/Impl/images/UdpDebugBridge_stub.v deleted file mode 100644 index 6e97115c59..0000000000 --- a/xilinx/xvc-udp/dcp/7Series/Impl/images/UdpDebugBridge_stub.v +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. -// -------------------------------------------------------------------------------- -// Tool Version: Vivado v.2018.3 (lin64) Build 2405991 Thu Dec 6 23:36:41 MST 2018 -// Date : Tue Apr 15 08:22:49 2025 -// Host : rdsrv403 running 64-bit Ubuntu 22.04.5 LTS -// Command : write_verilog -force -mode synth_stub -// /sdf/home/r/ruckman/project/SimpleExamples/Simple-10GbE-RUDP-KCU105-Example/firmware/submodules/surf/xilinx/xvc-udp/dcp/7Series/Impl/images/UdpDebugBridge_stub.v -// Design : UdpDebugBridge -// Purpose : Stub declaration of top-level module interface -// Device : xc7z045ffg900-2 -// -------------------------------------------------------------------------------- - -// This empty module with port declaration file causes synthesis tools to infer a black box for IP. -// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. -// Please paste the declaration into a Verilog source file or add the file as an additional source. -module UdpDebugBridge(axisClk, axisRst, \mAxisReq[tValid] , - \mAxisReq[tData] , \mAxisReq[tStrb] , \mAxisReq[tKeep] , \mAxisReq[tLast] , - \mAxisReq[tDest] , \mAxisReq[tId] , \mAxisReq[tUser] , \sAxisReq[tReady] , - \mAxisTdo[tValid] , \mAxisTdo[tData] , \mAxisTdo[tStrb] , \mAxisTdo[tKeep] , - \mAxisTdo[tLast] , \mAxisTdo[tDest] , \mAxisTdo[tId] , \mAxisTdo[tUser] , - \sAxisTdo[tReady] ) -/* synthesis syn_black_box black_box_pad_pin="axisClk,axisRst,\mAxisReq[tValid] ,\mAxisReq[tData] [1023:0],\mAxisReq[tStrb] [127:0],\mAxisReq[tKeep] [127:0],\mAxisReq[tLast] ,\mAxisReq[tDest] [7:0],\mAxisReq[tId] [7:0],\mAxisReq[tUser] [1023:0],\sAxisReq[tReady] ,\mAxisTdo[tValid] ,\mAxisTdo[tData] [1023:0],\mAxisTdo[tStrb] [127:0],\mAxisTdo[tKeep] [127:0],\mAxisTdo[tLast] ,\mAxisTdo[tDest] [7:0],\mAxisTdo[tId] [7:0],\mAxisTdo[tUser] [1023:0],\sAxisTdo[tReady] " */; - input axisClk; - input axisRst; - input \mAxisReq[tValid] ; - input [1023:0]\mAxisReq[tData] ; - input [127:0]\mAxisReq[tStrb] ; - input [127:0]\mAxisReq[tKeep] ; - input \mAxisReq[tLast] ; - input [7:0]\mAxisReq[tDest] ; - input [7:0]\mAxisReq[tId] ; - input [1023:0]\mAxisReq[tUser] ; - output \sAxisReq[tReady] ; - output \mAxisTdo[tValid] ; - output [1023:0]\mAxisTdo[tData] ; - output [127:0]\mAxisTdo[tStrb] ; - output [127:0]\mAxisTdo[tKeep] ; - output \mAxisTdo[tLast] ; - output [7:0]\mAxisTdo[tDest] ; - output [7:0]\mAxisTdo[tId] ; - output [1023:0]\mAxisTdo[tUser] ; - input \sAxisTdo[tReady] ; -endmodule diff --git a/xilinx/xvc-udp/dcp/7Series/Stub/images/UdpDebugBridge_stub.v b/xilinx/xvc-udp/dcp/7Series/Stub/images/UdpDebugBridge_stub.v deleted file mode 100644 index d85937aaf8..0000000000 --- a/xilinx/xvc-udp/dcp/7Series/Stub/images/UdpDebugBridge_stub.v +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. -// -------------------------------------------------------------------------------- -// Tool Version: Vivado v.2018.3 (lin64) Build 2405991 Thu Dec 6 23:36:41 MST 2018 -// Date : Tue Apr 15 08:30:37 2025 -// Host : rdsrv403 running 64-bit Ubuntu 22.04.5 LTS -// Command : write_verilog -force -mode synth_stub -// /sdf/home/r/ruckman/project/SimpleExamples/Simple-10GbE-RUDP-KCU105-Example/firmware/submodules/surf/xilinx/xvc-udp/dcp/7Series/Stub/images/UdpDebugBridge_stub.v -// Design : UdpDebugBridge -// Purpose : Stub declaration of top-level module interface -// Device : xc7z045ffg900-2 -// -------------------------------------------------------------------------------- - -// This empty module with port declaration file causes synthesis tools to infer a black box for IP. -// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. -// Please paste the declaration into a Verilog source file or add the file as an additional source. -module UdpDebugBridge(axisClk, axisRst, \mAxisReq[tValid] , - \mAxisReq[tData] , \mAxisReq[tStrb] , \mAxisReq[tKeep] , \mAxisReq[tLast] , - \mAxisReq[tDest] , \mAxisReq[tId] , \mAxisReq[tUser] , \sAxisReq[tReady] , - \mAxisTdo[tValid] , \mAxisTdo[tData] , \mAxisTdo[tStrb] , \mAxisTdo[tKeep] , - \mAxisTdo[tLast] , \mAxisTdo[tDest] , \mAxisTdo[tId] , \mAxisTdo[tUser] , - \sAxisTdo[tReady] ) -/* synthesis syn_black_box black_box_pad_pin="axisClk,axisRst,\mAxisReq[tValid] ,\mAxisReq[tData] [1023:0],\mAxisReq[tStrb] [127:0],\mAxisReq[tKeep] [127:0],\mAxisReq[tLast] ,\mAxisReq[tDest] [7:0],\mAxisReq[tId] [7:0],\mAxisReq[tUser] [1023:0],\sAxisReq[tReady] ,\mAxisTdo[tValid] ,\mAxisTdo[tData] [1023:0],\mAxisTdo[tStrb] [127:0],\mAxisTdo[tKeep] [127:0],\mAxisTdo[tLast] ,\mAxisTdo[tDest] [7:0],\mAxisTdo[tId] [7:0],\mAxisTdo[tUser] [1023:0],\sAxisTdo[tReady] " */; - input axisClk; - input axisRst; - input \mAxisReq[tValid] ; - input [1023:0]\mAxisReq[tData] ; - input [127:0]\mAxisReq[tStrb] ; - input [127:0]\mAxisReq[tKeep] ; - input \mAxisReq[tLast] ; - input [7:0]\mAxisReq[tDest] ; - input [7:0]\mAxisReq[tId] ; - input [1023:0]\mAxisReq[tUser] ; - output \sAxisReq[tReady] ; - output \mAxisTdo[tValid] ; - output [1023:0]\mAxisTdo[tData] ; - output [127:0]\mAxisTdo[tStrb] ; - output [127:0]\mAxisTdo[tKeep] ; - output \mAxisTdo[tLast] ; - output [7:0]\mAxisTdo[tDest] ; - output [7:0]\mAxisTdo[tId] ; - output [1023:0]\mAxisTdo[tUser] ; - input \sAxisTdo[tReady] ; -endmodule diff --git a/xilinx/xvc-udp/dcp/UltraScale/Impl/images/UdpDebugBridge_stub.v b/xilinx/xvc-udp/dcp/UltraScale/Impl/images/UdpDebugBridge_stub.v deleted file mode 100644 index 3471a4d47d..0000000000 --- a/xilinx/xvc-udp/dcp/UltraScale/Impl/images/UdpDebugBridge_stub.v +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. -// -------------------------------------------------------------------------------- -// Tool Version: Vivado v.2018.3 (lin64) Build 2405991 Thu Dec 6 23:36:41 MST 2018 -// Date : Tue Apr 15 08:37:58 2025 -// Host : rdsrv403 running 64-bit Ubuntu 22.04.5 LTS -// Command : write_verilog -force -mode synth_stub -// /sdf/home/r/ruckman/project/SimpleExamples/Simple-10GbE-RUDP-KCU105-Example/firmware/submodules/surf/xilinx/xvc-udp/dcp/UltraScale/Impl/images/UdpDebugBridge_stub.v -// Design : UdpDebugBridge -// Purpose : Stub declaration of top-level module interface -// Device : xcku040-ffva1156-2-e -// -------------------------------------------------------------------------------- - -// This empty module with port declaration file causes synthesis tools to infer a black box for IP. -// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. -// Please paste the declaration into a Verilog source file or add the file as an additional source. -module UdpDebugBridge(axisClk, axisRst, \mAxisReq[tValid] , - \mAxisReq[tData] , \mAxisReq[tStrb] , \mAxisReq[tKeep] , \mAxisReq[tLast] , - \mAxisReq[tDest] , \mAxisReq[tId] , \mAxisReq[tUser] , \sAxisReq[tReady] , - \mAxisTdo[tValid] , \mAxisTdo[tData] , \mAxisTdo[tStrb] , \mAxisTdo[tKeep] , - \mAxisTdo[tLast] , \mAxisTdo[tDest] , \mAxisTdo[tId] , \mAxisTdo[tUser] , - \sAxisTdo[tReady] ) -/* synthesis syn_black_box black_box_pad_pin="axisClk,axisRst,\mAxisReq[tValid] ,\mAxisReq[tData] [1023:0],\mAxisReq[tStrb] [127:0],\mAxisReq[tKeep] [127:0],\mAxisReq[tLast] ,\mAxisReq[tDest] [7:0],\mAxisReq[tId] [7:0],\mAxisReq[tUser] [1023:0],\sAxisReq[tReady] ,\mAxisTdo[tValid] ,\mAxisTdo[tData] [1023:0],\mAxisTdo[tStrb] [127:0],\mAxisTdo[tKeep] [127:0],\mAxisTdo[tLast] ,\mAxisTdo[tDest] [7:0],\mAxisTdo[tId] [7:0],\mAxisTdo[tUser] [1023:0],\sAxisTdo[tReady] " */; - input axisClk; - input axisRst; - input \mAxisReq[tValid] ; - input [1023:0]\mAxisReq[tData] ; - input [127:0]\mAxisReq[tStrb] ; - input [127:0]\mAxisReq[tKeep] ; - input \mAxisReq[tLast] ; - input [7:0]\mAxisReq[tDest] ; - input [7:0]\mAxisReq[tId] ; - input [1023:0]\mAxisReq[tUser] ; - output \sAxisReq[tReady] ; - output \mAxisTdo[tValid] ; - output [1023:0]\mAxisTdo[tData] ; - output [127:0]\mAxisTdo[tStrb] ; - output [127:0]\mAxisTdo[tKeep] ; - output \mAxisTdo[tLast] ; - output [7:0]\mAxisTdo[tDest] ; - output [7:0]\mAxisTdo[tId] ; - output [1023:0]\mAxisTdo[tUser] ; - input \sAxisTdo[tReady] ; -endmodule diff --git a/xilinx/xvc-udp/dcp/UltraScale/Stub/images/UdpDebugBridge_stub.v b/xilinx/xvc-udp/dcp/UltraScale/Stub/images/UdpDebugBridge_stub.v deleted file mode 100644 index ef200353d7..0000000000 --- a/xilinx/xvc-udp/dcp/UltraScale/Stub/images/UdpDebugBridge_stub.v +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. -// -------------------------------------------------------------------------------- -// Tool Version: Vivado v.2018.3 (lin64) Build 2405991 Thu Dec 6 23:36:41 MST 2018 -// Date : Tue Apr 15 08:32:48 2025 -// Host : rdsrv403 running 64-bit Ubuntu 22.04.5 LTS -// Command : write_verilog -force -mode synth_stub -// /sdf/home/r/ruckman/project/SimpleExamples/Simple-10GbE-RUDP-KCU105-Example/firmware/submodules/surf/xilinx/xvc-udp/dcp/UltraScale/Stub/images/UdpDebugBridge_stub.v -// Design : UdpDebugBridge -// Purpose : Stub declaration of top-level module interface -// Device : xcku040-ffva1156-2-e -// -------------------------------------------------------------------------------- - -// This empty module with port declaration file causes synthesis tools to infer a black box for IP. -// The synthesis directives are for Synopsys Synplify support to prevent IO buffer insertion. -// Please paste the declaration into a Verilog source file or add the file as an additional source. -module UdpDebugBridge(axisClk, axisRst, \mAxisReq[tValid] , - \mAxisReq[tData] , \mAxisReq[tStrb] , \mAxisReq[tKeep] , \mAxisReq[tLast] , - \mAxisReq[tDest] , \mAxisReq[tId] , \mAxisReq[tUser] , \sAxisReq[tReady] , - \mAxisTdo[tValid] , \mAxisTdo[tData] , \mAxisTdo[tStrb] , \mAxisTdo[tKeep] , - \mAxisTdo[tLast] , \mAxisTdo[tDest] , \mAxisTdo[tId] , \mAxisTdo[tUser] , - \sAxisTdo[tReady] ) -/* synthesis syn_black_box black_box_pad_pin="axisClk,axisRst,\mAxisReq[tValid] ,\mAxisReq[tData] [1023:0],\mAxisReq[tStrb] [127:0],\mAxisReq[tKeep] [127:0],\mAxisReq[tLast] ,\mAxisReq[tDest] [7:0],\mAxisReq[tId] [7:0],\mAxisReq[tUser] [1023:0],\sAxisReq[tReady] ,\mAxisTdo[tValid] ,\mAxisTdo[tData] [1023:0],\mAxisTdo[tStrb] [127:0],\mAxisTdo[tKeep] [127:0],\mAxisTdo[tLast] ,\mAxisTdo[tDest] [7:0],\mAxisTdo[tId] [7:0],\mAxisTdo[tUser] [1023:0],\sAxisTdo[tReady] " */; - input axisClk; - input axisRst; - input \mAxisReq[tValid] ; - input [1023:0]\mAxisReq[tData] ; - input [127:0]\mAxisReq[tStrb] ; - input [127:0]\mAxisReq[tKeep] ; - input \mAxisReq[tLast] ; - input [7:0]\mAxisReq[tDest] ; - input [7:0]\mAxisReq[tId] ; - input [1023:0]\mAxisReq[tUser] ; - output \sAxisReq[tReady] ; - output \mAxisTdo[tValid] ; - output [1023:0]\mAxisTdo[tData] ; - output [127:0]\mAxisTdo[tStrb] ; - output [127:0]\mAxisTdo[tKeep] ; - output \mAxisTdo[tLast] ; - output [7:0]\mAxisTdo[tDest] ; - output [7:0]\mAxisTdo[tId] ; - output [1023:0]\mAxisTdo[tUser] ; - input \sAxisTdo[tReady] ; -endmodule