diff --git a/GPSNFIFO.FMT b/GPSNFIFO.FMT new file mode 100644 index 0000000000000000000000000000000000000000..e7c0fd40884d371e9f42902c8dac9f36f45ea44f --- /dev/null +++ b/GPSNFIFO.FMT @@ -0,0 +1,1123 @@ + ;************************************************************** + ;Copyright (c) 2011 + ;Title: GPS_Oncore_ctrl + ;Current version: v1r1 + ;Function: Control for Oncore GPS receiver to function together + ; with new electronics from Lago Project. + ; It comunicates whit GPS receiver at 9600 bps and + ; writes external registers. + ; + ;Core: KCPSM3 (Spartan3E version) + ;Clock: 50MHz Crystal (Nexys2 clock) + ;Author: Horacio Arnaldi + ;Company: CAB - IB (CNEA) + ;Contact: (+54)-2944-445500 + ;e-mail: lharnaldi@cab.cnea.gov.ar + ;Date: 2011-09-18 + ; + ;************************************************************** + ;************************************************************** + ; Port definitions + ;************************************************************** + ; + ; + ; + CONSTANT status_port, 40 ;UART and USB status input + CONSTANT tx_half_full, 01 ; Transmitter half full - bit0 + CONSTANT tx_full, 02 ; FIFO full - bit1 + CONSTANT rx_data_present, 04 ; Receiver data present - bit2 + CONSTANT rx_half_full, 08 ; FIFO half full - bit3 + CONSTANT rx_full, 10 ; full - bit4 + CONSTANT tx_usb_empty, 20 ; USB FIFO status port bit5 + CONSTANT tx_usb_full, 40 ; bit6 + CONSTANT spare, 80 ; - bit7 + ; + ;Ports to write data acquired from GPS receiver + CONSTANT month_port, 00 + CONSTANT day_port, 01 + CONSTANT year1_port, 02 + CONSTANT year2_port, 03 + CONSTANT hours_port, 04 + CONSTANT minutes_port, 05 + CONSTANT seconds_port, 06 + CONSTANT fract_sec1_port, 07 + CONSTANT fract_sec2_port, 08 + CONSTANT fract_sec3_port, 09 + CONSTANT fract_sec4_port, 0A + CONSTANT latitude1_port, 0B + CONSTANT latitude2_port, 0C + CONSTANT latitude3_port, 0D + CONSTANT latitude4_port, 0E + CONSTANT longitude1_port, 0F + CONSTANT longitude2_port, 10 + CONSTANT longitude3_port, 11 + CONSTANT longitude4_port, 12 + CONSTANT ellipsoid1_port, 13 + CONSTANT ellipsoid2_port, 14 + CONSTANT ellipsoid3_port, 15 + CONSTANT ellipsoid4_port, 16 + CONSTANT velocity1_port, 17 + CONSTANT velocity2_port, 18 + CONSTANT heading1_port, 19 + CONSTANT heading2_port, 1A + CONSTANT geometry2_port, 1B + CONSTANT DOP_type_port, 1C + CONSTANT num_vis_sat_port, 1D + CONSTANT num_track_sat_port, 1E + CONSTANT sat_ID1_port, 1F ; Sat ID + CONSTANT chtm1_port, 20 ; Channel tracking mode + CONSTANT CNo1_port, 21 ; Carrier to noise density ratio + CONSTANT chsf1_port, 22 ; Channel status flag + CONSTANT sat_ID2_port, 23 ; Sat ID + CONSTANT chtm2_port, 24 ; Channel tracking mode + CONSTANT CNo2_port, 25 ; Carrier to noise density ratio + CONSTANT chsf2_port, 26 ; Channel status flag + CONSTANT sat_ID3_port, 27 ; Sat ID + CONSTANT chtm3_port, 28 ; Channel tracking mode + CONSTANT CNo3_port, 29 ; Carrier to noise density ratio + CONSTANT chsf3_port, 2A ; Channel status flag + CONSTANT sat_ID4_port, 2B ; Sat ID + CONSTANT chtm4_port, 2C ; Channel tracking mode + CONSTANT CNo4_port, 2D ; Carrier to noise density ratio + CONSTANT chsf4_port, 2E ; Channel status flag + CONSTANT sat_ID5_port, 2F ; Sat ID + CONSTANT chtm5_port, 30 ; Channel tracking mode + CONSTANT CNo5_port, 31 ; Carrier to noise density ratio + CONSTANT chsf5_port, 32 ; Channel status flag + CONSTANT sat_ID6_port, 33 ; Sat ID + CONSTANT chtm6_port, 34 ; Channel tracking mode + CONSTANT CNo6_port, 35 ; Carrier to noise density ratio + CONSTANT chsf6_port, 36 ; Channel status flag + CONSTANT sat_ID7_port, 37 ; Sat ID + CONSTANT chtm7_port, 38 ; Channel tracking mode + CONSTANT CNo7_port, 39 ; Carrier to noise density ratio + CONSTANT chsf7_port, 3A ; Channel status flag + CONSTANT sat_ID8_port, 3B ; Sat ID + CONSTANT chtm8_port, 3C ; Channel tracking mode + CONSTANT CNo8_port, 3D ; Carrier to noise density ratio + CONSTANT chsf8_port, 3E ; Channel status flag + CONSTANT rsf_port, 3F ; Reciver status flag + ; + CONSTANT UART_read_port, 80 ;UART Rx data input + ; + CONSTANT UART_write_port, C0 ;UART Tx data output + ; + ;CONSTANT USB_write_port, 40 + ; + ; + ;*************************************************************** + ;data constants + ;*************************************************************** + ; + CONSTANT delay_1us_constant, 0B + ; + CONSTANT CMD_MASK, E0 + CONSTANT STATUS_MASK, 1F + CONSTANT CLR_XCLR_MASK, FB + ; + ; + ;************************************************************************************** + ; Special Register usage + ;************************************************************************************** + ; + NAMEREG sF, UART_data ;used to pass data to and from the UART + NAMEREG s5, USB_data ;used to pass data to the USB + NAMEREG s6, USB_port ;used to pass data to the USB + ; + ; + ; + ;************************************************************************************** + ;Scratch Pad Memory Locations + ;************************************************************************************** + ; + ;Values read from receiver + ; + CONSTANT month, 00 + CONSTANT day, 01 + CONSTANT year1, 02 + CONSTANT year2, 03 + CONSTANT hours, 04 + CONSTANT minutes, 05 + CONSTANT seconds, 06 + CONSTANT fract_sec1, 07 + CONSTANT fract_sec2, 08 + CONSTANT fract_sec3, 09 + CONSTANT fract_sec4, 0A + CONSTANT latitude1, 0B + CONSTANT latitude2, 0C + CONSTANT latitude3, 0D + CONSTANT latitude4, 0E + CONSTANT longitude1, 0F + CONSTANT longitude2, 10 + CONSTANT longitude3, 11 + CONSTANT longitude4, 12 + CONSTANT ellipsoid1, 13 + CONSTANT ellipsoid2, 14 + CONSTANT ellipsoid3, 15 + CONSTANT ellipsoid4, 16 + CONSTANT velocity1, 17 + CONSTANT velocity2, 18 + CONSTANT heading1, 19 + CONSTANT heading2, 1A + CONSTANT geometry2, 1B + CONSTANT DOP_type, 1C + CONSTANT num_vis_sat, 1D + CONSTANT num_track_sat, 1E + CONSTANT sat_ID1, 1F ; Sat ID + CONSTANT chtm1, 20 ; Channel tracking mode + CONSTANT CNo1, 21 ; Carrier to noise density ratio + CONSTANT chsf1, 22 ; Channel status flag + CONSTANT sat_ID2, 23 ; Sat ID + CONSTANT chtm2, 24 ; Channel tracking mode + CONSTANT CNo2, 25 ; Carrier to noise density ratio + CONSTANT chsf2, 26 ; Channel status flag + CONSTANT sat_ID3, 27 ; Sat ID + CONSTANT chtm3, 28 ; Channel tracking mode + CONSTANT CNo3, 29 ; Carrier to noise density ratio + CONSTANT chsf3, 2A ; Channel status flag + CONSTANT sat_ID4, 2B ; Sat ID + CONSTANT chtm4, 2C ; Channel tracking mode + CONSTANT CNo4, 2D ; Carrier to noise density ratio + CONSTANT chsf4, 2E ; Channel status flag + CONSTANT sat_ID5, 2F ; Sat ID + CONSTANT chtm5, 30 ; Channel tracking mode + CONSTANT CNo5, 31 ; Carrier to noise density ratio + CONSTANT chsf5, 32 ; Channel status flag + CONSTANT sat_ID6, 33 ; Sat ID + CONSTANT chtm6, 34 ; Channel tracking mode + CONSTANT CNo6, 35 ; Carrier to noise density ratio + CONSTANT chsf6, 36 ; Channel status flag + CONSTANT sat_ID7, 37 ; Sat ID + CONSTANT chtm7, 38 ; Channel tracking mode + CONSTANT CNo7, 39 ; Carrier to noise density ratio + CONSTANT chsf7, 3A ; Channel status flag + CONSTANT sat_ID8, 3B ; Sat ID + CONSTANT chtm8, 3C ; Channel tracking mode + CONSTANT CNo8, 3D ; Carrier to noise density ratio + CONSTANT chsf8, 3E ; Channel status flag + CONSTANT rsf, 3F ; Reciver status flag + ; + ; + ;************************************************************************************** + ;Useful data constants + ;************************************************************************************** + ; + ; + ;ASCII table + ; + CONSTANT character_a, 61 + CONSTANT character_b, 62 + CONSTANT character_c, 63 + CONSTANT character_d, 64 + CONSTANT character_e, 65 + CONSTANT character_f, 66 + CONSTANT character_g, 67 + CONSTANT character_h, 68 + CONSTANT character_i, 69 + CONSTANT character_j, 6A + CONSTANT character_k, 6B + CONSTANT character_l, 6C + CONSTANT character_m, 6D + CONSTANT character_n, 6E + CONSTANT character_o, 6F + CONSTANT character_p, 70 + CONSTANT character_q, 71 + CONSTANT character_r, 72 + CONSTANT character_s, 73 + CONSTANT character_t, 74 + CONSTANT character_u, 75 + CONSTANT character_v, 76 + CONSTANT character_w, 77 + CONSTANT character_x, 78 + CONSTANT character_y, 79 + CONSTANT character_z, 7A + CONSTANT character_A, 41 + CONSTANT character_B, 42 + CONSTANT character_C, 43 + CONSTANT character_D, 44 + CONSTANT character_E, 45 + CONSTANT character_F, 46 + CONSTANT character_G, 47 + CONSTANT character_H, 48 + CONSTANT character_I, 49 + CONSTANT character_J, 4A + CONSTANT character_K, 4B + CONSTANT character_L, 4C + CONSTANT character_M, 4D + CONSTANT character_N, 4E + CONSTANT character_O, 4F + CONSTANT character_P, 50 + CONSTANT character_Q, 51 + CONSTANT character_R, 52 + CONSTANT character_S, 53 + CONSTANT character_T, 54 + CONSTANT character_U, 55 + CONSTANT character_V, 56 + CONSTANT character_W, 57 + CONSTANT character_X, 58 + CONSTANT character_Y, 59 + CONSTANT character_Z, 5A + CONSTANT character_0, 30 + CONSTANT character_1, 31 + CONSTANT character_2, 32 + CONSTANT character_3, 33 + CONSTANT character_4, 34 + CONSTANT character_5, 35 + CONSTANT character_6, 36 + CONSTANT character_7, 37 + CONSTANT character_8, 38 + CONSTANT character_9, 39 + CONSTANT character_arroba, 40 ;'@' + CONSTANT character_CR, 0D ;carriage return + CONSTANT character_LF, 0A ;line feed + CONSTANT character_colon, 3A + CONSTANT character_stop, 2E + CONSTANT character_semi_colon, 3B + CONSTANT character_minus, 2D + CONSTANT character_divide, 2F ;'/' + CONSTANT character_plus, 2B + CONSTANT character_comma, 2C + CONSTANT character_less_than, 3C + CONSTANT character_greater_than, 3E + CONSTANT character_equals, 3D + CONSTANT character_space, 20 + CONSTANT character_question, 3F ;'?' + CONSTANT character_dollar, 24 + CONSTANT character_exclaim, 21 ;'!' + CONSTANT character_BS, 08 ;Back Space command character + CONSTANT character_underscore, 5F ;_ + ; + ; + ; + ;*************************************************************** + ;Initialise the system + ;*************************************************************** + ; Send command to set receiver to send every second status + ; data + cold_start: CALL delay_20ms ;initial delay + CALL delay_20ms ;5 x 20ms = 100ms + CALL delay_20ms + CALL delay_20ms ; + CALL delay_20ms + CALL mess_PSD ; Set data output for 1s + ; ;repetition + CALL mess_TRAIM ; Set 1PPS signal + CALL mess_PPSOFF ; Set 1PPS Offset + CALL mess_PPSCD ; Set 1PPS Cable Delay + CALL mess_PM ; Set Pulse Mode + CALL mess_GMTOFF ; Set GMT Offset + CALL mess_TM ; Set Time Mode + ; + ; + ;*************************************************************** + ;main program + ;*************************************************************** + ; It wait for a new data, save data into scratch pad memory + ; and then writes it into external FIFO if it is empty else + ; wait for an empty condition. + ; + loop: CALL read_char + COMPARE s0, character_arroba ; command init (@) + JUMP NZ, loop + CALL read_char ; read next character + COMPARE s0, character_arroba ; command test + JUMP NZ, loop + CALL read_char ; read next character + COMPARE s0, character_E ; command test + JUMP NZ, loop + CALL read_char ; read next character + COMPARE s0, character_a ; command test + JUMP NZ, loop + CALL read_char + LOAD USB_data, s0 ; read next character + LOAD USB_port, month_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, day_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, year1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, year2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, hours_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, minutes_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, seconds_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, fract_sec1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, fract_sec2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, fract_sec3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, fract_sec4_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, latitude1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, latitude2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, latitude3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, latitude4_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, longitude1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, longitude2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, longitude3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, longitude4_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, ellipsoid1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, ellipsoid2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, ellipsoid3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, ellipsoid4_port + CALL USB_write + CALL read_char ; The nexy four characters are + CALL read_char ; not used, so we just read + CALL read_char ; them but not save. + CALL read_char ; read next character + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, velocity1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, velocity2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, heading1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, heading2_port + CALL USB_write + CALL read_char ; This character is disregarded + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, geometry2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, DOP_type_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, num_vis_sat_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, num_track_sat_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chsf1_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chsf2_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chsf3_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID4_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm4_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo4_port + CALL USB_write + CALL read_char ; read next character + STORE s0, chsf4 ; save data + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID5_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm5_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo5_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chsf5_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID6_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm6_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo6_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chsf6_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID7_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm7_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo7_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chsf7_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, sat_ID8_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chtm8_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, CNo8_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, chsf8_port + CALL USB_write + CALL read_char ; read next character + LOAD USB_data, s0 ; read next character + LOAD USB_port, rsf_port + CALL USB_write + CALL read_char ; read checksum character + CALL read_char ; read CR character + COMPARE s0, character_CR + JUMP NZ, loop ; return to loop if not CR + CALL read_char ; read LF character + COMPARE s0, character_LF + JUMP NZ, loop ; return to loop if not LF + JUMP loop ; Try again! + ; + ; + read_char: CALL read_from_UART + LOAD s0, UART_data + RETURN + ; + ; + USB_write: OUTPUT USB_data, (USB_port) + RETURN + ; + ; + ; + ;*********************************************************** + ; Software delay Routines + ;*********************************************************** + ; + ; Delay of 1us. + ; + ; Constant value defines reflects the clock applied to KCPSM3. Every instruction + ; executes in 2 clock cycles making the calculation highly predictable. The '6' in + ; the following equation even allows for 'CALL delay_1us' instruction in the initiating code. + ; + ; delay_1us_constant = (clock_rate - 6)/4 Where 'clock_rate' is in MHz + ; + ; Register used sA + ; + delay_1us: LOAD sA, delay_1us_constant + wait_1us: SUB sA, 01 + JUMP NZ, wait_1us + RETURN + ; + ; Delay of 10 us + ; + ; Registers used sA, sB + ; + delay_10us: LOAD sB, 0A ;10 x 1us = 10us + wait_10us: CALL delay_1us + SUB sB, 01 + JUMP NZ, wait_10us + RETURN + ; + ; Delay of 40us. + ; + ; Registers used sA, sB + ; + delay_40us: LOAD sB, 28 ;40 x 1us = 40us + wait_40us: CALL delay_1us + SUB sB, 01 + JUMP NZ, wait_40us + RETURN + ; + ; + ; Delay of 1ms. + ; + ; Registers used sA, sB, sC + ; + delay_1ms: LOAD sC, 19 ;25 x 40us = 1ms + wait_1ms: CALL delay_40us + SUB sC, 01 + JUMP NZ, wait_1ms + RETURN + ; + ; Delay of 20ms. + ; + ; Registers used sA, sB, sC, sD + ; + delay_20ms: LOAD sD, 14 ;20 x 1ms = 20ms + wait_20ms: CALL delay_1ms + SUB sD, 01 + JUMP NZ, wait_20ms + RETURN + ; + ; Delay of approximately 1 second. + ; + ; Registers used sA, sB, sC, sD, sE + ; + delay_1s: LOAD sE, 14 ;50 x 20ms = 1000ms + wait_1s: CALL delay_20ms + SUB sE, 01 + JUMP NZ, wait_1s + RETURN + ; + ; + ; + ;*********************************************************** + ;UART communication routines + ;*********************************************************** + ; + ;Read one character from the UART + ; + ;Character read will be returned in a register called 'UART_data'. + ; + ;The routine first tests the receiver FIFO buffer to see if data is present. + ;If the FIFO is empty, the routine waits until there is a character to read. + ;As this could take any amount of time the wait loop could include a call to a + ;subroutine which performs a useful function. + ; + ; + ; + ;Registers used s0 and UART_data + ; + read_from_UART: INPUT s0, status_port ;test Rx_FIFO buffer + TEST s0, rx_data_present ;wait if empty + JUMP NZ, read_character + JUMP read_from_UART + read_character: INPUT UART_data, UART_read_port ;read from FIFO + RETURN + ; + ; + ; + ; + ;Transmit one character to the UART + ; + ;Character supplied in register called 'UART_data'. + ; + ;The routine first tests the transmit FIFO buffer is empty. + ;If the FIFO currently has any data, the routine waits until it is empty. + ;Ultimately this means that only one character is sent at a time which + ;could be important if the PC at the other end of the link transmits + ;an XOFF and needs the flow of data to terminate as soon as possible. + ; + ;Registers used s0 + ; + send_to_UART: INPUT s0, status_port ;test Tx_FIFO buffer + TEST s0, tx_full + JUMP Z, UART_write + JUMP send_to_UART + UART_write: OUTPUT UART_data, UART_write_port + RETURN + ; + ;Convert value provided in register s0 into ASCII characters + ; + ;The value provided must in the range 0 to 99 and will be converted into + ;two ASCII characters. + ; The number of 'tens' will be represented by an ASCII character returned in register s1. + ; The number of 'units' will be represented by an ASCII character returned in register s0. + ; + ;The ASCII representations of '0' to '9' are 30 to 39 hexadecimal which is simply 30 hex added to + ;the actual decimal value. + ; + ;Registers used s0 and s1. + ; + decimal_to_ASCII: LOAD s1, 30 ;load 'tens' counter with ASCII for '0' + test_for_ten: ADD s1, 01 ;increment 'tens' value + SUB s0, 0A ;try to subtract 10 from the supplied value + JUMP NC, test_for_ten ;repeat if subtraction was possible without underflow. + SUB s1, 01 ;'tens' value one less ten due to underflow + ADD s0, 3A ;restore units value (the remainder) and convert to ASCII + RETURN + ; + ; + ; + ;Convert character to upper case + ; + ;The character supplied in register s0. + ;If the character is in the range 'a' to 'z', it is converted + ;to the equivalent upper case character in the range 'A' to 'Z'. + ;All other characters remain unchanged. + ; + ;Registers used s0. + ; + upper_case: COMPARE s0, 61 ;eliminate character codes below 'a' (61 hex) + RETURN C + COMPARE s0, 7B ;eliminate character codes above 'z' (7A hex) + RETURN NC + AND s0, DF ;mask bit5 to convert to upper case + RETURN + ; + ; + ;Convert character '0' to '9' to numerical value in range 0 to 9 + ; + ;The character supplied in register s0. If the character is in the + ;range '0' to '9', it is converted to the equivalent decimal value. + ;Characters not in the range '0' to '9' are signified by the return + ;with the CARRY flag set. + ; + ;Registers used s0. + ; + 1char_to_value: ADD s0, C6 ;reject character codes above '9' (39 hex) + RETURN C ;carry flag is set + SUB s0, F6 ;reject character codes below '0' (30 hex) + RETURN ;carry is set if value not in range + ; + ; + ;Determine the numerical value of a two character decimal string held in + ;scratch pad memory such the result is in the range 0 to 99 (00 to 63 hex). + ; + ;The string must be stored in two consecutive memory locations and the + ;location of the first (tens) character supplied in the s1 register. + ;The result is provided in register s2. Strings not using characters in the + ;range '0' to '9' are signified by the return with the CARRY flag set. + ; + ;Registers used s0, s1 and s2. + ; + 2char_to_value: FETCH s0, (s1) ;read 'tens' character + CALL 1char_to_value ;convert to numerical value + RETURN C ;bad character - CARRY set + LOAD s2, s0 + SL0 s2 ;multiply 'tens' value by 10 (0A hex) + SL0 s2 + ADD s2, s0 + SL0 s2 + ADD s1, 01 ;read 'units' character + FETCH s0, (s1) + CALL 1char_to_value ;convert to numerical value + RETURN C ;bad character - CARRY set + ADD s2, s0 ;add units to result and clear CARRY flag + RETURN + ; + ; + ;Convert hexadecimal value provided in register s0 into ASCII characters + ; + ;The value provided must be any value in the range 00 to FF and will be converted into + ;two ASCII characters. + ; The upper nibble will be represented by an ASCII character returned in register s2. + ; The lower nibble will be represented by an ASCII character returned in register s1. + ; + ;The ASCII representations of '0' to '9' are 30 to 39 hexadecimal which is simply 30 hex + ;added to the actual decimal value. The ASCII representations of 'A' to 'F' are 41 to 46 + ;hexadecimal requiring a further addition of 07 to the 30 already added. + ; + ;Registers used s0, s1 and s2. + ; +hex_byte_to_ASCII: LOAD s1, s0 ;remember value supplied + SR0 s0 ;isolate upper nibble + SR0 s0 + SR0 s0 + SR0 s0 + CALL hex_to_ASCII ;convert + LOAD s2, s0 ;upper nibble value in s2 + LOAD s0, s1 ;restore complete value + AND s0, 0F ;isolate lower nibble + CALL hex_to_ASCII ;convert + LOAD s1, s0 ;lower nibble value in s1 + RETURN + ; + ;Convert hexadecimal value provided in register s0 into ASCII character + ; + ;Register used s0 + ; + hex_to_ASCII: SUB s0, 0A ;test if value is in range 0 to 9 + JUMP C, number_char + ADD s0, 07 ;ASCII char A to F in range 41 to 46 + number_char: ADD s0, 3A ;ASCII char 0 to 9 in range 30 to 40 + RETURN + ; + ; + ;Send the two character HEX value of the register contents 's0' to the UART + ; + ;Registers used s0, s1, s2 + ; + send_hex_byte: CALL hex_byte_to_ASCII + LOAD UART_data, s2 + CALL send_to_UART + LOAD UART_data, s1 + CALL send_to_UART + RETURN + ; + ; + ; + ;Send the four character HEX value of the register contents [s9, s8] to the UART + ; + ;Registers used s0, s9, s8 + ; + send_hex_2bytes: LOAD s0, s9 + CALL send_hex_byte + LOAD s0, s8 + CALL send_hex_byte + RETURN + ; + ; + ;Convert the HEX ASCII characters contained in 's3' and 's2' into + ;an equivalent hexadecimal value in register 's0'. + ; The upper nibble is represented by an ASCII character in register s3. + ; The lower nibble is represented by an ASCII character in register s2. + ; + ;Input characters must be in the range 00 to FF hexadecimal or the CARRY flag + ;will be set on return. + ; + ;Registers used s0, s2 and s3. + ; +ASCII_byte_to_hex: LOAD s0, s3 ;Take upper nibble + CALL ASCII_to_hex ;convert to value + RETURN C ;reject if out of range + LOAD s3, s0 ;remember value + SL0 s3 ;multiply value by 16 to put in upper nibble + SL0 s3 + SL0 s3 + SL0 s3 + LOAD s0, s2 ;Take lower nibble + CALL ASCII_to_hex ;convert to value + RETURN C ;reject if out of range + OR s0, s3 ;merge in the upper nibble with CARRY reset + RETURN + ; + ; + ;Routine to convert ASCII data in 's0' to an equivalent HEX value. + ; + ;If character is not valid for hex, then CARRY is set on return. + ; + ;Register used s0 + ; + ASCII_to_hex: ADD s0, B9 ;test for above ASCII code 46 ('F') + RETURN C + SUB s0, E9 ;normalise 0 to 9 with A-F in 11 to 16 hex + RETURN C ;reject below ASCII code 30 ('0') + SUB s0, 11 ;isolate A-F down to 00 to 05 hex + JUMP NC, ASCII_letter + ADD s0, 07 ;test for above ASCII code 46 ('F') + RETURN C + SUB s0, F6 ;convert to range 00 to 09 + RETURN + ASCII_letter: ADD s0, 0A ;convert to range 0A to 0F + RETURN + ; + ; + ; + ;Send Carriage Return to the UART + ; + send_CR: LOAD UART_data, character_CR + CALL send_to_UART + RETURN + ; + ;Send a space to the UART + ; + send_space: LOAD UART_data, character_space + CALL send_to_UART + RETURN + ; + ; + ;**************************************************************** + ;Text messages + ;**************************************************************** + ; + ; Position/Status/Data message + ; Send @@Ea01C<CR><LF> + ; 01 is for setting the response mode (once per second) + ; C is checksum for this message (25 hex) + ; + mess_PSD: CALL send_arroba + CALL send_arroba + LOAD UART_data, character_E + CALL send_to_UART + LOAD UART_data, character_a + CALL send_to_UART + LOAD UART_data, 01 + CALL send_to_UART + LOAD UART_data, 25 + CALL send_to_UART + CALL send_EOM + RETURN + ; + ; + ; Time Raim Setup and Status Message (page 94 of man) + ; Send @@En000000030100000100000000000000C<CR><LF> + ; 03 is for Time RAIM Algoritm (3..65535) + ; 01 is for setting (enable every time) the 1PPS signal + ; C is checksum for this message (28 hex) + ; + mess_TRAIM: CALL send_arroba + CALL send_arroba + LOAD UART_data, character_E + CALL send_to_UART + LOAD UART_data, character_n + CALL send_to_UART + CALL send_zero + CALL send_zero + CALL send_zero + LOAD UART_data, 03 + CALL send_to_UART + LOAD UART_data, 01 + CALL send_to_UART + CALL send_zero + CALL send_zero + LOAD UART_data, 01 + CALL send_to_UART + CALL send_zero + CALL send_zero + CALL send_zero + CALL send_zero + CALL send_zero + CALL send_zero + CALL send_zero + LOAD UART_data, 28 ; Checksum + CALL send_to_UART + CALL send_EOM + RETURN + ; + ; + ; + ; 1PPS Offset message + ; Send @@Ay00000000C<CR><LF> + ; + ; C is checksum for this message (38 hex) + ; + mess_PPSOFF: CALL send_arroba + CALL send_arroba + LOAD UART_data, character_A + CALL send_to_UART + LOAD UART_data, character_y + CALL send_to_UART + CALL send_zero + CALL send_zero + CALL send_zero + CALL send_zero + LOAD UART_data, 38 ; Checksum + CALL send_to_UART + CALL send_EOM + RETURN + ; + ; + ; 1PPS Cable delay message + ; Send @@Az00000000C<CR><LF> + ; + ; C is checksum for this message (3B hex) + ; + mess_PPSCD: CALL send_arroba + CALL send_arroba + LOAD UART_data, character_A + CALL send_to_UART + LOAD UART_data, character_z + CALL send_to_UART + CALL send_zero + CALL send_zero + CALL send_zero + CALL send_zero + LOAD UART_data, 3B ; Checksum + CALL send_to_UART + CALL send_EOM + RETURN + ; + ; + ; Pulse Mode message + ; Send @@AP00C<CR><LF> + ; + ; C is checksum for this message (11 hex) + ; + mess_PM: CALL send_arroba + CALL send_arroba + LOAD UART_data, character_A + CALL send_to_UART + LOAD UART_data, character_P + CALL send_to_UART + CALL send_zero + LOAD UART_data, 11 ; Checksum + CALL send_to_UART + CALL send_EOM + RETURN + ; + ; + ; GMT Offset message + ; Send @@Ab000000C<CR><LF> + ; + ; C is checksum for this message (23 hex) + ; + mess_GMTOFF: CALL send_arroba + CALL send_arroba + LOAD UART_data, character_A + CALL send_to_UART + LOAD UART_data, character_b + CALL send_to_UART + CALL send_zero + CALL send_zero + CALL send_zero + LOAD UART_data, 23 ; Checksum + CALL send_to_UART + CALL send_EOM + RETURN + ; + ; + ; Time Mode message + ; Send @@Aw01C<CR><LF> + ; + ; C is checksum for this message (37 hex) + ; + mess_TM: CALL send_arroba + CALL send_arroba + LOAD UART_data, character_A + CALL send_to_UART + LOAD UART_data, character_w + CALL send_to_UART + LOAD UART_data, 01 + CALL send_to_UART + LOAD UART_data, 37 ; Checksum + CALL send_to_UART + CALL send_EOM + RETURN + ; + ; + ; EOM End Of Message + ; + send_EOM: LOAD UART_data, character_CR + CALL send_to_UART + LOAD UART_data, character_LF + CALL send_to_UART + RETURN + ; + ; + send_arroba: LOAD UART_data, character_arroba + CALL send_to_UART + RETURN + ; + ; + send_zero: LOAD UART_data, 00 + CALL send_to_UART + RETURN + ; + ; + ;************************************************************************************** + ; Interrupt Service Routine (ISR) + ;************************************************************************************** + ; + ; Interrupts are not used in this design. This is a place keeper only. + ; + ADDRESS 3FE + ISR: RETURNI ENABLE + ; + ; + ;************************************************************************************** + ; Interrupt Vector + ;************************************************************************************** + ; + ADDRESS 3FF + JUMP ISR + ; + ; diff --git a/GPSNFIFO.VHD b/GPSNFIFO.VHD new file mode 100755 index 0000000000000000000000000000000000000000..0a5f396460131f308f2a7357cbcbd2abd39704ac --- /dev/null +++ b/GPSNFIFO.VHD @@ -0,0 +1,274 @@ +-- +-- Definition of a single port ROM for KCPSM3 program defined by gpsnfifo.psm +-- +-- Generated by KCPSM3 Assembler 08Feb2012-16:15:03. +-- +-- Standard IEEE libraries +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +-- +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +library unisim; +use unisim.vcomponents.all; +-- +-- +entity gpsnfifo is + Port ( address : in std_logic_vector(9 downto 0); + instruction : out std_logic_vector(17 downto 0); + clk : in std_logic); + end gpsnfifo; +-- +architecture low_level_definition of gpsnfifo is +-- +-- Attributes to define ROM contents during implementation synthesis. +-- The information is repeated in the generic map for functional simulation +-- +attribute INIT_00 : string; +attribute INIT_01 : string; +attribute INIT_02 : string; +attribute INIT_03 : string; +attribute INIT_04 : string; +attribute INIT_05 : string; +attribute INIT_06 : string; +attribute INIT_07 : string; +attribute INIT_08 : string; +attribute INIT_09 : string; +attribute INIT_0A : string; +attribute INIT_0B : string; +attribute INIT_0C : string; +attribute INIT_0D : string; +attribute INIT_0E : string; +attribute INIT_0F : string; +attribute INIT_10 : string; +attribute INIT_11 : string; +attribute INIT_12 : string; +attribute INIT_13 : string; +attribute INIT_14 : string; +attribute INIT_15 : string; +attribute INIT_16 : string; +attribute INIT_17 : string; +attribute INIT_18 : string; +attribute INIT_19 : string; +attribute INIT_1A : string; +attribute INIT_1B : string; +attribute INIT_1C : string; +attribute INIT_1D : string; +attribute INIT_1E : string; +attribute INIT_1F : string; +attribute INIT_20 : string; +attribute INIT_21 : string; +attribute INIT_22 : string; +attribute INIT_23 : string; +attribute INIT_24 : string; +attribute INIT_25 : string; +attribute INIT_26 : string; +attribute INIT_27 : string; +attribute INIT_28 : string; +attribute INIT_29 : string; +attribute INIT_2A : string; +attribute INIT_2B : string; +attribute INIT_2C : string; +attribute INIT_2D : string; +attribute INIT_2E : string; +attribute INIT_2F : string; +attribute INIT_30 : string; +attribute INIT_31 : string; +attribute INIT_32 : string; +attribute INIT_33 : string; +attribute INIT_34 : string; +attribute INIT_35 : string; +attribute INIT_36 : string; +attribute INIT_37 : string; +attribute INIT_38 : string; +attribute INIT_39 : string; +attribute INIT_3A : string; +attribute INIT_3B : string; +attribute INIT_3C : string; +attribute INIT_3D : string; +attribute INIT_3E : string; +attribute INIT_3F : string; +attribute INITP_00 : string; +attribute INITP_01 : string; +attribute INITP_02 : string; +attribute INITP_03 : string; +attribute INITP_04 : string; +attribute INITP_05 : string; +attribute INITP_06 : string; +attribute INITP_07 : string; +-- +-- Attributes to define ROM contents during implementation synthesis. +-- +attribute INIT_00 of ram_1024_x_18 : label is "0123540C40400123020701FA01EF01E101D301B701AB013B013B013B013B013B"; +attribute INIT_01 of ram_1024_x_18 : label is "01260601150001230126060015000123540C40610123540C40450123540C4040"; +attribute INIT_02 of ram_1024_x_18 : label is "0126060515000123012606041500012301260603150001230126060215000123"; +attribute INIT_03 of ram_1024_x_18 : label is "0126060915000123012606081500012301260607150001230126060615000123"; +attribute INIT_04 of ram_1024_x_18 : label is "0126060D150001230126060C150001230126060B150001230126060A15000123"; +attribute INIT_05 of ram_1024_x_18 : label is "012606111500012301260610150001230126060F150001230126060E15000123"; +attribute INIT_06 of ram_1024_x_18 : label is "0126061515000123012606141500012301260613150001230126061215000123"; +attribute INIT_07 of ram_1024_x_18 : label is "0126061815000123012606171500012301230123012301230126061615000123"; +attribute INIT_08 of ram_1024_x_18 : label is "061C150001230126061B1500012301230126061A150001230126061915000123"; +attribute INIT_09 of ram_1024_x_18 : label is "0620150001230126061F150001230126061E150001230126061D150001230126"; +attribute INIT_0A of ram_1024_x_18 : label is "0624150001230126062315000123012606221500012301260621150001230126"; +attribute INIT_0B of ram_1024_x_18 : label is "0628150001230126062715000123012606261500012301260625150001230126"; +attribute INIT_0C of ram_1024_x_18 : label is "062C150001230126062B150001230126062A1500012301260629150001230126"; +attribute INIT_0D of ram_1024_x_18 : label is "012301260630150001230126062F15000123E02E01230126062D150001230126"; +attribute INIT_0E of ram_1024_x_18 : label is "0123012606341500012301260633150001230126063215000123012606311500"; +attribute INIT_0F of ram_1024_x_18 : label is "0123012606381500012301260637150001230126063615000123012606351500"; +attribute INIT_10 of ram_1024_x_18 : label is "01230126063C150001230126063B150001230126063A15000123012606391500"; +attribute INIT_11 of ram_1024_x_18 : label is "0123540C400D012301230126063F150001230126063E150001230126063D1500"; +attribute INIT_12 of ram_1024_x_18 : label is "552DCB0101280B0AA0005529CA010A0BA000D560A00010F00145400C540C400A"; +attribute INIT_13 of ram_1024_x_18 : label is "A000553CCD0101360D14A0005537CC0101310C19A0005532CB0101280B28A000"; +attribute INIT_14 of ram_1024_x_18 : label is "CFC0414B514F20024040A0004F804145554920044040A0005541CE01013B0E14"; +attribute INIT_15 of ram_1024_x_18 : label is "B80080C6A000A0DFBC00407BB8004061A000803AC1015D52C00A81010130A000"; +attribute INIT_16 of ram_1024_x_18 : label is "A0009200B800015E7010810102069200020602061200B800015E7010A000C0F6"; +attribute INIT_17 of ram_1024_x_18 : label is "803A8007597FC00AA0001100017CA00F10101200017C000E000E000E000E1100"; +attribute INIT_18 of ram_1024_x_18 : label is "1300B80001991030A0000181108001811090A000014B1F10014B1F200170A000"; +attribute INIT_19 of ram_1024_x_18 : label is "80075DA3C011B800C0E9B80080B9A000D030B800019910200306030603060306"; +attribute INIT_1A of ram_1024_x_18 : label is "0F61014B0F4502180218A000014B0F20A000014B0F0DA000800AA000C0F6B800"; +attribute INIT_1B of ram_1024_x_18 : label is "021B021B021B014B0F6E014B0F4502180218A0000213014B0F25014B0F01014B"; +attribute INIT_1C of ram_1024_x_18 : label is "0F28021B021B021B021B021B021B021B014B0F01021B021B014B0F01014B0F03"; +attribute INIT_1D of ram_1024_x_18 : label is "0213014B0F38021B021B021B021B014B0F79014B0F4102180218A0000213014B"; +attribute INIT_1E of ram_1024_x_18 : label is "0218A0000213014B0F3B021B021B021B021B014B0F7A014B0F4102180218A000"; +attribute INIT_1F of ram_1024_x_18 : label is "014B0F62014B0F4102180218A0000213014B0F11021B014B0F50014B0F410218"; +attribute INIT_20 of ram_1024_x_18 : label is "0F37014B0F01014B0F77014B0F4102180218A0000213014B0F23021B021B021B"; +attribute INIT_21 of ram_1024_x_18 : label is "00000000A000014B0F00A000014B0F40A000014B0F0A014B0F0DA0000213014B"; +attribute INIT_22 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_23 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_24 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_25 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_26 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_27 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_28 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_29 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2A of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2B of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2C of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2D of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2E of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2F of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_30 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_31 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_32 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_33 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_34 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_35 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_36 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_37 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_38 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_39 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3A of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3B of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3C of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3D of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3E of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3F of ram_1024_x_18 : label is "43FE800100000000000000000000000000000000000000000000000000000000"; +attribute INITP_00 of ram_1024_x_18 : label is "C3C3FFC3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3DF7DF7FFFFFF"; +attribute INITP_01 of ram_1024_x_18 : label is "F0F0F0F0F0F0F0F0F0F0EF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FC3C3"; +attribute INITP_02 of ram_1024_x_18 : label is "5D8C0EA89B19A2C998999752BD23D2DCB72DCB72DCB4A8FDF7F0F0F0F0F0F0F0"; +attribute INITP_03 of ram_1024_x_18 : label is "CCFBCF33EF3FF33EF3FF33EF3FFFCFCCFF33EF3333ECB26676662CAA2CB32CCE"; +attribute INITP_04 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000B2CB32F3333EF3F"; +attribute INITP_05 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INITP_06 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INITP_07 of ram_1024_x_18 : label is "F000000000000000000000000000000000000000000000000000000000000000"; +-- +begin +-- + --Instantiate the Xilinx primitive for a block RAM + ram_1024_x_18: RAMB16_S18 + --synthesis translate_off + --INIT values repeated to define contents for functional simulation + generic map ( INIT_00 => X"0123540C40400123020701FA01EF01E101D301B701AB013B013B013B013B013B", + INIT_01 => X"01260601150001230126060015000123540C40610123540C40450123540C4040", + INIT_02 => X"0126060515000123012606041500012301260603150001230126060215000123", + INIT_03 => X"0126060915000123012606081500012301260607150001230126060615000123", + INIT_04 => X"0126060D150001230126060C150001230126060B150001230126060A15000123", + INIT_05 => X"012606111500012301260610150001230126060F150001230126060E15000123", + INIT_06 => X"0126061515000123012606141500012301260613150001230126061215000123", + INIT_07 => X"0126061815000123012606171500012301230123012301230126061615000123", + INIT_08 => X"061C150001230126061B1500012301230126061A150001230126061915000123", + INIT_09 => X"0620150001230126061F150001230126061E150001230126061D150001230126", + INIT_0A => X"0624150001230126062315000123012606221500012301260621150001230126", + INIT_0B => X"0628150001230126062715000123012606261500012301260625150001230126", + INIT_0C => X"062C150001230126062B150001230126062A1500012301260629150001230126", + INIT_0D => X"012301260630150001230126062F15000123E02E01230126062D150001230126", + INIT_0E => X"0123012606341500012301260633150001230126063215000123012606311500", + INIT_0F => X"0123012606381500012301260637150001230126063615000123012606351500", + INIT_10 => X"01230126063C150001230126063B150001230126063A15000123012606391500", + INIT_11 => X"0123540C400D012301230126063F150001230126063E150001230126063D1500", + INIT_12 => X"552DCB0101280B0AA0005529CA010A0BA000D560A00010F00145400C540C400A", + INIT_13 => X"A000553CCD0101360D14A0005537CC0101310C19A0005532CB0101280B28A000", + INIT_14 => X"CFC0414B514F20024040A0004F804145554920044040A0005541CE01013B0E14", + INIT_15 => X"B80080C6A000A0DFBC00407BB8004061A000803AC1015D52C00A81010130A000", + INIT_16 => X"A0009200B800015E7010810102069200020602061200B800015E7010A000C0F6", + INIT_17 => X"803A8007597FC00AA0001100017CA00F10101200017C000E000E000E000E1100", + INIT_18 => X"1300B80001991030A0000181108001811090A000014B1F10014B1F200170A000", + INIT_19 => X"80075DA3C011B800C0E9B80080B9A000D030B800019910200306030603060306", + INIT_1A => X"0F61014B0F4502180218A000014B0F20A000014B0F0DA000800AA000C0F6B800", + INIT_1B => X"021B021B021B014B0F6E014B0F4502180218A0000213014B0F25014B0F01014B", + INIT_1C => X"0F28021B021B021B021B021B021B021B014B0F01021B021B014B0F01014B0F03", + INIT_1D => X"0213014B0F38021B021B021B021B014B0F79014B0F4102180218A0000213014B", + INIT_1E => X"0218A0000213014B0F3B021B021B021B021B014B0F7A014B0F4102180218A000", + INIT_1F => X"014B0F62014B0F4102180218A0000213014B0F11021B014B0F50014B0F410218", + INIT_20 => X"0F37014B0F01014B0F77014B0F4102180218A0000213014B0F23021B021B021B", + INIT_21 => X"00000000A000014B0F00A000014B0F40A000014B0F0A014B0F0DA0000213014B", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"43FE800100000000000000000000000000000000000000000000000000000000", + INITP_00 => X"C3C3FFC3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3DF7DF7FFFFFF", + INITP_01 => X"F0F0F0F0F0F0F0F0F0F0EF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FC3C3", + INITP_02 => X"5D8C0EA89B19A2C998999752BD23D2DCB72DCB72DCB4A8FDF7F0F0F0F0F0F0F0", + INITP_03 => X"CCFBCF33EF3FF33EF3FF33EF3FFFCFCCFF33EF3333ECB26676662CAA2CB32CCE", + INITP_04 => X"0000000000000000000000000000000000000000000000000B2CB32F3333EF3F", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"F000000000000000000000000000000000000000000000000000000000000000") + --synthesis translate_on + port map( DI => "0000000000000000", + DIP => "00", + EN => '1', + WE => '0', + SSR => '0', + CLK => clk, + ADDR => address, + DO => instruction(15 downto 0), + DOP => instruction(17 downto 16)); +-- +end low_level_definition; +-- +------------------------------------------------------------------------------------ +-- +-- END OF FILE gpsnfifo.vhd +-- +------------------------------------------------------------------------------------ diff --git a/GPS_n_fifo.vhd b/GPS_n_fifo.vhd new file mode 100644 index 0000000000000000000000000000000000000000..43d875ad81bf2b0ee4b7b732948d210a22dca657 --- /dev/null +++ b/GPS_n_fifo.vhd @@ -0,0 +1,441 @@ +-- +-- Copyright (C) 2011 Horacio Arnaldi +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +-- +------------------------------------------------------------------------------------ +-- +-- +entity Oncore_ctrl is + Port ( + clk : in std_logic; + tx_female : out std_logic; + rx_female : in std_logic; + UTCnGPS : in std_logic; + + -- Costants data output + month_port : out std_logic_vector(7 downto 0); + day_port : out std_logic_vector(7 downto 0); + year1_port : out std_logic_vector(7 downto 0); + year2_port : out std_logic_vector(7 downto 0); + hours_port : out std_logic_vector(7 downto 0); + minutes_port : out std_logic_vector(7 downto 0); + seconds_port : out std_logic_vector(7 downto 0); + fract_sec1_port : out std_logic_vector(7 downto 0); + fract_sec2_port : out std_logic_vector(7 downto 0); + fract_sec3_port : out std_logic_vector(7 downto 0); + fract_sec4_port : out std_logic_vector(7 downto 0); + latitude1_port : out std_logic_vector(7 downto 0); + latitude2_port : out std_logic_vector(7 downto 0); + latitude3_port : out std_logic_vector(7 downto 0); + latitude4_port : out std_logic_vector(7 downto 0); + longitude1_port : out std_logic_vector(7 downto 0); + longitude2_port : out std_logic_vector(7 downto 0); + longitude3_port : out std_logic_vector(7 downto 0); + longitude4_port : out std_logic_vector(7 downto 0); + ellipsoid1_port : out std_logic_vector(7 downto 0); + ellipsoid2_port : out std_logic_vector(7 downto 0); + ellipsoid3_port : out std_logic_vector(7 downto 0); + ellipsoid4_port : out std_logic_vector(7 downto 0); + velocity1_port : out std_logic_vector(7 downto 0); + velocity2_port : out std_logic_vector(7 downto 0); + heading1_port : out std_logic_vector(7 downto 0); + heading2_port : out std_logic_vector(7 downto 0); + geometry2_port : out std_logic_vector(7 downto 0); + DOP_type_port : out std_logic_vector(7 downto 0); + num_vis_sat_port : out std_logic_vector(7 downto 0); + num_track_sat_port : out std_logic_vector(7 downto 0); + + sat_ID1_port : out std_logic_vector(7 downto 0); + chtm1_port : out std_logic_vector(7 downto 0); + CNo1_port : out std_logic_vector(7 downto 0); + chsf1_port : out std_logic_vector(7 downto 0); + + sat_ID2_port : out std_logic_vector(7 downto 0); + chtm2_port : out std_logic_vector(7 downto 0); + CNo2_port : out std_logic_vector(7 downto 0); + chsf2_port : out std_logic_vector(7 downto 0); + + sat_ID3_port : out std_logic_vector(7 downto 0); + chtm3_port : out std_logic_vector(7 downto 0); + CNo3_port : out std_logic_vector(7 downto 0); + chsf3_port : out std_logic_vector(7 downto 0); + + sat_ID4_port : out std_logic_vector(7 downto 0); + chtm4_port : out std_logic_vector(7 downto 0); + CNo4_port : out std_logic_vector(7 downto 0); + chsf4_port : out std_logic_vector(7 downto 0); + + sat_ID5_port : out std_logic_vector(7 downto 0); + chtm5_port : out std_logic_vector(7 downto 0); + CNo5_port : out std_logic_vector(7 downto 0); + chsf5_port : out std_logic_vector(7 downto 0); + + sat_ID6_port : out std_logic_vector(7 downto 0); + chtm6_port : out std_logic_vector(7 downto 0); + CNo6_port : out std_logic_vector(7 downto 0); + chsf6_port : out std_logic_vector(7 downto 0); + + sat_ID7_port : out std_logic_vector(7 downto 0); + chtm7_port : out std_logic_vector(7 downto 0); + CNo7_port : out std_logic_vector(7 downto 0); + chsf7_port : out std_logic_vector(7 downto 0); + + sat_ID8_port : out std_logic_vector(7 downto 0); + chtm8_port : out std_logic_vector(7 downto 0); + CNo8_port : out std_logic_vector(7 downto 0); + chsf8_port : out std_logic_vector(7 downto 0); + + rsf_port : out std_logic_vector(7 downto 0)); +end Oncore_ctrl; +-- +------------------------------------------------------------------------------------ +-- +-- Start of test architecture +-- +architecture rtl of Oncore_ctrl is +-- +------------------------------------------------------------------------------------ + +-- +-- declaration of KCPSM3 +-- + component kcpsm3 + Port ( address : out std_logic_vector(9 downto 0); + instruction : in std_logic_vector(17 downto 0); + port_id : out std_logic_vector(7 downto 0); + write_strobe : out std_logic; + out_port : out std_logic_vector(7 downto 0); + read_strobe : out std_logic; + in_port : in std_logic_vector(7 downto 0); + interrupt : in std_logic; + interrupt_ack : out std_logic; + reset : in std_logic; + clk : in std_logic); + end component; +-- +-- declaration of program ROM +-- + component gpsnfifo + Port ( address : in std_logic_vector(9 downto 0); + instruction : out std_logic_vector(17 downto 0); + clk : in std_logic); + end component; +-- +------------------------------------------------------------------------------------ +-- +-- +-- declaration of UART transmitter with integral 16 byte FIFO buffer. +-- + component uart_tx + Port ( data_in : in std_logic_vector(7 downto 0); + write_buffer : in std_logic; + reset_buffer : in std_logic; + en_16_x_baud : in std_logic; + serial_out : out std_logic; + buffer_full : out std_logic; + buffer_half_full : out std_logic; + clk : in std_logic); + end component; +-- +-- declaration of UART Receiver with integral 16 byte FIFO buffer +-- + component uart_rx + Port ( serial_in : in std_logic; + data_out : out std_logic_vector(7 downto 0); + read_buffer : in std_logic; + reset_buffer : in std_logic; + en_16_x_baud : in std_logic; + buffer_data_present : out std_logic; + buffer_full : out std_logic; + buffer_half_full : out std_logic; + clk : in std_logic); + end component; +-- +-- Signals used to connect KCPSM3 to program ROM and I/O logic +-- +signal address : std_logic_vector(9 downto 0); +signal instruction : std_logic_vector(17 downto 0); +signal port_id : std_logic_vector(7 downto 0); +signal out_port : std_logic_vector(7 downto 0); +signal in_port : std_logic_vector(7 downto 0); +signal swrite_strobe : std_logic; +signal sread_strobe : std_logic; +signal interrupt : std_logic; +signal interrupt_ack : std_logic; +signal kcpsm3_reset : std_logic; +-- +-- Signals for connection of peripherals +-- +signal status_port : std_logic_vector(7 downto 0); +-- +-- Signals for interrupt generation +-- +--signal interrupt_count : integer range 0 to 1526 :=0; +--signal interrupt_event : std_logic; +-- +-- Signals for UART connections +-- +signal baud_count : integer range 0 to 325 :=0; +signal en_16_x_baud : std_logic; +signal write_to_uart : std_logic; +signal tx_full : std_logic; +signal tx_half_full : std_logic; +signal read_from_uart : std_logic; +signal rx_data : std_logic_vector(7 downto 0); +signal rx_data_present : std_logic; +signal rx_full : std_logic; +signal rx_half_full : std_logic; +-- +-- +-- +begin + + ---------------------------------------------------------------------------------------------------------------------------------- + -- KCPSM3 and the program memory + ---------------------------------------------------------------------------------------------------------------------------------- + -- + + processor: kcpsm3 + port map( address => address, + instruction => instruction, + port_id => port_id, + write_strobe => swrite_strobe, + out_port => out_port, + read_strobe => sread_strobe, + in_port => in_port, + interrupt => interrupt, + interrupt_ack => interrupt_ack, + reset => kcpsm3_reset, + clk => clk); + + program_rom: gpsnfifo + port map( address => address, + instruction => instruction, + clk => clk); + + -- + -- + -- Interrupt is not used in this version of the design. + -- + interrupt <= interrupt_ack; + -- + -- + -- + ---------------------------------------------------------------------------------------------------------------------------------- + -- KCPSM3 input ports + ---------------------------------------------------------------------------------------------------------------------------------- + -- + -- + -- UART FIFO status signals to form a bus + -- + + status_port <= UTCnGPS & "00" & rx_full & rx_half_full & rx_data_present & tx_full & tx_half_full; + + -- + -- + -- The inputs connect via a pipelined multiplexer + -- + input_ports: process(clk) + begin + if clk'event and clk='1' then + + case port_id(7 downto 6) is + + + -- read status signals at address 00 hex + when "01" => in_port <= status_port; + + -- read UART receive data at address 01 hex + when "10" => in_port <= rx_data; + + -- Don't care used for all other addresses to ensure minimum logic implementation + when others => in_port <= "XXXXXXXX"; + + end case; + + -- Form read strobe for UART receiver FIFO buffer at address 01 hex. + -- The fact that the read strobe will occur after the actual data is read by + -- the KCPSM3 is acceptable because it is really means 'I have read you'! + + if (sread_strobe='1' and port_id(7 downto 6)="10") then + read_from_uart <= '1'; + else + read_from_uart <= '0'; + end if; + + end if; + + end process input_ports; + + -- + ---------------------------------------------------------------------------------------------------------------------------------- + -- KCPSM3 output ports + ---------------------------------------------------------------------------------------------------------------------------------- + -- + + -- adding the output registers to the processor + + output_ports: process(clk) + begin + + if clk'event and clk='1' then + if swrite_strobe='1' then + + case port_id is--(5 downto 0) is + + when x"00" => month_port <= out_port; + when x"01" => day_port <= out_port; + when x"02" => year1_port <= out_port; + when x"03" => year2_port <= out_port; + when x"04" => hours_port <= out_port; + when x"05" => minutes_port <= out_port; + when x"06" => seconds_port <= out_port; + when x"07" => fract_sec1_port <= out_port; + when x"08" => fract_sec2_port <= out_port; + when x"09" => fract_sec3_port <= out_port; + when x"0A" => fract_sec4_port <= out_port; + when x"0B" => latitude1_port <= out_port; + when x"0C" => latitude2_port <= out_port; + when x"0D" => latitude3_port <= out_port; + when x"0E" => latitude4_port <= out_port; + when x"0F" => longitude1_port <= out_port; + when x"10" => longitude2_port <= out_port; + when x"11" => longitude3_port <= out_port; + when x"12" => longitude4_port <= out_port; + when x"13" => ellipsoid1_port <= out_port; + when x"14" => ellipsoid2_port <= out_port; + when x"15" => ellipsoid3_port <= out_port; + when x"16" => ellipsoid4_port <= out_port; + when x"17" => velocity1_port <= out_port; + when x"18" => velocity2_port <= out_port; + when x"19" => heading1_port <= out_port; + when x"1A" => heading2_port <= out_port; + when x"1B" => geometry2_port <= out_port; + when x"1C" => DOP_type_port <= out_port; + when x"1D" => num_vis_sat_port <= out_port; + when x"1E" => num_track_sat_port <= out_port; + when x"1F" => sat_ID1_port <= out_port; + when x"20" => chtm1_port <= out_port; + when x"21" => CNo1_port <= out_port; + when x"22" => chsf1_port <= out_port; + when x"23" => sat_ID2_port <= out_port; + when x"24" => chtm2_port <= out_port; + when x"25" => CNo2_port <= out_port; + when x"26" => chsf2_port <= out_port; + when x"27" => sat_ID3_port <= out_port; + when x"28" => chtm3_port <= out_port; + when x"29" => CNo3_port <= out_port; + when x"2A" => chsf3_port <= out_port; + when x"2B" => sat_ID4_port <= out_port; + when x"2C" => chtm4_port <= out_port; + when x"2D" => CNo4_port <= out_port; + when x"2E" => chsf4_port <= out_port; + when x"2F" => sat_ID5_port <= out_port; + when x"30" => chtm5_port <= out_port; + when x"31" => CNo5_port <= out_port; + when x"32" => chsf5_port <= out_port; + when x"33" => sat_ID6_port <= out_port; + when x"34" => chtm6_port <= out_port; + when x"35" => CNo6_port <= out_port; + when x"36" => chsf6_port <= out_port; + when x"37" => sat_ID7_port <= out_port; + when x"38" => chtm7_port <= out_port; + when x"39" => CNo7_port <= out_port; + when x"3A" => chsf7_port <= out_port; + when x"3B" => sat_ID8_port <= out_port; + when x"3C" => chtm8_port <= out_port; + when x"3D" => CNo8_port <= out_port; + when x"3E" => chsf8_port <= out_port; + when x"3F" => rsf_port <= out_port; + + -- Don't care used for all other addresses to + -- ensure minimum logic implementation + when others => + + end case; + + end if; + + end if; + + end process output_ports; + + -- + -- write to UART transmitter FIFO buffer at address 20 hex. + -- This is a combinatorial decode because the FIFO is the 'port register'. + -- + + write_to_uart <= '1' when (swrite_strobe='1' and port_id(7 downto 6) ="11") else '0'; + + + -- + ---------------------------------------------------------------------------------------------------------------------------------- + -- UART + ---------------------------------------------------------------------------------------------------------------------------------- + -- + -- Connect the 8-bit, 1 stop-bit, no parity transmit and receive macros. + -- Each contains an embedded 16-byte FIFO buffer. + -- + + transmit: uart_tx + port map ( data_in => out_port, + write_buffer => write_to_uart, + reset_buffer => '0', + en_16_x_baud => en_16_x_baud, + serial_out => tx_female, + buffer_full => tx_full, + buffer_half_full => tx_half_full, + clk => clk ); + + receive: uart_rx + port map ( serial_in => rx_female, + data_out => rx_data, + read_buffer => read_from_uart, + reset_buffer => '0', + en_16_x_baud => en_16_x_baud, + buffer_data_present => rx_data_present, + buffer_full => rx_full, + buffer_half_full => rx_half_full, + clk => clk ); + + -- + -- Set baud rate to 9600 for the UART communications + -- Requires en_16_x_baud to be 153600Hz which is a single cycle pulse every 326 cycles at 50MHz + -- + + baud_timer: process(clk) + begin + if clk'event and clk='1' then + if baud_count=325 then + baud_count <= 0; + en_16_x_baud <= '1'; + else + baud_count <= baud_count + 1; + en_16_x_baud <= '0'; + end if; + end if; + end process baud_timer; + + -- + -- + ---------------------------------------------------------------------------------------------------------------------------------- + +end rtl; diff --git a/HP03_par_control.vhd b/HP03_par_control.vhd new file mode 100644 index 0000000000000000000000000000000000000000..dff591004f0a7db105b3fc83884786dfebaa232a --- /dev/null +++ b/HP03_par_control.vhd @@ -0,0 +1,347 @@ +-- +-- Copyright (C) 2011 Horacio Arnaldi +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +-- +------------------------------------------------------------------------------------ +-- +-- +entity HP03_cntrl is + Port ( clk : in std_logic; + -- I2C and HP03 related signals + SDA : inout std_logic; + SCL : out std_logic; + XCLR : out std_logic; + MCLK : out std_logic; + -- Costants data output + C1 : out std_logic_vector(15 downto 0); + C2 : out std_logic_vector(15 downto 0); + C3 : out std_logic_vector(15 downto 0); + C4 : out std_logic_vector(15 downto 0); + C5 : out std_logic_vector(15 downto 0); + C6 : out std_logic_vector(15 downto 0); + C7 : out std_logic_vector(15 downto 0); + A : out std_logic_vector(7 downto 0); + B : out std_logic_vector(7 downto 0); + C : out std_logic_vector(7 downto 0); + D : out std_logic_vector(7 downto 0); + -- ADC data output + -- Pressure data + D1 : out std_logic_vector(15 downto 0); + -- Temperature data + D2 : out std_logic_vector(15 downto 0)); + end HP03_cntrl; +-- +------------------------------------------------------------------------------------ +-- +-- Start of test architecture +-- +architecture rtl of HP03_cntrl is +-- +------------------------------------------------------------------------------------ + +-- +-- declaration of KCPSM3 +-- + component kcpsm3 + Port ( address : out std_logic_vector(9 downto 0); + instruction : in std_logic_vector(17 downto 0); + port_id : out std_logic_vector(7 downto 0); + write_strobe : out std_logic; + out_port : out std_logic_vector(7 downto 0); + read_strobe : out std_logic; + in_port : in std_logic_vector(7 downto 0); + interrupt : in std_logic; + interrupt_ack : out std_logic; + reset : in std_logic; + clk : in std_logic); + end component; +-- +-- declaration of program ROM +-- + component hp_lago + Port ( address : in std_logic_vector(9 downto 0); + instruction : out std_logic_vector(17 downto 0); + clk : in std_logic); + end component; +-- +------------------------------------------------------------------------------------ +-- +-- Signals used to connect KCPSM3 to program ROM and I/O logic +-- +signal address : std_logic_vector(9 downto 0); +signal instruction : std_logic_vector(17 downto 0); +signal port_id : std_logic_vector(7 downto 0); +signal out_port : std_logic_vector(7 downto 0); +signal in_port : std_logic_vector(7 downto 0); +signal swrite_strobe : std_logic; +signal sread_strobe : std_logic; +signal interrupt : std_logic; +signal interrupt_ack : std_logic; +signal kcpsm3_reset : std_logic; +-- +-- Signals for connection of peripherals +-- +-- Signals for mclk generation +-- +signal mclk_count : integer range 0 to 763 :=0; --32khz +signal mclk_int : std_logic; +-- +signal sC1_msb, sC1_lsb : std_logic_vector(7 downto 0); +signal sC2_msb, sC2_lsb : std_logic_vector(7 downto 0); +signal sC3_msb, sC3_lsb : std_logic_vector(7 downto 0); +signal sC4_msb, sC4_lsb : std_logic_vector(7 downto 0); +signal sC5_msb, sC5_lsb : std_logic_vector(7 downto 0); +signal sC6_msb, sC6_lsb : std_logic_vector(7 downto 0); +signal sC7_msb, sC7_lsb : std_logic_vector(7 downto 0); +signal sA, sB : std_logic_vector(7 downto 0); +signal sC, sD : std_logic_vector(7 downto 0); +signal sD1_msb, sD1_lsb : std_logic_vector(7 downto 0); +signal sD2_msb, sD2_lsb : std_logic_vector(7 downto 0); +-- Signal to connect to HP03 SDA interface +-- +signal drive_hp_wire, sSCL, sXCLR : std_logic; +-- +-- +begin + -- + ---------------------------------------------------------------------------------------------------------------------------------- + -- Open Collector Bidirectional data interface to HP03 + ---------------------------------------------------------------------------------------------------------------------------------- + -- + -- The I2C interface is an open collector interface with an external pull-up resistor + -- fitted on the board. + -- + -- To transmit a Low signal, the output buffer must be enabled with a data value of '0'. + -- To transmit a High, the output buffer is disabled (tri-state) and the external + -- pull-up generates the '1'. + -- Receiving a bit is again performed with the output buffer disabled. + -- + -- + SDA <= '0' when (drive_hp_wire='0') else 'Z'; + SCL <= sSCL; + XCLR <= sXCLR; + -- + C1 <= sC1_msb & sC1_lsb; + C2 <= sC2_msb & sC2_lsb; + C3 <= sC3_msb & sC3_lsb; + C4 <= sC4_msb & sC4_lsb; + C5 <= sC5_msb & sC5_lsb; + C6 <= sC6_msb & sC6_lsb; + C7 <= sC7_msb & sC7_lsb; + A <= sA; + B <= sB; + C <= sC; + D <= sD; + D1 <= sD1_msb & sD1_lsb; + D2 <= sD2_msb & sD2_lsb; + -- + ------------------------------------------------------------------------------------------- + -- KCPSM3 and the program memory + ------------------------------------------------------------------------------------------- + -- + processor: kcpsm3 + port map( address => address, + instruction => instruction, + port_id => port_id, + write_strobe => swrite_strobe, + out_port => out_port, + read_strobe => sread_strobe, + in_port => in_port, + interrupt => interrupt, + interrupt_ack => interrupt_ack, + reset => kcpsm3_reset, + clk => clk); + + program_rom: hp_lago + port map( address => address, + instruction => instruction, + clk => clk); + -- + -- + ------------------------------------------------------------------------------------------- + -- Interrupt + ------------------------------------------------------------------------------------------- + -- + -- + -- Interrupt is not used in this version of the design. + -- + interrupt <= interrupt_ack; + -- + ------------------------------------------------------------------------------------------- + -- KCPSM3 input ports + ------------------------------------------------------------------------------------------- + -- + input_ports: process(clk) + begin + if clk'event and clk = '1' then + if port_id(5) = '1' then + in_port <= "0000000" & SDA; + else + in_port <= "XXXXXXXX"; + end if; + end if; + + end process input_ports; + -- + ------------------------------------------------------------------------------------------- + -- KCPSM3 output ports + ------------------------------------------------------------------------------------------- + -- + -- adding the output registers to the processor + + output_ports: process(clk) + begin + + if clk'event and clk='1' then + if swrite_strobe='1' then + if port_id(6) = '1' then + drive_hp_wire <= out_port(0); + sSCL <= out_port(1); + sXCLR <= out_port(2); + end if; + + case port_id(4 downto 0) is + -- Write C1_msb constant at address 01 hex + when "00001" => + sC1_msb <= out_port +; + -- Write C1_lsb constant at address 02 hex + when "00010" => + sC1_lsb <= out_port; + + -- Write C2_msb constant at address 03 hex + when "00011" => + sC2_msb <= out_port; + + -- Write C2_lsb constant at address 04 hex + when "00100" => + sC2_lsb <= out_port; + + -- Write C3_msb constant at address 05 hex + when "00101" => + sC3_msb <= out_port; + + -- Write C3_lsb constant at address 06 hex + when "00110" => + sC3_lsb <= out_port; + + -- Write C4_msb constant at address 07 hex + when "00111" => + sC4_msb <= out_port; + + -- Write C4_lsb constant at address 08 hex + when "01000" => + sC4_lsb <= out_port; + -- Write C5_msb constant at address 09 hex + when "01001" => + sC5_msb <= out_port; + -- Write C5_lsb constant at address 0A hex + when "01010" => + sC5_lsb <= out_port; + -- Write C6_msb constant at address 0B hex + when "01011" => + sC6_msb <= out_port; + -- Write C6_lsb constant at address 0C hex + when "01100" => + sC6_lsb <= out_port; + -- Write C7_msb constant at address 0D hex + when "01101" => + sC7_msb <= out_port; + -- Write C7_lsb constant at address 0E hex + when "01110" => + sC7_lsb <= out_port; + -- Write A constant at address 0F hex + when "01111" => + sA <= out_port; + -- Write B constant at address 10 hex + when "10000" => + sB <= out_port; + -- Write C constant at address 11 hex + when "10001" => + sC <= out_port; + -- Write D constant at address 12 hex + when "10010" => + sD <= out_port; + -- Write ADC data D1_msb at address 13 hex + when "10011" => + sD1_msb <= out_port; + -- Write ADC data D1_lsb at address 14 hex + when "10100" => + sD1_lsb <= out_port; + -- Write ADC data D2_msb at address 15 hex + when "10101" => + sD2_msb <= out_port; + -- Write ADC data D2_lsb at address 16 hex + when "10110" => + sD2_lsb <= out_port; + -- Don't care used for all other addresses to + -- ensure minimum logic implementation + when others => + sC1_msb <= "XXXXXXXX"; + sC1_lsb <= "XXXXXXXX"; + sC2_msb <= "XXXXXXXX"; + sC2_lsb <= "XXXXXXXX"; + sC3_msb <= "XXXXXXXX"; + sC3_lsb <= "XXXXXXXX"; + sC4_msb <= "XXXXXXXX"; + sC4_lsb <= "XXXXXXXX"; + sC5_msb <= "XXXXXXXX"; + sC5_lsb <= "XXXXXXXX"; + sC6_msb <= "XXXXXXXX"; + sC6_lsb <= "XXXXXXXX"; + sC7_msb <= "XXXXXXXX"; + sC7_lsb <= "XXXXXXXX"; + sA <= "XXXXXXXX"; + sB <= "XXXXXXXX"; + sC <= "XXXXXXXX"; + sD <= "XXXXXXXX"; + sD1_msb <= "XXXXXXXX"; + sD1_lsb <= "XXXXXXXX"; + sD2_msb <= "XXXXXXXX"; + sD2_lsb <= "XXXXXXXX"; + + end case; + + end if; + + end if; + + end process output_ports; + + -- Set MCLK to drive HP03 + -- + mclk_timer: process(clk) + begin + if clk'event and clk='1' then + if mclk_count=763 then + mclk_count <= 0; + mclk_int <= not mclk_int; + else + mclk_count <= mclk_count + 1; + mclk_int <= mclk_int; + end if; + end if; + end process mclk_timer; + MCLK <= mclk_int; + -- + --------------------------------------------------------------------------------- + +end rtl; diff --git a/HP_LAGO.FMT b/HP_LAGO.FMT new file mode 100644 index 0000000000000000000000000000000000000000..bdfecc1e327c2659f44196980b76980407add6ca --- /dev/null +++ b/HP_LAGO.FMT @@ -0,0 +1,735 @@ + ;*********************************************************** + ;copyright (c) 2011 + ;Title: HP03 simple example based on PicoBlaze MCU + ;Current version: v1r2 + ;Function: Calculate pressure, altitude and temperature + ;Core: KCPSM3 (Spartan3E version) + ;Clock: 50MHz Crystal (Nexys2 clock) + ;Author: Horacio Arnaldi + ;Company: CAB - IB (CNEA) + ;Contact: (+54)-2944-445500 + ;e-mail: lharnaldi@cab.cnea.gov.ar + ;Date: 2011-05-23 v1r1 + ; 2011-09-14 v1r2 + ; + ;*********************************************************** + ; + ;*********************************************************** + ;Routine declarations + ;*********************************************************** + ; IIC_ReadCalData ; + ; ReadTPAD + ; Read_Tempreture + ; Read_Pressure + ; CalculatePressTemp + ; CalculateAltitude + ; IIC_ReadByte + ; IIC_WriteByte + ; IIC_Start + ; IIC_Stop + ; IIC_ACK + ; IIC_NoAck + ; IIC_SDA_HIGH + ; IIC_SDA_LOW + ; IIC_SCL_HIGH + ; IIC_SCL_LOW + ; IIC_XCLR_LOW + ; IIC_XCLR_HIGH + ; + ;*************************************************** + ;port definitions + ;*************************************************** + CONSTANT C1_msb_port, 01 ; + CONSTANT C1_lsb_port, 02 ; + CONSTANT C2_msb_port, 03 ; + CONSTANT C2_lsb_port, 04 ; + CONSTANT C3_msb_port, 05 ; + CONSTANT C3_lsb_port, 06 ; + CONSTANT C4_msb_port, 07 ; + CONSTANT C4_lsb_port, 08 ; + CONSTANT C5_msb_port, 09 ; + CONSTANT C5_lsb_port, 0A ; + CONSTANT C6_lsb_port, 0B ; + CONSTANT C6_msb_port, 0C ; + CONSTANT C7_lsb_port, 0D ; + CONSTANT C7_msb_port, 0E ; + CONSTANT A_port, 0F ; + CONSTANT B_port, 10 ; + CONSTANT C_port, 11 ; + CONSTANT D_port, 12 ; + CONSTANT D1_msb_port, 13 ; + CONSTANT D1_lsb_port, 14 ; + CONSTANT D2_msb_port, 15 ; + CONSTANT D2_lsb_port, 16 ; + ; + CONSTANT IIC_in_port, 20 ; Read signal from HP03 device + CONSTANT IIC_out_port, 40 ; Drive signal to HP03 device (open collector) + CONSTANT SDA_wire, 01 ; Signal is bit0 in both cases + CONSTANT SCL_wire, 02 + CONSTANT XCLR, 04 + ; + ; + ;************************************************************************************** + ; Special Register usage + ;************************************************************************************** + ; + NAMEREG sF, UART_data ;used to pass data to and from the UART + ; + ; + ; + ;************************************************** + ;scratch pad memory locations + ;************************************************** + ;Values read from EEPROM + ;Compensations coefficients and ADC values + ; + CONSTANT C1_msb, 00 ;Sensitivity coefficient + CONSTANT C1_lsb, 01 + CONSTANT C2_msb, 02 ;Offset coefficient + CONSTANT C2_lsb, 03 + CONSTANT C3_msb, 04 ;Temperature Coefficient of Sensitivity + CONSTANT C3_lsb, 05 + CONSTANT C4_msb, 06 ;Temperature Coefficient of Offset + CONSTANT C4_lsb, 07 + CONSTANT C5_msb, 08 ;Reference Temperature + CONSTANT C5_lsb, 09 + CONSTANT C6_msb, 0A ;Temperature Coefficient of Temperature + CONSTANT C6_lsb, 0B + CONSTANT C7_msb, 0C ;Offset Fine Tuning + CONSTANT C7_lsb, 0D + CONSTANT A_A, 0E ;Sensor Specific Parameter + CONSTANT B_B, 0F ;Sensor Specific Parameter + CONSTANT C_C, 10 ;Sensor Specific Parameter + CONSTANT D_D, 11 ;Sensor Specific Parameter + CONSTANT D1_msb, 12 ;ADC pressure measured MSB and LSB + CONSTANT D1_lsb, 13 ; + CONSTANT D2_msb, 14 ;ADC temperature meassured MSB and LSB + CONSTANT D2_lsb, 15 ; + ; + CONSTANT IIC_control_status, 16 ;control status bits + ; + ;*************************************************** + ;data constants + ;*************************************************** + ;chip addresses + CONSTANT eeprom_addr_A0, A0 + CONSTANT eeprom_addr_A1, A1 + CONSTANT eeprom_start_addr, 10 + CONSTANT AD_addr_EE, EE + CONSTANT AD_addr_FF, FF + CONSTANT AD_addr_F0, F0 + CONSTANT AD_addr_E8, E8 + CONSTANT AD_addr_FD, FD + CONSTANT AD_addr_EF, EF + ; + CONSTANT delay_1us_constant, 0B + ; + CONSTANT CLR_SCL_MASK, FD + CONSTANT CLR_SDA_MASK, FE + CONSTANT CLR_XCLR_MASK, FB + ; + ;******************************************************************* + ;main program + ;******************************************************************* + ; It is in an infinity loop. + ; Read constants, send them just once, read ADC values, + ; wait a minute and read ADC values again and so on. + ; It continuoulsy update external registers to be read from + ; other logic. + ;****************************************************************** + cold_start: CALL IIC_init + CALL delay_20ms ;initial delay + CALL delay_20ms + CALL delay_20ms + CALL delay_20ms + CALL delay_20ms + CALL IIC_ReadCalData ;read calibration data + ; + ; + ;Main loop + ; + warm_start: CALL send_constants ; first of all, send constants + loop: CALL read_PTADC ; read AD values + CALL delay_1s ; wait for 10 seconds + CALL delay_1s + CALL delay_1s + CALL delay_1s + CALL delay_1s + CALL delay_1s + CALL delay_1s + CALL delay_1s + CALL delay_1s + CALL delay_1s + JUMP loop ; do it again! + ; + ; + ; + ;*********************************************************** + ; Initialize IIC bus + ;*********************************************************** + ; + ;This routine should be used to initialise the IIC bus. + ;The SCL clock is made high. + ;Device selections are made inactive as follows + ; SDA = 1 + ; SCL = 1 + ; XCLR = 0 Initially low + ; + ; + IIC_init: LOAD s0, 03 ;normally 03 + OUTPUT s0, IIC_out_port + STORE s0, IIC_control_status ;preserve status + RETURN + ; + ; + ;******************************************************************* + ;routine: IIC_ReadCalData + ; function: read calibration data from eeprom chip + ; output register: + ; + ; temp register: s0 + ;******************************************************************* + ; + ; + IIC_ReadCalData: CALL IIC_Start ;perform a start condition + LOAD s0, eeprom_addr_A0 + CALL IIC_WriteByte + LOAD s0, eeprom_start_addr + CALL IIC_WriteByte + CALL IIC_Start + LOAD s0, eeprom_addr_A1 + CALL IIC_WriteByte + ; + CALL IIC_ReadByte + STORE s0, C1_msb ;save C1 msb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C1_lsb ;save C1 lsb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C2_msb ;save C2 msb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C2_lsb ;save C2 lsb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C3_msb ;save C3 msb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C3_lsb ;save C3 lsb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C4_msb ;save C4 msb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C4_lsb ;save C4 lsb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C5_msb ;save C5 msb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C5_lsb ;save C5 lsb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C6_msb ;save C6 msb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C6_lsb ;save C6 lsb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C7_msb ;save C7 msb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C7_lsb ;save C7 lsb to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, A_A ;save A_A to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, B_B ;save B_B to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, C_C ;save C_C to mem + CALL IIC_ACK + ; + CALL IIC_ReadByte + STORE s0, D_D ;save D_D to mem + CALL IIC_NoACK ;no ack + CALL IIC_Stop ;stop receibing data + ; + RETURN + ; + ; + ;******************************************************************* + ;Routine: ReadPTADC + ; Function: Read D1 and D2 from HP03 + ; Input regicter: + ; Output register: + ;******************************************************************* + ; + read_PTADC: CALL IIC_XCLR_HIGH ;set XCLR + CALL delay_1ms + CALL delay_1ms + CALL read_pressure ;data in D1_msb, D1_lsb + CALL read_temperature ;data in D2_msb, D2_lsb + CALL IIC_XCLR_LOW + ; + send_pressure: FETCH s9, D1_msb + OUTPUT s9, D1_msb_port + FETCH s8, D1_lsb + OUTPUT s8, D1_lsb_port + ; + ; +send_temperature: FETCH s9, D2_msb + OUTPUT s9, D2_msb_port + FETCH s8, D2_lsb + OUTPUT s8, D2_lsb_port + RETURN + ; + ; + send_constants: FETCH s0, C1_msb + OUTPUT s0, C1_msb_port + FETCH s0, C1_lsb + OUTPUT s0, C1_lsb_port + ; + ; + FETCH s0, C2_msb + OUTPUT s0, C2_msb_port + FETCH s0, C2_lsb + OUTPUT s0, C2_lsb_port + ; + ; + FETCH s0, C3_msb + OUTPUT s0, C3_msb_port + FETCH s0, C3_lsb + OUTPUT s0, C3_lsb_port + ; + ; + FETCH s0, C4_msb + OUTPUT s0, C4_msb_port + FETCH s0, C4_lsb + OUTPUT s0, C4_lsb_port + ; + ; + FETCH s0, C5_msb + OUTPUT s0, C5_msb_port + FETCH s0, C5_lsb + OUTPUT s0, C5_lsb_port + ; + ; + FETCH s0, C6_msb + OUTPUT s0, C6_msb_port + FETCH s0, C6_lsb + OUTPUT s0, C6_lsb_port + ; + ; + FETCH s0, C7_msb + OUTPUT s0, C7_msb_port + FETCH s0, C7_lsb + OUTPUT s0, C7_lsb_port + ; + ; + FETCH s0, A_A + OUTPUT s0, A_port + ; + ; + FETCH s0, B_B + OUTPUT s0, B_port + ; + ; + FETCH s0, C_C + OUTPUT s0, C_port + ; + ; + FETCH s0, D_D + OUTPUT s0, D_port + ; + ; + RETURN + ; + ; + ;******************************************************************* + ;Routine: Read_pressure + ; Function: read pressure value from HP03 + ; Store result in D1_msb and D1_lsb registers + ; Output register: D1_msb, D1_lsb + ; Temp register: s0 + ;******************************************************************* + ; + read_pressure: CALL IIC_Start ;perform start condition + LOAD s0, AD_addr_EE ;write EE address + CALL IIC_WriteByte + LOAD s0, AD_addr_FF ;write FF address + CALL IIC_WriteByte + LOAD s0, AD_addr_F0 ;write F0 address + CALL IIC_WriteByte + CALL IIC_Stop + CALL delay_20ms ; + CALL delay_20ms + CALL IIC_Start + LOAD s0, AD_addr_EE ;write EE address + CALL IIC_WriteByte + LOAD s0, AD_addr_FD ;write FD address + CALL IIC_WriteByte + CALL IIC_Start + LOAD s0, AD_addr_EF ;write EF address + CALL IIC_WriteByte + CALL IIC_ReadByte ;read pressure MSB + STORE s0, D1_msb ;save MSB in D1_msb register + CALL IIC_ACK + CALL IIC_ReadByte ;read pressure LSB + STORE s0, D1_lsb ;save LSB in D1_lsb register + CALL IIC_NoACK + CALL IIC_Stop + RETURN + ; + ; + ;******************************************************************* + ;Routine: Read_temperature + ; Function: read pressure value from HP03 + ; Store result in D2_msb and D2_lsb registers + ; Output register: D2_msb, D2_lsb + ; Temp register: s0 + ;******************************************************************* + ; +read_temperature: CALL IIC_Start ;perform start condition + LOAD s0, AD_addr_EE ;write EE address + CALL IIC_WriteByte + LOAD s0, AD_addr_FF ;write FF address + CALL IIC_WriteByte + LOAD s0, AD_addr_E8 ;write E8 address + CALL IIC_WriteByte + CALL IIC_Stop + CALL delay_20ms ; + CALL delay_20ms ; + CALL IIC_Start + LOAD s0, AD_addr_EE ;write EE address + CALL IIC_WriteByte + LOAD s0, AD_addr_FD ;write FD address + CALL IIC_WriteByte + CALL IIC_Start + LOAD s0, AD_addr_EF ;write EF address + CALL IIC_WriteByte + CALL IIC_ReadByte ;read temperature MSB + STORE s0, D2_msb ;save MSB in D2_msb register + CALL IIC_ACK + CALL IIC_ReadByte ;read temperature LSB + STORE s0, D2_lsb ;save LSB in D2_lsb register + CALL IIC_NoACK + CALL IIC_Stop + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_ReadByte + ; function: Read a byte from iic chips + ; output register: s0 + ; + ; temp register: s2, s3 + ;******************************************************************* + ; + IIC_ReadByte: CALL IIC_SDA_HIGH ;set SDA + CALL delay_10us ;wait 10 us + LOAD s3, 08 ;load index for 8 bits + IIC_Read_Next: INPUT s2, IIC_in_port + TEST s2, SDA_wire ;test SDA state, status -> carry + SLA s0 ;Carry shifted into LSBit + CALL IIC_SCL_LOW ; + CALL delay_10us ;wait 10 us + CALL IIC_SCL_HIGH ; + CALL delay_10us ;wait 10 us + CALL delay_10us + CALL IIC_SCL_LOW + CALL delay_10us + SUB s3, 01 + JUMP NZ, IIC_Read_Next + RETURN + ; + ; + ;************************************************************************ + ;Routine: IIC_WriteByte + ; function: write a byte to iic chips + ; input register: s0 + ; + ; temp register: s2 + ;******************************************************************* + IIC_WriteByte: LOAD s2, 08 ;initialize loop index to 8 + ; + IIC_Write_Next: CALL IIC_SCL_LOW + CALL delay_10us + SL0 s0 ; Move data bit -> carry + JUMP C, IIC_Send1 ; Jump if bit high + ; + IIC_Send0: CALL IIC_SDA_LOW ; Set to output, data low so SDA = 0 + CALL delay_10us ; reflect in output + JUMP I2C_Sx ; Jump over next instruction + ; + IIC_Send1: CALL IIC_SDA_HIGH ; Set to input, SDA = 1 due to pull-up + CALL delay_10us ; reflect in output + ; + I2C_Sx: CALL IIC_SCL_HIGH + CALL delay_10us + CALL IIC_SCL_LOW + SUB s2, 01 ; Decrement I2C bit counter + JUMP NZ, IIC_Write_Next ; Loop until 8 bits are sent + ; + CALL IIC_SDA_HIGH + CALL delay_10us + CALL IIC_SCL_LOW + CALL delay_10us + CALL IIC_SCL_HIGH + CALL delay_10us + CALL IIC_SCL_LOW + CALL delay_10us + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_Start + ; function: perform a start condition + ;******************************************************************* + IIC_Start: CALL IIC_SDA_HIGH + CALL delay_10us + CALL IIC_SCL_HIGH + CALL delay_10us + CALL IIC_SDA_LOW + CALL delay_10us + CALL IIC_SCL_LOW + CALL delay_10us + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_Stop + ; function: perform a stop condition + ;******************************************************************* + IIC_Stop: CALL IIC_SCL_LOW + CALL delay_10us + CALL IIC_SDA_LOW + CALL delay_10us + CALL IIC_SCL_HIGH + CALL delay_10us + CALL IIC_SDA_HIGH + CALL delay_10us + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_ACK + ; function: perform an ack condition + ;******************************************************************* + IIC_ACK: CALL IIC_SDA_LOW + CALL delay_10us + CALL IIC_SCL_HIGH + CALL delay_10us + CALL IIC_SCL_LOW + CALL delay_10us + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_NoACK + ; function: perform an nack condition + ;******************************************************************* + IIC_NoACK: CALL IIC_SDA_HIGH + CALL delay_10us + CALL IIC_SCL_HIGH + CALL delay_10us + CALL IIC_SCL_LOW + CALL delay_10us + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_SDA_HIGH + ; function: set SDA + ; input register: IIC_control_status + ; output register: IIC_port + ; + ; temp register: s1 + ;******************************************************************* + IIC_SDA_HIGH: FETCH s1, IIC_control_status ;read control status bits + OR s1, SDA_wire ;set SDA pin + OUTPUT s1, IIC_out_port + STORE s1, IIC_control_status ;preserve status + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_SDA_LOW + ; function: clear SDA + ; input register: IIC_control_status + ; output register: IIC_out_port + ; + ; temp register: s1 + ;******************************************************************* + IIC_SDA_LOW: FETCH s1, IIC_control_status ;read control status bits + AND s1, CLR_SDA_MASK ;clear SDA pin + OUTPUT s1, IIC_out_port + STORE s1, IIC_control_status ;preserve status + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_SCL_HIGH + ; function: set SCL + ; input register: s0 + ; output register: + ; + ; temp register: i + ;******************************************************************* + IIC_SCL_HIGH: FETCH s1, IIC_control_status ;read control status bits + OR s1, SCL_wire ;set SCL pin + OUTPUT s1, IIC_out_port + STORE s1, IIC_control_status ;preserve status + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_SCL_LOW + ; function: set SDA + ; temp register: s1 + ;******************************************************************* + IIC_SCL_LOW: FETCH s1, IIC_control_status ;read control status bits + AND s1, CLR_SCL_MASK ;clear SCL pin + OUTPUT s1, IIC_out_port + STORE s1, IIC_control_status ;preserve status + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_XCLR_HIGH + ; function: set XCLR + ; input register: s0 + ; output register: + ; + ; temp register: i + ;******************************************************************* + IIC_XCLR_HIGH: FETCH s1, IIC_control_status ;read control status bits + OR s1, XCLR ;set XCLR pin + OUTPUT s1, IIC_out_port + STORE s1, IIC_control_status ;preserve status + RETURN + ; + ; + ;******************************************************************* + ;Routine: IIC_XCLR_LOW + ; function: clear XCLR + ; input register: s0 + ; output register: + ; + ; temp register: i + ;******************************************************************* + IIC_XCLR_LOW: FETCH s1, IIC_control_status ;read control status bits + AND s1, CLR_XCLR_MASK ;clear SCL pin + OUTPUT s1, IIC_out_port + STORE s1, IIC_control_status ;preserve status + RETURN + ; + ; + ;************************************************************************************** + ; Software delay Routines + ;************************************************************************************** + ; + ; Delay of 1us. + ; + ; Constant value defines reflects the clock applied to KCPSM3. Every instruction + ; executes in 2 clock cycles making the calculation highly predictable. The '6' in + ; the following equation even allows for 'CALL delay_1us' instruction in the initiating code. + ; + ; delay_1us_constant = (clock_rate - 6)/4 Where 'clock_rate' is in MHz + ; + ; Register used sA + ; + delay_1us: LOAD sA, delay_1us_constant + wait_1us: SUB sA, 01 + JUMP NZ, wait_1us + RETURN + ; + ; Delay of 10 us + ; + ; Registers used sA, sB + ; + delay_10us: LOAD sB, 0A ;10 x 1us = 10us + wait_10us: CALL delay_1us + SUB sB, 01 + JUMP NZ, wait_10us + RETURN + ; + ; Delay of 40us. + ; + ; Registers used sA, sB + ; + delay_40us: LOAD sB, 28 ;40 x 1us = 40us + wait_40us: CALL delay_1us + SUB sB, 01 + JUMP NZ, wait_40us + RETURN + ; + ; + ; Delay of 1ms. + ; + ; Registers used sA, sB, sC + ; + delay_1ms: LOAD sC, 19 ;25 x 40us = 1ms + wait_1ms: CALL delay_40us + SUB sC, 01 + JUMP NZ, wait_1ms + RETURN + ; + ; Delay of 20ms. + ; + ; Registers used sA, sB, sC, sD + ; + delay_20ms: LOAD sD, 14 ;20 x 1ms = 20ms + wait_20ms: CALL delay_1ms + SUB sD, 01 + JUMP NZ, wait_20ms + RETURN + ; + ; Delay of approximately 1 second. + ; + ; Registers used sA, sB, sC, sD, sE + ; + delay_1s: LOAD sE, 14 ;50 x 20ms = 1000ms + wait_1s: CALL delay_20ms + SUB sE, 01 + JUMP NZ, wait_1s + RETURN + ; + ; + ; + ;************************************************************************************** + ; Interrupt Service Routine (ISR) + ;************************************************************************************** + ; + ; Interrupts are not used in this design. This is a place keeper only. + ; + ADDRESS 3FE + ISR: RETURNI ENABLE + ; + ; + ;************************************************************************************** + ; Interrupt Vector + ;************************************************************************************** + ; + ADDRESS 3FF + JUMP ISR + ; + ; diff --git a/HP_LAGO.VHD b/HP_LAGO.VHD new file mode 100755 index 0000000000000000000000000000000000000000..abcfb17d1adf07dc9b3e3807ece3827744c3c1e5 --- /dev/null +++ b/HP_LAGO.VHD @@ -0,0 +1,274 @@ +-- +-- Definition of a single port ROM for KCPSM3 program defined by hp_lago.psm +-- +-- Generated by KCPSM3 Assembler 03Oct2011-14:33:25. +-- +-- Standard IEEE libraries +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +-- +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +library unisim; +use unisim.vcomponents.all; +-- +-- +entity hp_lago is + Port ( address : in std_logic_vector(9 downto 0); + instruction : out std_logic_vector(17 downto 0); + clk : in std_logic); + end hp_lago; +-- +architecture low_level_definition of hp_lago is +-- +-- Attributes to define ROM contents during implementation synthesis. +-- The information is repeated in the generic map for functional simulation +-- +attribute INIT_00 : string; +attribute INIT_01 : string; +attribute INIT_02 : string; +attribute INIT_03 : string; +attribute INIT_04 : string; +attribute INIT_05 : string; +attribute INIT_06 : string; +attribute INIT_07 : string; +attribute INIT_08 : string; +attribute INIT_09 : string; +attribute INIT_0A : string; +attribute INIT_0B : string; +attribute INIT_0C : string; +attribute INIT_0D : string; +attribute INIT_0E : string; +attribute INIT_0F : string; +attribute INIT_10 : string; +attribute INIT_11 : string; +attribute INIT_12 : string; +attribute INIT_13 : string; +attribute INIT_14 : string; +attribute INIT_15 : string; +attribute INIT_16 : string; +attribute INIT_17 : string; +attribute INIT_18 : string; +attribute INIT_19 : string; +attribute INIT_1A : string; +attribute INIT_1B : string; +attribute INIT_1C : string; +attribute INIT_1D : string; +attribute INIT_1E : string; +attribute INIT_1F : string; +attribute INIT_20 : string; +attribute INIT_21 : string; +attribute INIT_22 : string; +attribute INIT_23 : string; +attribute INIT_24 : string; +attribute INIT_25 : string; +attribute INIT_26 : string; +attribute INIT_27 : string; +attribute INIT_28 : string; +attribute INIT_29 : string; +attribute INIT_2A : string; +attribute INIT_2B : string; +attribute INIT_2C : string; +attribute INIT_2D : string; +attribute INIT_2E : string; +attribute INIT_2F : string; +attribute INIT_30 : string; +attribute INIT_31 : string; +attribute INIT_32 : string; +attribute INIT_33 : string; +attribute INIT_34 : string; +attribute INIT_35 : string; +attribute INIT_36 : string; +attribute INIT_37 : string; +attribute INIT_38 : string; +attribute INIT_39 : string; +attribute INIT_3A : string; +attribute INIT_3B : string; +attribute INIT_3C : string; +attribute INIT_3D : string; +attribute INIT_3E : string; +attribute INIT_3F : string; +attribute INITP_00 : string; +attribute INITP_01 : string; +attribute INITP_02 : string; +attribute INITP_03 : string; +attribute INITP_04 : string; +attribute INITP_05 : string; +attribute INITP_06 : string; +attribute INITP_07 : string; +-- +-- Attributes to define ROM contents during implementation synthesis. +-- +attribute INIT_00 of ram_1024_x_18 : label is "00DFA000E016C040000340080135004F005E000F01300130013001300130000B"; +attribute INIT_01 of ram_1024_x_18 : label is "00F1E00200B700F1E00100B700F1E00000B700C700A100DF00C7001000C700A0"; +attribute INIT_02 of ram_1024_x_18 : label is "00B700F1E00700B700F1E00600B700F1E00500B700F1E00400B700F1E00300B7"; +attribute INIT_03 of ram_1024_x_18 : label is "E00D00B700F1E00C00B700F1E00B00B700F1E00A00B700F1E00900B700F1E008"; +attribute INIT_04 of ram_1024_x_18 : label is "0113A00000E800F8E01100B700F1E01000B700F1E00F00B700F1E00E00B700F1"; +attribute INIT_05 of ram_1024_x_18 : label is "C0016000A000C8166815C9156914C8146813C91369120118009D0083012B012B"; +attribute INIT_06 of ram_1024_x_18 : label is "C0096008C0086007C0076006C0066005C0056004C0046003C0036002C0026001"; +attribute INIT_07 of ram_1024_x_18 : label is "C0116010C010600FC00F600EC00D600DC00E600CC00B600BC00C600AC00A6009"; +attribute INIT_08 of ram_1024_x_18 : label is "00C700EE00DF0130013000E800C700F000C700FF00C700EE00DFA000C0126011"; +attribute INIT_09 of ram_1024_x_18 : label is "00C700EE00DFA00000E800F8E01300B700F1E01200B700C700EF00DF00C700FD"; +attribute INIT_0A of ram_1024_x_18 : label is "00B700C700EF00DF00C700FD00C700EE00DF0130013000E800C700E800C700FF"; +attribute INIT_0B of ram_1024_x_18 : label is "01090121010E0000220142200308012100FFA00000E800F8E01500B700F1E014"; +attribute INIT_0C of ram_1024_x_18 : label is "00FF40D10121010458CF00060121010E0208A00054BAC3010121010E01210121"; +attribute INIT_0D of ram_1024_x_18 : label is "00FFA0000121010E012101090121010E012100FF54C8C201010E012101090121"; +attribute INIT_0E of ram_1024_x_18 : label is "012100FF01210109012101040121010EA0000121010E01210104012101090121"; +attribute INIT_0F of ram_1024_x_18 : label is "6116A0000121010E01210109012100FFA0000121010E0121010901210104A000"; +attribute INIT_10 of ram_1024_x_18 : label is "A1FD6116A000E116C140C1026116A000E116C140A1FE6116A000E116C140C101"; +attribute INIT_11 of ram_1024_x_18 : label is "551ECA010A0BA000E116C140A1FB6116A000E116C140C1046116A000E116C140"; +attribute INIT_12 of ram_1024_x_18 : label is "A000552CCC0101260C19A0005527CB01011D0B28A0005522CB01011D0B0AA000"; +attribute INIT_13 of ram_1024_x_18 : label is "000000000000000000000000A0005536CE0101300E14A0005531CD01012B0D14"; +attribute INIT_14 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_15 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_16 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_17 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_18 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_19 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_1A of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_1B of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_1C of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_1D of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_1E of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_1F of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_20 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_21 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_22 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_23 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_24 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_25 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_26 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_27 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_28 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_29 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2A of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2B of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2C of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2D of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2E of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_2F of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_30 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_31 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_32 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_33 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_34 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_35 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_36 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_37 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_38 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_39 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3A of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3B of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3C of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3D of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3E of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INIT_3F of ram_1024_x_18 : label is "43FE800100000000000000000000000000000000000000000000000000000000"; +attribute INITP_00 of ram_1024_x_18 : label is "88888888888888888A2223FFEFBEFBEFBEFBEFBEFBEFBEFBEFBEF3CCEA3FFFFF"; +attribute INITP_01 of ram_1024_x_18 : label is "2FFFBFFEFFFFBFFFEFFFFDFFFFEF2DFFFE43EFBEF3CCFFCCCEFBEF3CCFFCCCE8"; +attribute INITP_02 of ram_1024_x_18 : label is "00000000000000000000000000000000000B72DCB72DCB72D2A0A82A0A82A0A8"; +attribute INITP_03 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INITP_04 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INITP_05 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INITP_06 of ram_1024_x_18 : label is "0000000000000000000000000000000000000000000000000000000000000000"; +attribute INITP_07 of ram_1024_x_18 : label is "F000000000000000000000000000000000000000000000000000000000000000"; +-- +begin +-- + --Instantiate the Xilinx primitive for a block RAM + ram_1024_x_18: RAMB16_S18 + --synthesis translate_off + --INIT values repeated to define contents for functional simulation + generic map ( INIT_00 => X"00DFA000E016C040000340080135004F005E000F01300130013001300130000B", + INIT_01 => X"00F1E00200B700F1E00100B700F1E00000B700C700A100DF00C7001000C700A0", + INIT_02 => X"00B700F1E00700B700F1E00600B700F1E00500B700F1E00400B700F1E00300B7", + INIT_03 => X"E00D00B700F1E00C00B700F1E00B00B700F1E00A00B700F1E00900B700F1E008", + INIT_04 => X"0113A00000E800F8E01100B700F1E01000B700F1E00F00B700F1E00E00B700F1", + INIT_05 => X"C0016000A000C8166815C9156914C8146813C91369120118009D0083012B012B", + INIT_06 => X"C0096008C0086007C0076006C0066005C0056004C0046003C0036002C0026001", + INIT_07 => X"C0116010C010600FC00F600EC00D600DC00E600CC00B600BC00C600AC00A6009", + INIT_08 => X"00C700EE00DF0130013000E800C700F000C700FF00C700EE00DFA000C0126011", + INIT_09 => X"00C700EE00DFA00000E800F8E01300B700F1E01200B700C700EF00DF00C700FD", + INIT_0A => X"00B700C700EF00DF00C700FD00C700EE00DF0130013000E800C700E800C700FF", + INIT_0B => X"01090121010E0000220142200308012100FFA00000E800F8E01500B700F1E014", + INIT_0C => X"00FF40D10121010458CF00060121010E0208A00054BAC3010121010E01210121", + INIT_0D => X"00FFA0000121010E012101090121010E012100FF54C8C201010E012101090121", + INIT_0E => X"012100FF01210109012101040121010EA0000121010E01210104012101090121", + INIT_0F => X"6116A0000121010E01210109012100FFA0000121010E0121010901210104A000", + INIT_10 => X"A1FD6116A000E116C140C1026116A000E116C140A1FE6116A000E116C140C101", + INIT_11 => X"551ECA010A0BA000E116C140A1FB6116A000E116C140C1046116A000E116C140", + INIT_12 => X"A000552CCC0101260C19A0005527CB01011D0B28A0005522CB01011D0B0AA000", + INIT_13 => X"000000000000000000000000A0005536CE0101300E14A0005531CD01012B0D14", + INIT_14 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_15 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_16 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_17 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_18 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_19 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_1F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_20 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_21 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_22 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_23 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_24 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_25 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_26 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_27 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_28 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_29 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_2F => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_30 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_31 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_32 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_33 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_34 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_35 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_36 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_37 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_38 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_39 => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3A => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3B => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3C => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3D => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000", + INIT_3F => X"43FE800100000000000000000000000000000000000000000000000000000000", + INITP_00 => X"88888888888888888A2223FFEFBEFBEFBEFBEFBEFBEFBEFBEFBEF3CCEA3FFFFF", + INITP_01 => X"2FFFBFFEFFFFBFFFEFFFFDFFFFEF2DFFFE43EFBEF3CCFFCCCEFBEF3CCFFCCCE8", + INITP_02 => X"00000000000000000000000000000000000B72DCB72DCB72D2A0A82A0A82A0A8", + INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000", + INITP_07 => X"F000000000000000000000000000000000000000000000000000000000000000") + --synthesis translate_on + port map( DI => "0000000000000000", + DIP => "00", + EN => '1', + WE => '0', + SSR => '0', + CLK => clk, + ADDR => address, + DO => instruction(15 downto 0), + DOP => instruction(17 downto 16)); +-- +end low_level_definition; +-- +------------------------------------------------------------------------------------ +-- +-- END OF FILE hp_lago.vhd +-- +------------------------------------------------------------------------------------ diff --git a/Makefile b/Makefile new file mode 100755 index 0000000000000000000000000000000000000000..c5f3e5158c1a0e0bf09eaf08ae036727c43c5a34 --- /dev/null +++ b/Makefile @@ -0,0 +1,94 @@ +#======================================================== +# Makefile para crear firmwares para las placas Nexys2 = +# = +# Es necesario correr al menos una vez el proyecto en = +# soft ISE de Xilinx y luego, a partir de allà realizar = +# proyectos con este make. = +# Para seleccionar si se quiere grabar el firmware en = +# la FPGA o en la memoria EEPROM, es necesario correr = +# = +# make STARTUP_CLK=x = +# Donde x puede ser jtag o cclk = +# = +# Horacio Arnaldi = +# DPR Lab = +# 05/12/2011 = +# Última revisión: 19/01/2012 = +# = +#======================================================== +TOP_LEVEL = lago_fpga_vhdl +GATES = 500 +PLATFORM = nexys2_$(GATES) +STARTUP_CLK = jtag + +ifeq ($(PLATFORM),nexys2_500) + FPGA = xc3s500e-fg320-4 +endif +ifeq ($(PLATFORM),nexys2_1200) + FPGA = xc3s1200e-fg320-4 +endif +ifeq ($(STARTUP_CLK),jtag) + CLOCK = JtagClk + +endif +ifeq ($(STARTUP_CLK),cclk) + CLOCK = CClk +endif + +all: $(TOP_LEVEL).xsvf + +report: $(TOP_LEVEL).twr + +# This assumes that the "XILINX" environment variable is set +$(TOP_LEVEL).xsvf: $(PLATFORM).batch $(TOP_LEVEL).bit + cat $< | sed s#\$${XILINX}#$(subst \,/,$(XILINX))#g > temp.batch + impact -batch temp.batch + rm -f temp.batch + +$(TOP_LEVEL).bit: $(TOP_LEVEL).ut $(TOP_LEVEL).ncd + bitgen -intstyle ise -f $+ + +$(TOP_LEVEL).twr: $(TOP_LEVEL).ncd $(TOP_LEVEL).ucf + trce -intstyle ise -v 3 -s 4 -n 3 -fastpaths -xml ${TOP_LEVEL}.twx $< -o $@ ${TOP_LEVEL}.pcf -ucf $(TOP_LEVEL).ucf + +$(TOP_LEVEL).ncd: $(TOP_LEVEL)_map.ncd + par -w -intstyle ise -ol high -t 1 $< $@ ${TOP_LEVEL}.pcf + +$(TOP_LEVEL)_map.ncd: $(TOP_LEVEL).ngd + map -intstyle ise -p $(FPGA) -cm area -ir off -pr off -c 100 -o $@ $< ${TOP_LEVEL}.pcf + +$(TOP_LEVEL).ngd: $(TOP_LEVEL).ngc $(TOP_LEVEL).ucf + ngdbuild -intstyle ise -dd _ngo -sd ipcore_dir -nt timestamp -uc $(TOP_LEVEL).ucf -p $(FPGA) $< $@ + +$(TOP_LEVEL).ngc: $(TOP_LEVEL).xst $(TOP_LEVEL).prj + mkdir -p xst/projnav.tmp + xst -intstyle ise -ifn $< -ofn $(TOP_LEVEL).syr + +$(TOP_LEVEL).ut: + echo "-w" > $@ + echo "-g DebugBitstream:No" >> $@ + echo "-g Binary:no" >> $@ + echo "-g CRC:Enable" >> $@ + echo "-g ConfigRate:1" >> $@ + echo "-g ProgPin:PullUp" >> $@ + echo "-g DonePin:PullUp" >> $@ + echo "-g TckPin:PullUp" >> $@ + echo "-g TdiPin:PullUp" >> $@ + echo "-g TdoPin:PullUp" >> $@ + echo "-g TmsPin:PullUp" >> $@ + echo "-g UnusedPin:PullDown" >> $@ + echo "-g UserID:0xFFFFFFFF" >> $@ + echo "-g DCMShutdown:Disable" >> $@ + echo "-g StartUpClk:$(CLOCK)" >> $@ + echo "-g DONE_cycle:4" >> $@ + echo "-g GTS_cycle:5" >> $@ + echo "-g GWE_cycle:6" >> $@ + echo "-g LCK_cycle:NoWait" >> $@ + echo "-g Security:None" >> $@ + echo "-g DonePipe:No" >> $@ + echo "-g DriveDone:No" >> $@ + +clean: FORCE + rm -rf *.ut *.xsvf *.csvf _ngo *.bgn *.drc *.ncd *.ntrc_log *.twr *.csv *.html fx2fpga_xdb _xmsgs *.bit *.gise *.ngc *.pad *.ptwx *.twx *.ngm *.txt *.xml *.xrpt *.bld *.ise *.ngd *.par *.stx *.map *.twr auto_project_xdb *.cmd_log *.lso *.ngr *.pcf *.syr *.unroutes *.xpi *.mrp xst *.log *.cmd *.xwbt iseconfig xlnx_auto_0_xdb + +FORCE: diff --git a/baseline.vhd b/baseline.vhd new file mode 100644 index 0000000000000000000000000000000000000000..43ab3aea33c8d215e45f7deedfe115c4fd13a685 --- /dev/null +++ b/baseline.vhd @@ -0,0 +1,142 @@ +library ieee; +use ieee.std_logic_1164.ALL; +use ieee.numeric_std.all; +-- +entity baseline_control is + generic( + W : natural; --:=5; -- numero de bits de direcciones. 2**W = 32 direcciones para W=5 + ADCBITS : natural; -- := 10; -- numero de bits en los datos + RBITS : natural; -- := 12; -- numero de bits de los registros + REFRESH_RATE : natural; -- := 80000; -- 80000 clk implican un refresh rate de 2ms (80000 * 25 ns = 2ms) + NCH : natural --:= 3 -- numero de canales de la electronica + ); + + port( + clk_40mhz : in std_logic; + reset : in std_logic; + ptick_2ms : out std_logic; + data_adc1 : in std_logic_vector(ADCBITS-1 downto 0); + data_adc2 : in std_logic_vector(ADCBITS-1 downto 0); + data_adc3 : in std_logic_vector(ADCBITS-1 downto 0); + baseline1 : out std_logic_vector(RBITS-1 downto 0); + baseline2 : out std_logic_vector(RBITS-1 downto 0); + baseline3 : out std_logic_vector(RBITS-1 downto 0) + ); +end baseline_control; + +architecture rtl of baseline_control is + + signal cont_promedio_reg, cont_promedio_next : unsigned((2**W-1) downto 0); + signal adc1_sum_reg, adc1_sum_next : unsigned((2**W-1) downto 0); + signal adc2_sum_reg, adc2_sum_next : unsigned((2**W-1) downto 0); + signal adc3_sum_reg, adc3_sum_next : unsigned((2**W-1) downto 0); + signal adc1_prom_reg, adc1_prom_next : unsigned((2**W-1) downto 0); + signal adc2_prom_reg, adc2_prom_next : unsigned((2**W-1) downto 0); + signal adc3_prom_reg, adc3_prom_next : unsigned((2**W-1) downto 0); + signal baseline1_buff_reg, baseline1_buff_next : unsigned((RBITS-1) downto 0); + signal baseline2_buff_reg, baseline2_buff_next : unsigned((RBITS-1) downto 0); + signal baseline3_buff_reg, baseline3_buff_next : unsigned((RBITS-1) downto 0); + signal max_tick : std_logic; + +begin + + ptick_2ms <= max_tick; + --registers + process(clk_40mhz, reset) + begin + if (reset = '1') then + cont_promedio_reg <= (others => '0'); + adc1_sum_reg <= (others => '0'); + adc2_sum_reg <= (others => '0'); + adc3_sum_reg <= (others => '0'); + adc1_prom_reg <= (others => '0'); + adc2_prom_reg <= (others => '0'); + adc3_prom_reg <= (others => '0'); + baseline1_buff_reg <= (others => '0'); + baseline2_buff_reg <= (others => '0'); + baseline3_buff_reg <= (others => '0'); + elsif (clk_40mhz'event and clk_40mhz = '1') then + cont_promedio_reg <= cont_promedio_next; + adc1_sum_reg <= adc1_sum_next; + adc2_sum_reg <= adc2_sum_next; + adc3_sum_reg <= adc3_sum_next; + adc1_prom_reg <= adc1_prom_next; + adc2_prom_reg <= adc2_prom_next; + adc3_prom_reg <= adc3_prom_next; + baseline1_buff_reg <= baseline1_buff_next; + baseline2_buff_reg <= baseline2_buff_next; + baseline3_buff_reg <= baseline3_buff_next; + end if; + end process; + + --next state logic + cont_promedio_next <= (others => '0') when (cont_promedio_reg = (REFRESH_RATE-1)) else + cont_promedio_reg + 1; + + max_tick <= '1' when (cont_promedio_reg = (REFRESH_RATE-1)) else '0'; + + adc1_sum_next <= (others => '0') when (max_tick = '1') else + adc1_sum_reg + unsigned(data_adc1); + adc2_sum_next <= (others => '0') when (max_tick = '1') else + adc2_sum_reg + unsigned(data_adc2); + adc3_sum_next <= (others => '0') when (max_tick = '1') else + adc3_sum_reg + unsigned(data_adc3); + + adc1_prom_next <= adc1_sum_reg when (max_tick = '1') else + adc1_prom_reg; + adc2_prom_next <= adc2_sum_reg when (max_tick = '1') else + adc2_prom_reg; + adc3_prom_next <= adc3_sum_reg when (max_tick = '1') else + adc3_prom_reg; + + process(max_tick, adc1_prom_reg) + begin + if (max_tick = '1') then + if (adc1_prom_reg > 4000000) then --4000000 = 50*80000, con 50 el nivel de baseline buscado + baseline1_buff_next <= baseline1_buff_reg + 1; + elsif (adc1_prom_reg < 4000000) then + baseline1_buff_next <= baseline1_buff_reg - 1; + else + baseline1_buff_next <= baseline1_buff_reg; + end if; + else + baseline1_buff_next <= baseline1_buff_reg; + end if; + end process; + + process(max_tick, adc2_prom_reg) + begin + if (max_tick = '1') then + if (adc2_prom_reg > 4000000) then + baseline2_buff_next <= baseline2_buff_reg + 1; + elsif (adc2_prom_reg < 4000000) then + baseline2_buff_next <= baseline2_buff_reg - 1; + else + baseline2_buff_next <= baseline2_buff_reg; + end if; + else + baseline2_buff_next <= baseline2_buff_reg; + end if; + end process; + + process(max_tick, adc3_prom_reg) + begin + if (max_tick = '1') then + if (adc3_prom_reg > 4000000) then + baseline3_buff_next <= baseline3_buff_reg + 1; + elsif (adc3_prom_reg < 4000000) then + baseline3_buff_next <= baseline3_buff_reg - 1; + else + baseline3_buff_next <= baseline3_buff_reg; + end if; + else + baseline3_buff_next <= baseline3_buff_reg; + end if; + end process; + + -- output + baseline1 <= std_logic_vector(baseline1_buff_reg); + baseline2 <= std_logic_vector(baseline2_buff_reg); + baseline3 <= std_logic_vector(baseline3_buff_reg); + +end architecture; diff --git a/baseline_control.prj b/baseline_control.prj new file mode 100644 index 0000000000000000000000000000000000000000..17d52a9640d9e9876eb713e7ec7839528068010e --- /dev/null +++ b/baseline_control.prj @@ -0,0 +1 @@ +vhdl work "baseline.vhd" diff --git a/baseline_control.xst b/baseline_control.xst new file mode 100644 index 0000000000000000000000000000000000000000..e87063a4525b29b13761c12c13bde1a5905ca69a --- /dev/null +++ b/baseline_control.xst @@ -0,0 +1,5 @@ +set -tmpdir "/home/horacio/work/lago/lago-fpga-vhdl/xst/projnav.tmp" +set -xsthdpdir "/home/horacio/work/lago/lago-fpga-vhdl/xst" +elaborate +-ifn baseline_control.prj +-ifmt mixed diff --git a/bbfifo_16x8.vhd b/bbfifo_16x8.vhd new file mode 100644 index 0000000000000000000000000000000000000000..8ef61e6bee3059ad47eeb7cd0fa31859620cb0a1 --- /dev/null +++ b/bbfifo_16x8.vhd @@ -0,0 +1,281 @@ +-- 'Bucket Brigade' FIFO +-- 16 deep +-- 8-bit data +-- +-- Version : 1.10 +-- Version Date : 3rd December 2003 +-- Reason : '--translate' directives changed to '--synthesis translate' directives +-- +-- Version : 1.00 +-- Version Date : 14th October 2002 +-- +-- Start of design entry : 14th October 2002 +-- +-- Ken Chapman +-- Xilinx Ltd +-- Benchmark House +-- 203 Brooklands Road +-- Weybridge +-- Surrey KT13 ORH +-- United Kingdom +-- +-- chapman@xilinx.com +-- +------------------------------------------------------------------------------------ +-- +-- NOTICE: +-- +-- Copyright Xilinx, Inc. 2002. This code may be contain portions patented by other +-- third parties. By providing this core as one possible implementation of a standard, +-- Xilinx is making no representation that the provided implementation of this standard +-- is free from any claims of infringement by any third party. Xilinx expressly +-- disclaims any warranty with respect to the adequacy of the implementation, including +-- but not limited to any warranty or representation that the implementation is free +-- from claims of any third party. Futhermore, Xilinx is providing this core as a +-- courtesy to you and suggests that you contact all third parties to obtain the +-- necessary rights to use this implementation. +-- +------------------------------------------------------------------------------------ +-- +-- Library declarations +-- +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library unisim; +use unisim.vcomponents.all; +-- +------------------------------------------------------------------------------------ +-- +-- Main Entity for BBFIFO_16x8 +-- +entity bbfifo_16x8 is + Port ( data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + reset : in std_logic; + write : in std_logic; + read : in std_logic; + full : out std_logic; + half_full : out std_logic; + data_present : out std_logic; + clk : in std_logic); + end bbfifo_16x8; +-- +------------------------------------------------------------------------------------ +-- +-- Start of Main Architecture for BBFIFO_16x8 +-- +architecture low_level_definition of bbfifo_16x8 is +-- +------------------------------------------------------------------------------------ +-- +------------------------------------------------------------------------------------ +-- +-- Signals used in BBFIFO_16x8 +-- +------------------------------------------------------------------------------------ +-- +signal pointer : std_logic_vector(3 downto 0); +signal next_count : std_logic_vector(3 downto 0); +signal half_count : std_logic_vector(3 downto 0); +signal count_carry : std_logic_vector(2 downto 0); + +signal pointer_zero : std_logic; +signal pointer_full : std_logic; +signal decode_data_present : std_logic; +signal data_present_int : std_logic; +signal valid_write : std_logic; +-- +-- +------------------------------------------------------------------------------------ +-- +-- Attributes to define LUT contents during implementation +-- The information is repeated in the generic map for functional simulation-- +-- +------------------------------------------------------------------------------------ +-- +attribute INIT : string; +attribute INIT of zero_lut : label is "0001"; +attribute INIT of full_lut : label is "8000"; +attribute INIT of dp_lut : label is "BFA0"; +attribute INIT of valid_lut : label is "C4"; +-- +------------------------------------------------------------------------------------ +-- +-- Start of BBFIFO_16x8 circuit description +-- +------------------------------------------------------------------------------------ +-- +begin + + -- SRL16E data storage + + data_width_loop: for i in 0 to 7 generate + -- + attribute INIT : string; + attribute INIT of data_srl : label is "0000"; + -- + begin + + data_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => data_in(i), + CE => valid_write, + CLK => clk, + A0 => pointer(0), + A1 => pointer(1), + A2 => pointer(2), + A3 => pointer(3), + Q => data_out(i) ); + + end generate data_width_loop; + + -- 4-bit counter to act as data pointer + -- Counter is clock enabled by 'data_present' + -- Counter will be reset when 'reset' is active + -- Counter will increment when 'valid_write' is active + + count_width_loop: for i in 0 to 3 generate + -- + attribute INIT : string; + attribute INIT of count_lut : label is "6606"; + -- + begin + + register_bit: FDRE + port map ( D => next_count(i), + Q => pointer(i), + CE => data_present_int, + R => reset, + C => clk); + + count_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"6606") + --synthesis translate_on + port map( I0 => pointer(i), + I1 => read, + I2 => pointer_zero, + I3 => write, + O => half_count(i)); + + lsb_count: if i=0 generate + begin + + count_muxcy: MUXCY + port map( DI => pointer(i), + CI => valid_write, + S => half_count(i), + O => count_carry(i)); + + count_xor: XORCY + port map( LI => half_count(i), + CI => valid_write, + O => next_count(i)); + + end generate lsb_count; + + mid_count: if i>0 and i<3 generate + begin + + count_muxcy: MUXCY + port map( DI => pointer(i), + CI => count_carry(i-1), + S => half_count(i), + O => count_carry(i)); + + count_xor: XORCY + port map( LI => half_count(i), + CI => count_carry(i-1), + O => next_count(i)); + + end generate mid_count; + + upper_count: if i=3 generate + begin + + count_xor: XORCY + port map( LI => half_count(i), + CI => count_carry(i-1), + O => next_count(i)); + + end generate upper_count; + + end generate count_width_loop; + + + -- Detect when pointer is zero and maximum + + zero_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0001") + --synthesis translate_on + port map( I0 => pointer(0), + I1 => pointer(1), + I2 => pointer(2), + I3 => pointer(3), + O => pointer_zero ); + + + full_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"8000") + --synthesis translate_on + port map( I0 => pointer(0), + I1 => pointer(1), + I2 => pointer(2), + I3 => pointer(3), + O => pointer_full ); + + + -- Data Present status + + dp_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"BFA0") + --synthesis translate_on + port map( I0 => write, + I1 => read, + I2 => pointer_zero, + I3 => data_present_int, + O => decode_data_present ); + + dp_flop: FDR + port map ( D => decode_data_present, + Q => data_present_int, + R => reset, + C => clk); + + -- Valid write signal + + valid_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"C4") + --synthesis translate_on + port map( I0 => pointer_full, + I1 => write, + I2 => read, + O => valid_write ); + + + -- assign internal signals to outputs + + full <= pointer_full; + half_full <= pointer(3); + data_present <= data_present_int; + +end low_level_definition; + +------------------------------------------------------------------------------------ +-- +-- END OF FILE BBFIFO_16x8.VHD +-- +------------------------------------------------------------------------------------ + + diff --git a/clk_40mhz.v b/clk_40mhz.v new file mode 100755 index 0000000000000000000000000000000000000000..a38a628f3489f70467e4827b7624e0bb08fc7c36 --- /dev/null +++ b/clk_40mhz.v @@ -0,0 +1,66 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 09:14:13 05/06/2011 +// Design Name: +// Module Name: clk_40mhz +// Project Name: +// Target Devices: +// Tool versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// +module clk_40mhz(clk_50mhz,clk_40mhz); + +//Entradas +input wire clk_50mhz; + +//Salidas +output reg clk_40mhz; + +//Variables Internas +wire clk_200mhz; +reg [7:0] contador; + +//Inicio +initial +begin + clk_40mhz=0; + contador = 8'b00000000; +end + +//instanciacion del DCM +dcm_200mhz i_dcm_200mhz (.CLKIN_IN(clk_50mhz),.RST_IN(1'b0),.CLKFX_OUT(clk_200mhz),.CLKIN_IBUFG_OUT(),.CLK0_OUT(),.CLK2X_OUT(),.LOCKED_OUT()); + +always @(posedge clk_200mhz) +begin + contador = contador + 1; + if(contador == 5) + contador = 0; + //if(contador >= 3) + //begin + // contador = 0; + // clk_40mhz = ~clk_40mhz; + //end +end + +always @(posedge clk_200mhz) +begin + case(contador) + 8'b00000001: clk_40mhz=1; //1 + 8'b00000010: clk_40mhz=1; //2 + 8'b00000011: clk_40mhz=1; //3 + 8'b00000100: clk_40mhz=0; //4 + 8'b00000101: clk_40mhz=0; //5 + default: clk_40mhz = 0; + endcase +end +endmodule diff --git a/clock_divider.v b/clock_divider.v new file mode 100755 index 0000000000000000000000000000000000000000..77ae4039b5980639287627e96a9e9f95181e76e5 --- /dev/null +++ b/clock_divider.v @@ -0,0 +1,64 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: Laboratorio de Particulas - Centro Atomico Bariloche +// Engineer: Miguel Sofo Haro +// +// Create Date: 14:13:56 10/29/2010 +// Design Name: +// Module Name: clock_divider +// Project Name: +// Target Devices: +// Tool versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +// A partir del clock global de la FPGA, el proposito del modulo es generar +// una señal de clock de frecuencia inferior (< frecuencia del clock global) +// +////////////////////////////////////////////////////////////////////////////////// +module clock_divider +( + input wire global_clock, + output reg clock +); + +//Parameters, +parameter o_freq_MHz = 10; //Output clock frecuency in MHz +parameter gc_freq_MHz = 50; //Global clock frecuency in MHz + +//Local Paramters +localparam first_trigger = ((gc_freq_MHz/o_freq_MHz)+1)/2; +localparam second_trigger = (gc_freq_MHz/o_freq_MHz)+1; + +//Internal Variables +reg [31:0] counter; + +//Initial Variables Values +initial +begin + counter = 0; + clock = 0; +end +//Circuit +always @(posedge global_clock) +begin + counter = counter + 1; + if(counter == first_trigger) + begin + clock = ~clock; + end + else + begin + if(counter == second_trigger) + begin + counter = 0; + clock = ~clock; + end + end +end +endmodule diff --git a/dcm_200mhz.v b/dcm_200mhz.v new file mode 100755 index 0000000000000000000000000000000000000000..7b82f1751023e06ba47df623ca1df39777ed41ee --- /dev/null +++ b/dcm_200mhz.v @@ -0,0 +1,92 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 1995-2008 Xilinx, Inc. All rights reserved. +//////////////////////////////////////////////////////////////////////////////// +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version : 10.1.03 +// \ \ Application : xaw2verilog +// / / Filename : dcm_200mhz.v +// /___/ /\ Timestamp : 05/05/2011 18:51:54 +// \ \ / \ +// \___\/\___\ +// +//Command: xaw2verilog -st C:\Xilinx\10.1\ISE\dcm_200mhz.xaw C:\Xilinx\10.1\ISE\dcm_200mhz +//Design Name: dcm_200mhz +//Device: xc3s500e-fg320-4 +// +// Module dcm_200mhz +// Generated by Xilinx Architecture Wizard +// Written for synthesis tool: XST +// Period Jitter (unit interval) for block DCM_SP_INST = 0.14 UI +// Period Jitter (Peak-to-Peak) for block DCM_SP_INST = 0.70 ns +`timescale 1ns / 1ps + +module dcm_200mhz(CLKIN_IN, + RST_IN, + CLKFX_OUT, + CLKIN_IBUFG_OUT, + CLK0_OUT, + CLK2X_OUT, + LOCKED_OUT); + + input CLKIN_IN; + input RST_IN; + output CLKFX_OUT; + output CLKIN_IBUFG_OUT; + output CLK0_OUT; + output CLK2X_OUT; + output LOCKED_OUT; + + wire CLKFB_IN; + wire CLKFX_BUF; + wire CLKIN_IBUFG; + wire CLK0_BUF; + wire CLK2X_BUF; + wire GND_BIT; + + assign GND_BIT = 0; + assign CLKIN_IBUFG_OUT = CLKIN_IBUFG; + assign CLK2X_OUT = CLKFB_IN; + BUFG CLKFX_BUFG_INST (.I(CLKFX_BUF), + .O(CLKFX_OUT)); + assign CLKIN_IBUFG = CLKIN_IN; + //IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN),.O(CLKIN_IBUFG)); + BUFG CLK0_BUFG_INST (.I(CLK0_BUF), + .O(CLK0_OUT)); + BUFG CLK2X_BUFG_INST (.I(CLK2X_BUF), + .O(CLKFB_IN)); + DCM_SP DCM_SP_INST (.CLKFB(CLKFB_IN), + .CLKIN(CLKIN_IBUFG), + .DSSEN(GND_BIT), + .PSCLK(GND_BIT), + .PSEN(GND_BIT), + .PSINCDEC(GND_BIT), + .RST(RST_IN), + .CLKDV(), + .CLKFX(CLKFX_BUF), + .CLKFX180(), + .CLK0(CLK0_BUF), + .CLK2X(CLK2X_BUF), + .CLK2X180(), + .CLK90(), + .CLK180(), + .CLK270(), + .LOCKED(LOCKED_OUT), + .PSDONE(), + .STATUS()); + defparam DCM_SP_INST.CLK_FEEDBACK = "2X"; + defparam DCM_SP_INST.CLKDV_DIVIDE = 2.0; + defparam DCM_SP_INST.CLKFX_DIVIDE = 1; + defparam DCM_SP_INST.CLKFX_MULTIPLY = 4; + defparam DCM_SP_INST.CLKIN_DIVIDE_BY_2 = "FALSE"; + defparam DCM_SP_INST.CLKIN_PERIOD = 20.000; + defparam DCM_SP_INST.CLKOUT_PHASE_SHIFT = "NONE"; + defparam DCM_SP_INST.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS"; + defparam DCM_SP_INST.DFS_FREQUENCY_MODE = "LOW"; + defparam DCM_SP_INST.DLL_FREQUENCY_MODE = "LOW"; + defparam DCM_SP_INST.DUTY_CYCLE_CORRECTION = "TRUE"; + defparam DCM_SP_INST.FACTORY_JF = 16'hC080; + defparam DCM_SP_INST.PHASE_SHIFT = 0; + defparam DCM_SP_INST.STARTUP_WAIT = "FALSE"; +endmodule diff --git a/interfaz_spi.prj b/interfaz_spi.prj new file mode 100644 index 0000000000000000000000000000000000000000..f8c70019206e949ecd763449a41b1d7d4bc25d2a --- /dev/null +++ b/interfaz_spi.prj @@ -0,0 +1 @@ +vhdl work "interfaz_spi.vhd" diff --git a/interfaz_spi.vhd b/interfaz_spi.vhd new file mode 100644 index 0000000000000000000000000000000000000000..04a81624b6ba325ec26bc9563c4b0786ba060170 --- /dev/null +++ b/interfaz_spi.vhd @@ -0,0 +1,214 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity interfaz_spi is + generic( + iCLK : boolean := false; + iCNV : boolean := false; + iDIN : boolean := false; + iDOU : boolean := false; + NB : positive := 16; -- number of bits of DAC + NDIV : positive := 10 -- divide the clock to get the spi clock + ); + port ( + --Entradas + clk : in std_logic; -- global clock input. 40 MHz en este caso, para estar en orden con baseline_ctrl + reset : in std_logic; + ptick_2ms : in std_logic; -- Con esta señal se sincroniza todo cada 2ms + data_dac1 : in std_logic_vector(11 downto 0); + data_dac2 : in std_logic_vector(11 downto 0); + data_dac3 : in std_logic_vector(11 downto 0); + data_dac4 : in std_logic_vector(11 downto 0); + --Señales a la E2PROM + cs_e2prom : out std_logic; + --Señales al DAC MAX5501 + spi_sdo : out std_logic; + spi_clk : out std_logic; + spi_csn : out std_logic + ); +end entity interfaz_spi; + +architecture rtl of interfaz_spi is + + type state_type is (STATE_IDLE, + STATE_INIT_TX, + STATE_SPI_IDLE, + STATE_SPI_CLK0, + STATE_SPI_CLK1, + STATE_SPI_FINISH); + signal state_reg, state_next : state_type; + + signal rdy : std_logic; + signal busy : std_logic; + signal load_reg, load_next : std_logic; + signal spi_conv : std_logic; + signal spi_clk_i : std_logic; + signal start_reg, start_next : std_logic; + signal shift_out : std_logic; + + signal dac1_buff_reg, dac1_buff_next : unsigned(11 downto 0); + signal dac2_buff_reg, dac2_buff_next : unsigned(11 downto 0); + signal dac3_buff_reg, dac3_buff_next : unsigned(11 downto 0); + signal dac4_buff_reg, dac4_buff_next : unsigned(11 downto 0); + + signal sel_reg, sel_next : std_logic_vector(1 downto 0); + signal mux_signal : std_logic_vector(NB-1 downto 0); + constant DAC1 : std_logic_vector(1 downto 0) := "00"; -- selector de DAC1 + constant DAC2 : std_logic_vector(1 downto 0) := "01"; -- selector de DAC2 + constant DAC3 : std_logic_vector(1 downto 0) := "10"; -- selector de DAC3 + constant DAC4 : std_logic_vector(1 downto 0) := "11"; -- selector de DAC4 + + signal bits_reg, bits_next : integer range 0 to NB-1; + signal bcnt_reg, bcnt_next : integer range 0 to NDIV-1; + signal data_reg, data_next : std_logic_vector(NB-1 downto 0); + signal count_reg, count_next : unsigned(1 downto 0); + +begin + + dac1_buff_next <= unsigned(data_dac1) when (ptick_2ms = '1') else dac1_buff_reg; + dac2_buff_next <= unsigned(data_dac2) when (ptick_2ms = '1') else dac2_buff_reg; + dac3_buff_next <= unsigned(data_dac3) when (ptick_2ms = '1') else dac3_buff_reg; + dac4_buff_next <= unsigned(data_dac4) when (ptick_2ms = '1') else dac4_buff_reg; + + --regusters + process(clk, reset) + begin + if (reset ='1') then + state_reg <= STATE_IDLE; + data_reg <= (others => '0'); + dac1_buff_reg <= (others => '0'); + dac2_buff_reg <= (others => '0'); + dac3_buff_reg <= (others => '0'); + dac4_buff_reg <= (others => '0'); + count_reg <= (others => '0'); + sel_reg <= (others => '0'); + start_reg <= '0'; + load_reg <= '0'; + bcnt_reg <= 0; + bits_reg <= 0; + elsif rising_edge(clk) then + state_reg <= state_next; + data_reg <= data_next; + dac1_buff_reg <= dac1_buff_next; + dac2_buff_reg <= dac2_buff_next; + dac3_buff_reg <= dac3_buff_next; + dac4_buff_reg <= dac4_buff_next; + count_reg <= count_next; + sel_reg <= sel_next; + start_reg <= start_next; + load_reg <= load_next; + bcnt_reg <= bcnt_next; + bits_reg <= bits_next; + end if; + end process; + + --next state logic + --MUX + with sel_reg select + mux_signal <= "1011" & std_logic_vector(dac1_buff_reg) when DAC1,--"00", -- Canal C DAC. Baseline canal 3 + "1111" & std_logic_vector(dac2_buff_reg) when DAC2,--"01", -- Canal D DAC. Baseline canal 2 + "0111" & std_logic_vector(dac3_buff_reg) when DAC3,--"10", -- Canal B DAC. HV canal 1 + "0011" & std_logic_vector(dac4_buff_reg) when others; -- Canal A DAC. Baseline canal 1 + + data_next <= mux_signal when (load_reg = '1') else + data_reg(data_reg'high-1 downto 0) & data_reg(data_reg'high) when (shift_out = '1') else + data_reg; + + -- maquina de estados que maneja todo + process(state_reg, ptick_2ms) + begin + state_next <= state_reg; + start_next <= '0'; + load_next <= '0'; + sel_next <= sel_reg; + count_next <= count_reg; + shift_out <= '0'; + spi_clk_i <= '0'; + spi_conv <= '1'; + rdy <= '0'; + busy <= '0'; + bcnt_next <= 0; + bits_next <= bits_reg; + case state_reg is + + when STATE_IDLE => + count_next <= (others => '0'); + sel_next <= DAC1; + if (ptick_2ms = '1') then + state_next <= STATE_INIT_TX; + else + state_next <= STATE_IDLE; + end if; + + when STATE_INIT_TX => + if (busy = '0') then + count_next <= count_reg + 1; + start_next <= '1'; + load_next <= '1'; + state_next <= STATE_SPI_IDLE; + if ( count_reg = 0 ) then + sel_next <= DAC1; + elsif ( count_reg = 1 ) then + sel_next <= DAC2; + elsif ( count_reg = 2 ) then + sel_next <= DAC3; + else + sel_next <= DAC4; + end if; + else + state_next <= STATE_INIT_TX; + end if; + + when STATE_SPI_IDLE => + if (start_reg <= '1') then + shift_out <= '1'; + state_next <= STATE_SPI_CLK0; + end if; + + when STATE_SPI_CLK0 => + busy <= '1'; + bcnt_next <= bcnt_reg+1; + spi_conv <= '0'; + if (bcnt_reg = NDIV/2) then + state_next <= STATE_SPI_CLK1; + end if; + + when STATE_SPI_CLK1 => + busy <= '1'; + bcnt_next <= bcnt_reg+1; + spi_clk_i <= '1'; + spi_conv <= '0'; + if (bcnt_reg = NDIV-1) then + bits_next <= bits_reg+1; + if (bits_reg = NB-1) then + rdy <= '1'; + state_next <= STATE_SPI_FINISH; + else + shift_out <= '1'; + state_next <= STATE_SPI_CLK0; + end if; + end if; + + when STATE_SPI_FINISH => + busy <= '1'; + bcnt_next <= bcnt_reg+1; + if (bcnt_reg = NDIV-1) then + if (count_reg = 4) then + state_next <= STATE_IDLE; + else + state_next <= STATE_INIT_TX; + end if; + end if; + end case; + end process; + + --output + spi_sdo <= not data_reg(data_reg'high) when iDOU else data_reg(data_reg'high); + + spi_clk <= not spi_clk_i when iCLK else spi_clk_i; + spi_csn <= not spi_conv when iCNV else spi_conv; + + cs_e2prom <= '1'; + +end architecture; diff --git a/interfaz_spi.xst b/interfaz_spi.xst new file mode 100644 index 0000000000000000000000000000000000000000..211ff216e81675b054c4356e02352dcb6061393b --- /dev/null +++ b/interfaz_spi.xst @@ -0,0 +1,5 @@ +set -tmpdir "/home/horacio/work/lago/lago-fpga-vhdl/xst/projnav.tmp" +set -xsthdpdir "/home/horacio/work/lago/lago-fpga-vhdl/xst" +elaborate +-ifn interfaz_spi.prj +-ifmt mixed diff --git a/ipcore_dir/DCM_33.v b/ipcore_dir/DCM_33.v new file mode 100755 index 0000000000000000000000000000000000000000..82348785e06466b820d6f2e1353fa7fce6f9730f --- /dev/null +++ b/ipcore_dir/DCM_33.v @@ -0,0 +1,77 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. +//////////////////////////////////////////////////////////////////////////////// +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version : 12.2 +// \ \ Application : xaw2verilog +// / / Filename : DCM_33.v +// /___/ /\ Timestamp : 06/02/2011 10:09:32 +// \ \ / \ +// \___\/\___\ +// +//Command: xaw2verilog -st /media/Linux/LAGO/pruebas_vhdl/lago02/ipcore_dir/./DCM_33.xaw /media/Linux/LAGO/pruebas_vhdl/lago02/ipcore_dir/./DCM_33 +//Design Name: DCM_33 +//Device: xc3s500e-4fg320 +// +// Module DCM_33 +// Generated by Xilinx Architecture Wizard +// Written for synthesis tool: XST +`timescale 1ns / 1ps + +module DCM_33(CLKIN_IN, + RST_IN, + CLKDV_OUT, + CLKIN_IBUFG_OUT, + CLK0_OUT, + LOCKED_OUT); + + input CLKIN_IN; + input RST_IN; + output CLKDV_OUT; + output CLKIN_IBUFG_OUT; + output CLK0_OUT; + output LOCKED_OUT; + + wire CLKDV_BUF; + wire CLKFB_IN; + wire CLKIN_IBUFG; + wire CLK0_BUF; + wire GND_BIT; + + assign GND_BIT = 0; + assign CLKIN_IBUFG_OUT = CLKIN_IBUFG; + assign CLK0_OUT = CLKFB_IN; + BUFG CLKDV_BUFG_INST (.I(CLKDV_BUF), + .O(CLKDV_OUT)); + IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN), + .O(CLKIN_IBUFG)); + BUFG CLK0_BUFG_INST (.I(CLK0_BUF), + .O(CLKFB_IN)); + DCM_SP #( .CLK_FEEDBACK("1X"), .CLKDV_DIVIDE(1.5), .CLKFX_DIVIDE(1), + .CLKFX_MULTIPLY(4), .CLKIN_DIVIDE_BY_2("FALSE"), + .CLKIN_PERIOD(20.000), .CLKOUT_PHASE_SHIFT("NONE"), + .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"), + .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"), + .FACTORY_JF(16'hC080), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") ) + DCM_SP_INST (.CLKFB(CLKFB_IN), + .CLKIN(CLKIN_IBUFG), + .DSSEN(GND_BIT), + .PSCLK(GND_BIT), + .PSEN(GND_BIT), + .PSINCDEC(GND_BIT), + .RST(RST_IN), + .CLKDV(CLKDV_BUF), + .CLKFX(), + .CLKFX180(), + .CLK0(CLK0_BUF), + .CLK2X(), + .CLK2X180(), + .CLK90(), + .CLK180(), + .CLK270(), + .LOCKED(LOCKED_OUT), + .PSDONE(), + .STATUS()); +endmodule diff --git a/ipcore_dir/DCM_33.vhd b/ipcore_dir/DCM_33.vhd new file mode 100755 index 0000000000000000000000000000000000000000..d9cd2fc0aee3f6f8f1dc14960418fa15a6a0f13c --- /dev/null +++ b/ipcore_dir/DCM_33.vhd @@ -0,0 +1,96 @@ +-------------------------------------------------------------------------------- +-- Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. +-------------------------------------------------------------------------------- +-- ____ ____ +-- / /\/ / +-- /___/ \ / Vendor: Xilinx +-- \ \ \/ Version : 12.2 +-- \ \ Application : xaw2vhdl +-- / / Filename : DCM_33.vhd +-- /___/ /\ Timestamp : 06/02/2011 10:11:46 +-- \ \ / \ +-- \___\/\___\ +-- +--Command: xaw2vhdl-st /media/Linux/LAGO/pruebas_vhdl/lago02/ipcore_dir/./DCM_33.xaw /media/Linux/LAGO/pruebas_vhdl/lago02/ipcore_dir/./DCM_33 +--Design Name: DCM_33 +--Device: xc3s500e-4fg320 +-- +-- Module DCM_33 +-- Generated by Xilinx Architecture Wizard +-- Written for synthesis tool: XST + +library ieee; +use ieee.std_logic_1164.ALL; +use ieee.numeric_std.ALL; +library UNISIM; +use UNISIM.Vcomponents.ALL; + +entity DCM_33 is + port ( CLKIN_IN : in std_logic; + RST_IN : in std_logic; + CLKDV_OUT : out std_logic; + CLKIN_IBUFG_OUT : out std_logic; + CLK0_OUT : out std_logic; + LOCKED_OUT : out std_logic); +end DCM_33; + +architecture BEHAVIORAL of DCM_33 is + signal CLKDV_BUF : std_logic; + signal CLKFB_IN : std_logic; + signal CLKIN_IBUFG : std_logic; + signal CLK0_BUF : std_logic; + signal GND_BIT : std_logic; +begin + GND_BIT <= '0'; + CLKIN_IBUFG_OUT <= CLKIN_IBUFG; + CLK0_OUT <= CLKFB_IN; + CLKDV_BUFG_INST : BUFG + port map (I=>CLKDV_BUF, + O=>CLKDV_OUT); + + CLKIN_IBUFG_INST : IBUFG + port map (I=>CLKIN_IN, + O=>CLKIN_IBUFG); + + CLK0_BUFG_INST : BUFG + port map (I=>CLK0_BUF, + O=>CLKFB_IN); + + DCM_SP_INST : DCM_SP + generic map( CLK_FEEDBACK => "1X", + CLKDV_DIVIDE => 1.5, + CLKFX_DIVIDE => 1, + CLKFX_MULTIPLY => 4, + CLKIN_DIVIDE_BY_2 => FALSE, + CLKIN_PERIOD => 20.000, + CLKOUT_PHASE_SHIFT => "NONE", + DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", + DFS_FREQUENCY_MODE => "LOW", + DLL_FREQUENCY_MODE => "LOW", + DUTY_CYCLE_CORRECTION => TRUE, + FACTORY_JF => x"C080", + PHASE_SHIFT => 0, + STARTUP_WAIT => FALSE) + port map (CLKFB=>CLKFB_IN, + CLKIN=>CLKIN_IBUFG, + DSSEN=>GND_BIT, + PSCLK=>GND_BIT, + PSEN=>GND_BIT, + PSINCDEC=>GND_BIT, + RST=>RST_IN, + CLKDV=>CLKDV_BUF, + CLKFX=>open, + CLKFX180=>open, + CLK0=>CLK0_BUF, + CLK2X=>open, + CLK2X180=>open, + CLK90=>open, + CLK180=>open, + CLK270=>open, + LOCKED=>LOCKED_OUT, + PSDONE=>open, + STATUS=>open); + +end BEHAVIORAL; + + diff --git a/ipcore_dir/DCM_33.xaw b/ipcore_dir/DCM_33.xaw new file mode 100755 index 0000000000000000000000000000000000000000..fb08cee26d8b4035305862498e90edc614696465 --- /dev/null +++ b/ipcore_dir/DCM_33.xaw @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$97x4>5c3&gnhdo Lhlv|*JFOF%{~xkmar]ulaj(dhmd<?!fpbmqaZbnz&$$HNCP32,{er7<881:?6?!55926+4?38<,dN>70392\3=58':;<<5;2:733>GUKA]BV<94ASUY[JHKQVIJ_NOKIOE\GIM602KY[WQ@NM[\GIMNFVOSXH\AAM36?DTPRVEE@TQLLJKM[SGK]L;i7L\XZ^MMH\YCKDUX[DZLHHLD[FJL991J^ZTPOONZ[ABUWJ::<6O]W[]LJI_XLMXTO<?>;@PT^ZIIDPUOH_QLLJ35?DTPRVEE@TQKDS]EHLVADFZ:96O]W[]LJI_XNKUNTYK]N@N26>GU_SUDBAWPIOQW[KSJm2KY[WQ@NM[\THEC9<1J^ZTPOONZ[WCTM]UGCJGL199BVR\XGGFRS[OCIE]GBVYJGMOj7L]\OB]TMQNa3H]QSNBDBTDW]UC69?1J[WQLLJ@VBQ_WM8UECHJFT018ER\XKEATCXZ_UU]W]UCd3H]QSKB@WU[SA==F_SU[M_Zk;@UY[V_I\A^DCA:4BNVK0>DRNN>0OAE?8:AOO5YE]Oo0OAE?_CWECZOI[]20OAE?_NWW2>EKC82;:6MCK3531>EKC;R37NBD2Y3;40=DDB3;96MCKET:?FJLL_UIYKh4CMIGRZDRNNUBB^Zl;BNH@SYCA_COI45LLJFU[JSS=2IGGKL7;BNHBGYNF<1H@FHW8:AOOC^609i0OAEIX^FJRLBBm2IGGKVPMTNWMUJ^=2IGGD@>1:AOOLHXL@\BHHQMY^0a?FJLAGUBNXHH119@HNOIW@H^JJQFNRVe?FJLAGUBNXHH_NWW<>EKC@DTECm4CMIJJZVBZ@EOi6MCKHL\WWEX\PZN=?5LLJMVPZVOIZOT_EGITb9@HNYAMLNIMNE6;BMNILRSMM=0O_KNTDF5?AEJWZZi7IMB_RR\MKUSl2NN_FKX_@FIQVR6:2NM_RH]EPWFJF_XEFNN?6JCL008@IJXN[OZYH@LY^OL@@3<LZYNB<;4DTVZ[F_DDLUHC_\JCUKLJ2=CW_KGYH64EYVFVKGKi2LJOYA]Y^HE1>@FDZO27KLPSNWQG@e<NLOONLMD_CWE=>@NFV_EEY]7;GMVPZUSZh1MCXZPUOKWWd=AG\^TZLBZE09J1>OE]OM37D@[ESLBH47<B@^_I_QFNQWW[Q_WM?1GCLJJD79OKFMBLh1GCNEJD^MVP6=KG^90AET8;L]UEISB?2DNXZA]K59MKKC63F20CKJKRBRFf>VOIZOT_EGIT89SMKNF[K_Xm6^FNHQDJACC02ZBBZGKTI:8TWOJ\PZN==5_RNR\TLHN[HI_E[K:;QQ@HN0<XZNDBH:4PRGM<>VTAGIOIN=4RRV5?WUSW@Di7^GHEYVFVKGK>2YBBJBJc:QWEWRRXV]JEY84SUCWQV753ZSXXHCPSXL@LWIIG\Y87YA_4:VQQ@><]ZOTNXHH9:WPAZDRNNY>7[GJW0`8\DQX^LXXEB@>d:ZJHLH_%QNI,= > RVVF%6)9)KXODG9;Yfa[Lb682RoaRCnjnpUawungg;;7Ujb_LkmkwPbzzcdb85T0;2^1>]72>W?7l|xz29gghd<~lxxeb`/1/27?sncdo1so>}:01g.0ca4:990t~zr@Ar0f>FGp80M694>{R62>2`=080:??jk0`82b`gcsg=i6<5a7b85?!1f2>30q^:?:6d9<4<6;;no<l4>fg57?V3?2>l14<4>33fg4d<589937^:?:6d9<4<6;;no<l4=016b?a1a290:6<u\4084b?>62899hi>n:0dfea=q\>=1<7?51;cxW17=?o03=7?<2ef3e?7amhn0n:=50;290?g|,k03<6*>d;:1?!7b2190(<h5859'3=<23k>86=4>3;294~"1>3>97)m52c9'`?0a3-l1>?5+11816>"6938=7)?=:308 45=>81/=949f:&21?5<,8<19k5+1687`>"6038;7)=i:69'6`<33-9?6>5+348:?!502=n0(>m58:&0`?2e3-9n68h4$56937=#<h087):::4`8 11==k1/84484:&7g?0<,=o19;5+5186g>"2:3?h7);<:19'12<292.>h774$7096>"083>o7)9::648 `<f3-;h6984i2494?"1=3=o7)88:668?l57290/:848d:&53?1332c=o7>5$7793a=#>>0<865f6`83>!022>n0(;:57598m3d=83.=979k;%47>22<3`<36=4+6484`>"1<3=?76g;8;29 33=?m1/:9484:9l67<72-<>6:j4$75931=#9h09=6*>b;6e?>i5i3:1(;;57e98k70=83.=979k;:m13?6=,??1;i54o3`94?"1=3=o7)88:668 4g=:810c?650;&51?1c32e957>5$7793a=<g:81<7*95;5g?>i4;3:1(;;57e98k27=83.=979j;%40>22<3f?26=4+6484`>"1?3=?76a99;29 33=?m10qo=6:181>5<7s-<=68;4i4694?"1=3=o7)88:668?j07290/:848d:&53?1332wi>94?:383>5}#>?09=6g:4;29 33=?m1/::484:9l25<72-<>6:j4$75931=<uk8o6=4=:183!012;;0e8:50;&51?1c3-<<6::4;n43>5<#><0<h6*97;57?>{t;10;6?u242802>;413<;7)?6:2c8yv562909w0:<:228972=>91/=44=5:p2a<728q68>49c:&5a?333ty9?7>52z?77?45348?68:4}r0`>5<5s4>86?l4=3f911=z{<k1<7?t=5191<=#>l0=<6s|3c83>4}:;00>86*9e;77?xu5n3:1=v3=d;43?!0b2?:0q~=n:183!0b2?:0q~<::183!0b2?:0qp`=7;295~{i:10;6<urn3;94?7|ug8j6=4>{|l1f?6=9rwe>n4?:0y~j7b=83;pqc<j:182xh5n3:1=vsa3183>4}zutwKLNu<b;db42>d1lwKLOu?}ABSxFG \ No newline at end of file diff --git a/ipcore_dir/DCM_33_arwz.ucf b/ipcore_dir/DCM_33_arwz.ucf new file mode 100755 index 0000000000000000000000000000000000000000..06767268d9433c4bdff54fa2721188edc8c9b8af --- /dev/null +++ b/ipcore_dir/DCM_33_arwz.ucf @@ -0,0 +1,17 @@ +# Generated by Xilinx Architecture Wizard +# --- UCF Template Only --- +# Cut and paste these attributes into the project's UCF file, if desired +INST DCM_SP_INST CLK_FEEDBACK = 1X; +INST DCM_SP_INST CLKDV_DIVIDE = 1.5; +INST DCM_SP_INST CLKFX_DIVIDE = 1; +INST DCM_SP_INST CLKFX_MULTIPLY = 4; +INST DCM_SP_INST CLKIN_DIVIDE_BY_2 = FALSE; +INST DCM_SP_INST CLKIN_PERIOD = 20.000; +INST DCM_SP_INST CLKOUT_PHASE_SHIFT = NONE; +INST DCM_SP_INST DESKEW_ADJUST = SYSTEM_SYNCHRONOUS; +INST DCM_SP_INST DFS_FREQUENCY_MODE = LOW; +INST DCM_SP_INST DLL_FREQUENCY_MODE = LOW; +INST DCM_SP_INST DUTY_CYCLE_CORRECTION = TRUE; +INST DCM_SP_INST FACTORY_JF = C080; +INST DCM_SP_INST PHASE_SHIFT = 0; +INST DCM_SP_INST STARTUP_WAIT = FALSE; diff --git a/ipcore_dir/DCM_33_flist.txt b/ipcore_dir/DCM_33_flist.txt new file mode 100755 index 0000000000000000000000000000000000000000..19d2f1eb6e75405960901ef2110e3f33d5b133ba --- /dev/null +++ b/ipcore_dir/DCM_33_flist.txt @@ -0,0 +1,4 @@ +# Output products list for <DCM_33> +DCM_33_flist.txt +DCM_33_readme.txt +DCM_33_xmdf.tcl diff --git a/ipcore_dir/DCM_33_readme.txt b/ipcore_dir/DCM_33_readme.txt new file mode 100755 index 0000000000000000000000000000000000000000..e8e3d1f98efac823f1a31d8f7f21a1b8c865ea99 --- /dev/null +++ b/ipcore_dir/DCM_33_readme.txt @@ -0,0 +1,19 @@ +The following files were generated for 'DCM_33' in directory +/media/Linux/LAGO/pruebas_vhdl/lago02/ipcore_dir/ + +DCM_33_readme.txt: + Text file indicating the files generated and how they are used. + +DCM_33_xmdf.tcl: + ISE Project Navigator interface file. ISE uses this file to determine + how the files output by CORE Generator for the core can be integrated + into your ISE project. + +DCM_33_flist.txt: + Text file listing all of the output files produced when a customized + core was generated in the CORE Generator. + + +Please see the Xilinx CORE Generator online help for further details on +generated files and how to use them. + diff --git a/ipcore_dir/DCM_33_xmdf.tcl b/ipcore_dir/DCM_33_xmdf.tcl new file mode 100755 index 0000000000000000000000000000000000000000..bfb22cbbe318b94a61632dab80b0e597d04e45a1 --- /dev/null +++ b/ipcore_dir/DCM_33_xmdf.tcl @@ -0,0 +1,48 @@ +# The package naming convention is <core_name>_xmdf +package provide DCM_33_xmdf 1.0 + +# This includes some utilities that support common XMDF operations +package require utilities_xmdf + +# Define a namespace for this package. The name of the name space +# is <core_name>_xmdf +namespace eval ::DCM_33_xmdf { +# Use this to define any statics +} + +# Function called by client to rebuild the params and port arrays +# Optional when the use context does not require the param or ports +# arrays to be available. +proc ::DCM_33_xmdf::xmdfInit { instance } { +# Variable containg name of library into which module is compiled +# Recommendation: <module_name> +# Required +utilities_xmdf::xmdfSetData $instance Module Attributes Name DCM_33 +} +# ::DCM_33_xmdf::xmdfInit + +# Function called by client to fill in all the xmdf* data variables +# based on the current settings of the parameters +proc ::DCM_33_xmdf::xmdfApplyParams { instance } { + +set fcount 0 +# Array containing libraries that are assumed to exist +# Examples include unisim and xilinxcorelib +# Optional +# In this example, we assume that the unisim library will +# be magically +# available to the simulation and synthesis tool +utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library +utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path DCM_33_xmdf.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module DCM_33 +incr fcount + +} + +# ::gen_comp_name_xmdf::xmdfApplyParams diff --git a/ipcore_dir/_xmsgs/cg.xmsgs b/ipcore_dir/_xmsgs/cg.xmsgs new file mode 100644 index 0000000000000000000000000000000000000000..a0540da0ce75d21397db8312a972ba43c01d41db --- /dev/null +++ b/ipcore_dir/_xmsgs/cg.xmsgs @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- IMPORTANT: This is an internal file that has been generated + by the Xilinx ISE software. Any direct editing or + changes made to this file may result in unpredictable + behavior or data corruption. It is strongly advised that + users do not edit the contents of this file. --> +<messages> +<msg type="info" file="sim" num="172" delta="old" >Generating IP... +</msg> + +<msg type="warning" file="sim" num="89" delta="new" >A core named <<arg fmt="%s" index="1">fifo</arg>> already exists in the output directory. Output products for this core may be overwritten. +</msg> + +<msg type="info" file="sim" num="949" delta="new" >Finished generation of ASY schematic symbol. +</msg> + +<msg type="info" file="sim" num="948" delta="new" >Finished FLIST file generation. +</msg> + +</messages> + diff --git a/ipcore_dir/_xmsgs/pn_parser.xmsgs b/ipcore_dir/_xmsgs/pn_parser.xmsgs new file mode 100644 index 0000000000000000000000000000000000000000..a60b11e84bef4c71982229c6b6a50749afc1e369 --- /dev/null +++ b/ipcore_dir/_xmsgs/pn_parser.xmsgs @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- IMPORTANT: This is an internal file that has been generated --> +<!-- by the Xilinx ISE software. Any direct editing or --> +<!-- changes made to this file may result in unpredictable --> +<!-- behavior or data corruption. It is strongly advised that --> +<!-- users do not edit the contents of this file. --> +<!-- --> +<!-- Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. --> + +<messages> +<msg type="info" file="ProjectMgmt" num="1061" ><arg fmt="%s" index="1">Parsing VHDL file "/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.vhd" into library work</arg> +</msg> + +</messages> + diff --git a/ipcore_dir/coregen.cgc b/ipcore_dir/coregen.cgc new file mode 100644 index 0000000000000000000000000000000000000000..6322068b524b7aeaaf897f4497ed9edae3173ba0 --- /dev/null +++ b/ipcore_dir/coregen.cgc @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:design xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xilinx="http://www.xilinx.com" > + <spirit:vendor>xilinx.com</spirit:vendor> + <spirit:library>project</spirit:library> + <spirit:name>coregen</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:componentInstances> + <spirit:componentInstance> + <spirit:instanceName>fifo</spirit:instanceName> + <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="fifo_generator" spirit:version="6.2" /> + <spirit:configurableElementValues> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COMPONENT_NAME">fifo</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OUTPUT_DEPTH">32768</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PROGRAMMABLE_FULL_TYPE">Single_Programmable_Full_Threshold_Constant</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_DATA_WIDTH">32</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DOUT_RESET_VALUE">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_ACKNOWLEDGE_FLAG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FULL_FLAGS_RESET_VALUE">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_CLOCK_FREQUENCY">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PROGRAMMABLE_EMPTY_TYPE">No_Programmable_Empty_Threshold</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INPUT_DEPTH">8192</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VALID_FLAG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INJECT_DBIT_ERROR">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERFLOW_SENSE">Active_High</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DATA_COUNT_WIDTH">13</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VALID_SENSE">Active_High</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OUTPUT_DATA_WIDTH">8</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FULL_THRESHOLD_ASSERT_VALUE">4096</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_DATA_COUNT_WIDTH">13</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OVERFLOW_FLAG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_INT_CLK">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_TIMING_VIOLATIONS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PIN">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FIFO_IMPLEMENTATION">Independent_Clocks_Block_RAM</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.EMPTY_THRESHOLD_ASSERT_VALUE">2</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DATA_COUNT">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INJECT_SBIT_ERROR">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_EXTRA_LOGIC">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.UNDERFLOW_SENSE">Active_High</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.READ_CLOCK_FREQUENCY">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FULL_THRESHOLD_NEGATE_VALUE">4095</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ALMOST_EMPTY_FLAG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.UNDERFLOW_FLAG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_TYPE">Asynchronous_Reset</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.READ_DATA_COUNT_WIDTH">15</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_DOUT_RESET">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.READ_DATA_COUNT">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_DATA_COUNT">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ALMOST_FULL_FLAG">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_ACKNOWLEDGE_SENSE">Active_High</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.EMPTY_THRESHOLD_NEGATE_VALUE">3</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_EMBEDDED_REGISTERS">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PERFORMANCE_OPTIONS">Standard_FIFO</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_RESET_SYNCHRONIZATION">true</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_ECC">false</spirit:configurableElementValue> + </spirit:configurableElementValues> + <spirit:vendorExtensions> + <xilinx:instanceProperties> + <xilinx:projectOptions> + <xilinx:projectName>coregen</xilinx:projectName> + <xilinx:outputDirectory>./</xilinx:outputDirectory> + <xilinx:workingDirectory>./tmp/</xilinx:workingDirectory> + <xilinx:subWorkingDirectory>./tmp/_cg/</xilinx:subWorkingDirectory> + </xilinx:projectOptions> + <xilinx:part> + <xilinx:device>xc3s500e</xilinx:device> + <xilinx:deviceFamily>spartan3e</xilinx:deviceFamily> + <xilinx:package>fg320</xilinx:package> + <xilinx:speedGrade>-4</xilinx:speedGrade> + </xilinx:part> + <xilinx:flowOptions> + <xilinx:busFormat>BusFormatAngleBracketNotRipped</xilinx:busFormat> + <xilinx:designEntry>VHDL</xilinx:designEntry> + <xilinx:asySymbol>true</xilinx:asySymbol> + <xilinx:flowVendor>Foundation_ISE</xilinx:flowVendor> + <xilinx:addPads>false</xilinx:addPads> + <xilinx:removeRPMs>false</xilinx:removeRPMs> + <xilinx:createNDF>false</xilinx:createNDF> + <xilinx:implementationFileType>Ngc</xilinx:implementationFileType> + <xilinx:formalVerification>false</xilinx:formalVerification> + </xilinx:flowOptions> + <xilinx:simulationOptions> + <xilinx:simulationModel>Behavioral</xilinx:simulationModel> + <xilinx:simulationLanguage>VHDL_and_Verilog</xilinx:simulationLanguage> + <xilinx:foundationSym>false</xilinx:foundationSym> + </xilinx:simulationOptions> + <xilinx:packageInfo> + <xilinx:sourceCoreCreationDate>2012-10-13+03:35</xilinx:sourceCoreCreationDate> + </xilinx:packageInfo> + </xilinx:instanceProperties> + </spirit:vendorExtensions> + </spirit:componentInstance> + <spirit:componentInstance> + <spirit:instanceName>DCM_33</spirit:instanceName> + <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="dcm_sp" spirit:version="13.1" /> + <spirit:configurableElementValues> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COMPONENT_NAME">DCM_33</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.XAWFILENAME">/home/horacio/work/lago/lago_fpga_sync_one_fifo/ipcore_dir/DCM_33.xaw</spirit:configurableElementValue> + </spirit:configurableElementValues> + <spirit:vendorExtensions> + <xilinx:instanceProperties> + <xilinx:projectOptions> + <xilinx:projectName>coregen</xilinx:projectName> + <xilinx:outputDirectory>./</xilinx:outputDirectory> + <xilinx:workingDirectory>./tmp/</xilinx:workingDirectory> + <xilinx:subWorkingDirectory>./tmp/_cg/</xilinx:subWorkingDirectory> + </xilinx:projectOptions> + <xilinx:part> + <xilinx:device>xc3s500e</xilinx:device> + <xilinx:deviceFamily>spartan3e</xilinx:deviceFamily> + <xilinx:package>fg320</xilinx:package> + <xilinx:speedGrade>-4</xilinx:speedGrade> + </xilinx:part> + <xilinx:flowOptions> + <xilinx:busFormat>BusFormatAngleBracketNotRipped</xilinx:busFormat> + <xilinx:designEntry>VHDL</xilinx:designEntry> + <xilinx:asySymbol>true</xilinx:asySymbol> + <xilinx:flowVendor>Foundation_ISE</xilinx:flowVendor> + <xilinx:addPads>false</xilinx:addPads> + <xilinx:removeRPMs>false</xilinx:removeRPMs> + <xilinx:createNDF>false</xilinx:createNDF> + <xilinx:implementationFileType>Ngc</xilinx:implementationFileType> + <xilinx:formalVerification>false</xilinx:formalVerification> + </xilinx:flowOptions> + <xilinx:simulationOptions> + <xilinx:simulationModel>Behavioral</xilinx:simulationModel> + <xilinx:simulationLanguage>VHDL_and_Verilog</xilinx:simulationLanguage> + <xilinx:foundationSym>false</xilinx:foundationSym> + </xilinx:simulationOptions> + </xilinx:instanceProperties> + </spirit:vendorExtensions> + </spirit:componentInstance> + </spirit:componentInstances> + <spirit:vendorExtensions> + <xilinx:instanceProperties> + <xilinx:projectOptions> + <xilinx:projectName>coregen</xilinx:projectName> + <xilinx:outputDirectory>./</xilinx:outputDirectory> + <xilinx:workingDirectory>./tmp/</xilinx:workingDirectory> + <xilinx:subWorkingDirectory>./tmp/_cg/</xilinx:subWorkingDirectory> + </xilinx:projectOptions> + <xilinx:part> + <xilinx:device>xc3s500e</xilinx:device> + <xilinx:deviceFamily>spartan3e</xilinx:deviceFamily> + <xilinx:package>fg320</xilinx:package> + <xilinx:speedGrade>-4</xilinx:speedGrade> + </xilinx:part> + <xilinx:flowOptions> + <xilinx:busFormat>BusFormatAngleBracketNotRipped</xilinx:busFormat> + <xilinx:designEntry>VHDL</xilinx:designEntry> + <xilinx:asySymbol>true</xilinx:asySymbol> + <xilinx:flowVendor>Foundation_ISE</xilinx:flowVendor> + <xilinx:addPads>false</xilinx:addPads> + <xilinx:removeRPMs>false</xilinx:removeRPMs> + <xilinx:createNDF>false</xilinx:createNDF> + <xilinx:implementationFileType>Ngc</xilinx:implementationFileType> + <xilinx:formalVerification>false</xilinx:formalVerification> + </xilinx:flowOptions> + <xilinx:simulationOptions> + <xilinx:simulationModel>Behavioral</xilinx:simulationModel> + <xilinx:simulationLanguage>VHDL_and_Verilog</xilinx:simulationLanguage> + <xilinx:foundationSym>false</xilinx:foundationSym> + </xilinx:simulationOptions> + </xilinx:instanceProperties> + </spirit:vendorExtensions> +</spirit:design> + diff --git a/ipcore_dir/coregen.cgp b/ipcore_dir/coregen.cgp new file mode 100644 index 0000000000000000000000000000000000000000..7f8f48facf1626b47f93e3503a2f3da65df4b53a --- /dev/null +++ b/ipcore_dir/coregen.cgp @@ -0,0 +1,9 @@ +SET busformat = BusFormatAngleBracketNotRipped +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Foundation_ISE +SET package = fg320 +SET speedgrade = -4 +SET verilogsim = true +SET vhdlsim = true diff --git a/ipcore_dir/coregen.log b/ipcore_dir/coregen.log new file mode 100644 index 0000000000000000000000000000000000000000..12fe67a84002d9c7a8417032932ea6aeb0f99e0f --- /dev/null +++ b/ipcore_dir/coregen.log @@ -0,0 +1,63 @@ +INFO:sim:172 - Generating IP... +Applying current project options... +Finished applying current project options. +Customizing IP... +Release 14.3 - Xilinx CORE Generator IP GUI Launcher P.40xd (lin64) +Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. +Finished Customizing. +Generating IP... +WARNING:sim:89 - A core named <fifo> already exists in the output directory. + Output products for this core may be overwritten. +XST: HDL Compilation +XST: Design Hierarchy Analysis +XST: HDL Analysis +XST: HDL Synthesis +XST: Advanced HDL Synthesis +XST: Low Level Synthesis +XST: Partition Report +XST: Final Report +Generating Implementation files. +Generating NGC file. +Finished Generation. +Generating IP instantiation template... +Generating ASY schematic symbol... +INFO:sim:949 - Finished generation of ASY schematic symbol. +Generating SYM schematic symbol for 'fifo'... +Generating metadata file... +Generating ISE project... +XCO file found: fifo.xco +XMDF file found: fifo_xmdf.tcl +Adding /home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.asy +-view all -origin_type imported +Adding /home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.ngc +-view all -origin_type created +Checking file +"/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.ngc" for +project device match ... +File "/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.ngc" +device information matches project device. +Adding /home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.sym +-view all -origin_type imported +Adding /home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.vhd +-view all -origin_type created +INFO:HDLCompiler:1061 - Parsing VHDL file + "/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.vhd" + into library work +INFO:ProjectMgmt - Parsing design hierarchy completed successfully. +Adding /home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.vho +-view all -origin_type imported +Adding +/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo_generator_re +adme.txt -view all -origin_type imported +INFO:TclTasksC:2116 - The automatic calculation of top has been turned-off. + Please set the new top explicitly by running the "project set top" command. + To re-calculate the new top automatically, set the "Auto Implementation Top" + property to true. +Top level has been set to "/fifo" +Generating README file... +Generating FLIST file... +INFO:sim:948 - Finished FLIST file generation. +Launching README viewer... +Moving files to output directory... +Finished moving files to output directory +Wrote CGP file for project 'fifo'. diff --git a/ipcore_dir/coregen.rsp b/ipcore_dir/coregen.rsp new file mode 100755 index 0000000000000000000000000000000000000000..ee0058e11f87915745dfc0796baa1e2d429b9391 --- /dev/null +++ b/ipcore_dir/coregen.rsp @@ -0,0 +1,2 @@ +SETPROJECT "/home/horacio/work/lago/lago_fpga_sync_one_fifo/ipcore_dir/coregen.cgp" +LAUNCHXCO "/home/horacio/work/lago/lago_fpga_sync_one_fifo/ipcore_dir/fifo.xco" diff --git a/ipcore_dir/edit_fifo.tcl b/ipcore_dir/edit_fifo.tcl new file mode 100644 index 0000000000000000000000000000000000000000..a514e498ddf62f39635b357fdd1f2080847bdb08 --- /dev/null +++ b/ipcore_dir/edit_fifo.tcl @@ -0,0 +1,37 @@ +## +## Core Generator Run Script, generator for Project Navigator edit command +## + +proc findRtfPath { relativePath } { + set xilenv "" + if { [info exists ::env(XILINX) ] } { + if { [info exists ::env(MYXILINX)] } { + set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ] + } else { + set xilenv $::env(XILINX) + } + } + foreach path [ split $xilenv $::xilinx::path_sep ] { + set fullPath [ file join $path $relativePath ] + if { [ file exists $fullPath ] } { + return $fullPath + } + } + return "" +} + +source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ] + +set result [ run_cg_edit "fifo" xc3s500e-4fg320 VHDL ] + +if { $result == 0 } { + puts "Core Generator edit command completed successfully." +} elseif { $result == 1 } { + puts "Core Generator edit command failed." +} elseif { $result == 3 || $result == 4 } { + # convert 'version check' result to real return range, bypassing any messages. + set result [ expr $result - 3 ] +} else { + puts "Core Generator edit cancelled." +} +exit $result diff --git a/ipcore_dir/fifo.asy b/ipcore_dir/fifo.asy new file mode 100644 index 0000000000000000000000000000000000000000..ee712297502aa369c5ce62490923c3c7ee8d07a6 --- /dev/null +++ b/ipcore_dir/fifo.asy @@ -0,0 +1,45 @@ +Version 4 +SymbolType BLOCK +TEXT 32 32 LEFT 4 fifo +RECTANGLE Normal 32 32 544 768 +LINE Wide 0 80 32 80 +PIN 0 80 LEFT 36 +PINATTR PinName din[31:0] +PINATTR Polarity IN +LINE Normal 0 144 32 144 +PIN 0 144 LEFT 36 +PINATTR PinName wr_en +PINATTR Polarity IN +LINE Normal 0 176 32 176 +PIN 0 176 LEFT 36 +PINATTR PinName wr_clk +PINATTR Polarity IN +LINE Normal 0 240 32 240 +PIN 0 240 LEFT 36 +PINATTR PinName rd_en +PINATTR Polarity IN +LINE Normal 0 272 32 272 +PIN 0 272 LEFT 36 +PINATTR PinName rd_clk +PINATTR Polarity IN +LINE Normal 144 800 144 768 +PIN 144 800 BOTTOM 36 +PINATTR PinName rst +PINATTR Polarity IN +LINE Wide 576 80 544 80 +PIN 576 80 RIGHT 36 +PINATTR PinName dout[7:0] +PINATTR Polarity OUT +LINE Normal 576 208 544 208 +PIN 576 208 RIGHT 36 +PINATTR PinName full +PINATTR Polarity OUT +LINE Normal 576 272 544 272 +PIN 576 272 RIGHT 36 +PINATTR PinName prog_full +PINATTR Polarity OUT +LINE Normal 576 432 544 432 +PIN 576 432 RIGHT 36 +PINATTR PinName empty +PINATTR Polarity OUT + diff --git a/ipcore_dir/fifo.gise b/ipcore_dir/fifo.gise new file mode 100644 index 0000000000000000000000000000000000000000..4fb80a90c038fc71707dee3620f4478588b61e0d --- /dev/null +++ b/ipcore_dir/fifo.gise @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<generated_project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema"> + + <!-- --> + + <!-- For tool use only. Do not edit. --> + + <!-- --> + + <!-- ProjectNavigator created generated project file. --> + + <!-- For use in tracking generated file and other information --> + + <!-- allowing preservation of process status. --> + + <!-- --> + + <!-- Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. --> + + <version xmlns="http://www.xilinx.com/XMLSchema">11.1</version> + + <sourceproject xmlns="http://www.xilinx.com/XMLSchema" xil_pn:fileType="FILE_XISE" xil_pn:name="fifo.xise"/> + + <files xmlns="http://www.xilinx.com/XMLSchema"> + <file xil_pn:fileType="FILE_ASY" xil_pn:name="fifo.asy" xil_pn:origination="imported"/> + <file xil_pn:fileType="FILE_SYMBOL" xil_pn:name="fifo.sym" xil_pn:origination="imported"/> + <file xil_pn:fileType="FILE_VHO" xil_pn:name="fifo.vho" xil_pn:origination="imported"/> + <file xil_pn:fileType="FILE_USERDOC" xil_pn:name="fifo_generator_readme.txt" xil_pn:origination="imported"/> + </files> + + <transforms xmlns="http://www.xilinx.com/XMLSchema"/> + +</generated_project> diff --git a/ipcore_dir/fifo.ncf b/ipcore_dir/fifo.ncf new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ipcore_dir/fifo.ngc b/ipcore_dir/fifo.ngc new file mode 100644 index 0000000000000000000000000000000000000000..fc7ab7451610ffa3003878d7571c1bb7308c9efc --- /dev/null +++ b/ipcore_dir/fifo.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$46e44<,[o}e~g`n;"2*73>(-;0<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?2:216>6?<2:M<??41292*5733881EC^ZT;CG@WD;980;2<h4128JJUSS2yxdkRhzlm]wlwct`5;96=0=6:30>LHW]]0{~biPftno[qnumzbTm~}jru>26?69:?1:?7GAPTV9twi`Wog`Rzgrdqk[kc`i}o7=?4?>0c856<H]]Z^X7jnt`]`kphs4881<3?k;019KPRW]]0|~Rjnt`]`kphs4881<3?;;069MKVR\3KOH_O31283:76<9<0BB][[:qplcZcjx}sTxe|jsi>20?69:>1:97GAPTV9twi`Wlg{xtQ{hsgplZgt{lx0<:50?04?43=AGZ^X7~}of]fiur~W}byi~fPndebp`:6<3:5=i5>5;MVPUSS2{nThlzn_bmvjq:6<3:5==5>:HLSQQ<CAH6;6=0>1:39KPRW]]0OCL2?:1<2?7753:81EC^ZT;fjj956294o7>}:01gec647%=;;794FNQWW>AOE4:0;2<?44;MVPUSS2MEI0>4?>59600663?80:4:468;50>>3:8;9754@UURVP?bh}}6<6=0;;9C;<4=><23;<4<49768=30>02KOH_O30?;8EABUI5;;245NDEPB847912KOH_O313<a?DBCZH6:?7>19:CG@WG;9:437LJKR@>2:==FLMXJ0?07;@FGVD:4611JHI\N<5<;?DBCZH6>255NDEPB838?3HNO^L28>99B@ATF41437LJKR@>::==FLMXI0=06;@FGVG:687h0MIJ]B=32>58>3HNO^O2>1?:8EABUJ5;546OKDS@?6;><IMNYN1=18:CG@WD;<720MIJ]B=7=<>GCL[H7:364AEFQF91902KOH_L38?:8EABUJ535?6OCL89BW\HDW[OL=6L<;CW1<>DR[VCEJB?4C39@A44<KAOHGRBFCDLPAZR^XL80OD:4CMIB0>EKCK90OA\6;BMNILRSMM;?7NA]E^EFJ@TF\@EESD@IO69@V@GSMM;0H?5KI99GMD:7294=7IGN<1<5?AOE494=7IGM<0<5?AOE4;437IGM<283:3=CAK68255KO@>3>5813MEJ0=09;EMA85813MEI0<09;EMA878?3MEI0>4?>79GKG:46;1N8>5JN@18AKD53O>97K6=;GF0?CBD<2LOOH=4FEG0?CBW<2LO\H?4G29DJA4<A980E<<4I308M6?<AGC__YO[E69JJLRX89=0ECG[_134?LHN\V:9;6GAIU]372=NF@^T<994IOKW[5303@DBXR>97:KMMQY7?>1BBDZP0958MKOSW93<7D@FT^2B3>OIA]U;N:5FNHV\4F1<AGC_S=J8;HLJPZ6B?2CEEYQ?F69JJLRX99=0ECG[_034?LHN\V;9;6GAIU]272=NF@^T=994IOKW[4303@DBXR?97:KMMQY6?>1BBDZP1958MKOSW83<7D@FT^3B3>OIA]U:N:5FNHV\5F1<AGC_S<J8;HLJPZ7B?2CEEYQ>F69JJLRX:9=0ECG[_334?LHN\V89;6GAIU]172=NF@^T>994IOKW[7303@DBXR<97:KMMQY5?>1BBDZP2958MKOSW;3<7D@FT^0B3>OIA]U9N:5FNHV\6F1<AGC_S?J8;HLJPZ4B?2CEEYQ=F69JJLRX;9=0ECG[_234?LHN\V99;6GAIU]072=NF@^T?994IOKW[6303@DBXR=97:KMMQY4?>1BBDZP3958MKOSW:3<7D@FT^1B3>OIA]U8N:5FNHV\7F1<AGC_S>J8;HLJPZ5B?2CEEYQ<F79JJLRXI?1BBDZPB39OM7=KG?1GCLJJD69OKBODIE>0@XZ>4:NVP70<D\^9SI84LTV1[I2<D\^8:6BZT2]O0>JR\=<0@XZ;_E78IVAHF<1FYUMVc:ObnjtQm{ybccm4MhllvScu{`ee>6@>3:L251=I98;87C?=3:L271=I9:8?7C?<359M56233G;8995A1247?K74?=1E=>6;;O30=6=I9=>0B<:?4:L2015<F8?87C?93:L236=I91>0B<663:L2=6=I:990B??<;O017>H5;:1E>9=4N370?K41;2D9;>5A2918J7?53G987C=?3:L056=I;;90B>=<;O177>H4=:1E?;=4N250?K5?;2D85>5A4118J1743G>9?6@;329M014<F<80B:<4N8d8JGYE]ZZBBR^]OQQ4?KCS_FX@=6A=;NI2?U2<XHX_m6^FN^@VWLB_j2ZBBRLZSOCNA6=WZL;0]n5]AL@22ZU6WZ>j7_KND^DJVVR63Z;87^GB_BMOHLUNGGUHDHMD6:QLQWEB?2YYZLBPA69PVSGKWK>0_^\N4:QPVG2<\PZN??5Z0.eqb+ta'nis"nbdx.O{kwYulVzexQhc^zlv5678VXnxb{1208Q5)`zo$yj"ilx/aoo})JpfxT~iQnup\cfYg{:;<<Q]erwop4553\:$kh!rg-dg}(ddbr$Aua}_sf\tkruWniTtb|?010\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZtcWyd~Ril_ymq4564W[oxyaz>339V4*aun'xm#jmw.bnh|*Kg{UyhR~ats]dgZ~hz9:;8R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pre]sjqtXojUsc>?04]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[wbXxg~ySjmPxnp3450XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzVxoS}`{r^e`[}iu89:<S_k|umv277=R8&myj#|i/fa{*fjlp&GscQ}d^rmpwY`kVrd~=>?8^Pfwpjs9:80Y=!hrg,qb*adp'iggu!Bxnp\vaYwf}xTknQwos234<YUmzgx<==;T2,cw`)zo%lou lljz,I}iuW{nT|cz}_fa\|jt788:T^h}zlu306>S7'nxm"h gbz-gim'Drd~R|k_qlwvZadWqey<=?>_Sgpqir6;;1^<"i}f/pe+be&jf`t"Cwos]q`Zvi|{UloRv`r1226ZTb{|f=><4U1-dvc(un&mht#mcky-N|jtXzmU{by|Pgb]{kw679:UYi~{ct017?P6(o{l%~k!hcy,`hn~(EqeySyc_wcoq`6X8Vrd~=>?0^Pfwpjs9:>0Y=!hrg,qb*adp'iggu!Bxnp\phvX~hf~i=Q>_ymq4567W[oxyaz>339V4*aun'xm#jmw.bnh|*Kg{Ua}Qyamwf4Z4Xpfx;<=>Pxn>3:60<]9%l~k }f.e`|+ekcq%Ftb|Ptlr\rdjrm9U9Sua}0123[}i;87UX[==n;T2,cw`)zo%lou lljz,I}iuW}g{S{ocud2\6Z~hz9:;<Rv`<1<\WR6X[^:8:6[?/fpe*w`(ojr%oaew/LzlvZrjxV|j`xk?_3]{kw6789Usc1>1_RU273=R8&myj#|i/fa{*fjlp&GscQ{mq]ueisb8V8Ttb|?012\|j:76VY\>>:4U1-dvc(un&mht#mcky-N|jtX|dzTzlbze1]1[}iu89::S_k|umv271=R8&myj#|i/fa{*fjlp&GscQ{mq]ueisb8V8Ttb|?011\V`urd};8?6[?/fpe*w`(ojr%oaew/LzlvZquWyd~Rlfn^zlv5678VXnxb{1218Q5)`zo$yj"ilx/aoo})JpfxT{Qnup\flhXpfx;<=?PRdqvhq74;2_;#j|i.sd,cf~)keas#@v`r^uq[uhszVhbbRv`r1236ZTb{|f=>=4U1-dvc(un&mht#mcky-N|jtX{U{by|Pbhl\|jt7899T^h}zlu307>S7'nxm"h gbz-gim'Drd~Ry}_qlwvZdnfVrd~=>?4^Pfwpjs9:90Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTnd`Pxnp3453XZly~`y?<3:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^`jjZ~hz9:;:R\jstnw565<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXj`dTtb|?015\V`urd};8?6[?/fpe*w`(ojr%oaew/LzlvZquWyd~Rlfn^zlv5670VXnxb{1208Q5)`zo$yj"ilx/aoo})JpfxT{Qnup\cfYg{:;<=Q]erwop4553\:$kh!rg-dg}(ddbr$Aua}_vp\tkruWniTtb|?013\V`urd};8>6[?/fpe*w`(ojr%oaew/LzlvZquWyd~Ril_ymq4565W[oxyaz>339V4*aun'xm#jmw.bnh|*Kg{U|~R~ats]dgZ~hz9:;?R\jstnw564<]9%l~k }f.e`|+ekcq%Ftb|Pws]sjqtXojUsc>?05]Qavsk|8997X> gsd-vc)`kq$h`fv Mymq[rtXxg~ySjmPxnp3453XZly~`y?<2:W3+bta&{l$knv!cmi{+H~hzV}yS}`{r^e`[}iu89:=S_k|umv277=R8&myj#|i/fa{*fjlp&GscQxr^rmpwY`kVrd~=>?7^Pfwpjs9:80Y=!hrg,qb*adp'iggu!Bxnp\swYwf}xTknQwos234=YUmzgx<==;T2,cw`)zo%lou lljz,I}iuW~xT|cz}_fa\|jt7893T^h}zlu306>S7'nxm"h gbz-gim'Drd~Ry}_qlwvZadWqey<=??_Sgpqir6;;1^<"i}f/pe+be&jf`t"Cwos]tvZvi|{UloRv`r1225ZTb{|f=?<4U1-dvc(un&mht#mcky-q`Zvi|{Uiec2>0?01?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?5485:2_;#j|i.sd,cf~)keas#jPpovq[goi4885>?5Z0.eqb+ta'nis"nbdx.pg[uhszVhbb1?<>308Q5)`zo$yj"ilx/aoo})ulVzexQmio>20;463\:$kh!rg-dg}(ddbr$~iQnup\flh;:78:7X> gsd-vc)`kq$h`fv re]sjqtXj`d7?3<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`34?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?1;463\:$kh!rg-dg}(ddbr$~iQnup\flh;>78:7X> gsd-vc)`kq$h`fv re]sjqtXj`d7;3<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`38?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl?=;463\:$kh!rg-dg}(ddbr$~iQnup\flhX998:7X> gsd-vc)`kq$h`fv re]sjqtXj`dT=<<>;T2,cw`)zo%lou lljz,vaYwf}xTnd`P1302?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\56463\:$kh!rg-dg}(ddbr$~iQnup\flhX9=8;7X> gsd-vc)`kq$h`fv re]sjqtXj`dT>?>4U1-dvc(un&mht#mcky-q`Zvi|{UiecQ<219V4*aun'xm#jmw.bnh|*tcWyd~Rlfn^614>S7'nxm"h gbz-gim'{nT|cz}_ckm[0473\:$kh!rg-dg}(ddbr$~iQnup\flhX>;:0Y=!hrg,qb*adp'iggu!}d^rmpwYeagU<>=5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbR6=0:W3+bta&{l$knv!cmi{+wbXxg~ySoga_805?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\|jt789:9;6[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}0123570<]9%l~k }f.e`|+ekcq%yhR~ats]amkYg{:;<<<8;T2,cw`)zo%lou lljz,vaYwf}xTnd`Pxnp34576:?1^<"i}f/pe+be&jf`t"|k_qlwvZdnfVrd~=>?2358Q5)`zo$yj"ilx/aoo})ulVzexQmio]{kw678;;9:6[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}012062=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ~hz9:;??<9;T2,cw`)zo%lou lljz,vaYwf}xTnd`Pxnp34525?2_;#j|i.sd,cf~)keas#jPpovq[goiWqey<=>;1348Q5)`zo$yj"ilx/aoo})ulVzexQmio]{kw678<8<7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?017263=R8&myj#|i/fa{*fjlp&xoS}`{r^`jjZ~hz9:;:?64U1-dvc(un&mht#mcky-q`Zvi|{UiecQwos234376:>1^<"i}f/pe+be&jf`t"|k_qlwvZdnfVrd~=>?630a?P6(o{l%~k!hcy,`hn~(zmU{by|Pbhl\|jt789<Tnij?279V4*aun'xm#jmw.bnh|*tcWyd~Rlfn^zlv567?;=0Y=!hrg,qb*adp'iggu!}d^rmpwYeagUsc>?06312>S7'nxm"h gbz-gim'{nT|cz}_ckm[}iu89:3>n5Z0.eqb+ta'nis"nbdx.pg[uhszVhbbRv`r123<47X[^:9o6[?/fpe*w`(ojr%oaew/sf\tkruWkceSua}012;54YT_88h7X> gsd-vc)`kq$h`fv re]sjqtXj`dTtb|?01:25ZUP:;=0Y=!hrg,qb*adp'iggu!}d^rmpwYeagUsc>?09014>S7'nxm"h gbz-gim'{nT|cz}_fa?4;463\:$kh!rg-dg}(ddbr$~iQnup\cf:6878:7X> gsd-vc)`kq$h`fv re]sjqtXoj6:=3<>;T2,cw`)zo%lou lljz,vaYwf}xTkn2>2?02?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb>27;463\:$kh!rg-dg}(ddbr$~iQnup\cf:6<78;7X> gsd-vc)`kq$h`fv re]sjqtXoj6:2?>4U1-dvc(un&mht#mcky-q`Zvi|{Ulo1<1219V4*aun'xm#jmw.bnh|*tcWyd~Ril<2<14>S7'nxm"h gbz-gim'{nT|cz}_fa?0;473\:$kh!rg-dg}(ddbr$~iQnup\cf:26;:0Y=!hrg,qb*adp'iggu!}d^rmpwY`k5<5>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmh0:0=0:W3+bta&{l$knv!cmi{+wbXxg~ySjm38?03?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb>::4`<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ66n2_;#j|i.sd,cf~)keas#jPpovq[beX9;:0Y=!hrg,qb*adp'iggu!}d^rmpwY`kV;;>=5Z0.eqb+ta'nis"nbdx.pg[uhszVmhS<?=0:W3+bta&{l$knv!cmi{+wbXxg~ySjmP1303?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]2776<]9%l~k }f.e`|+ekcq%yhR~ats]dgZ739o1^<"i}f/pe+be&jf`t"|k_qlwvZadW;;m7X> gsd-vc)`kq$h`fv re]sjqtXojU8=k5Z0.eqb+ta'nis"nbdx.pg[uhszVmhS9?i;T2,cw`)zo%lou lljz,vaYwf}xTknQ:1g9V4*aun'xm#jmw.bnh|*tcWyd~Ril_73e?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]45c=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[=7a3\:$kh!rg-dg}(ddbr$~iQnup\cfY>:?1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyij2?>358Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`a;9949;6[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg=32:71<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7=?0=7:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfc9746;=0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hi315<12>S7'nxm"h gbz-gim'{nT|cz}_fa\evtbo5;5>;5Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef>1:70<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlm7?3<9;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd8185>2_;#j|i.sd,cf~)keas#jPpovq[beXizxnk1;1279V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqab:16;<0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hi37?05?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`4149:6[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg=;=60=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnU;>85Z0.eqb+ta'nis"nbdx.pg[uhszVmhSl}}ef]263=R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnU:<?84U1-dvc(un&mht#mcky-q`Zvi|{UloRo|rde\54413\:$kh!rg-dg}(ddbr$~iQnup\cfYf{{olS<<=6:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZ74:?1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQ>4378Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aX:;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP3378Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aX<;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP5378Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aX>;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP7378Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aX0;?0Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiP93c8Q5)`zo$yj"ilx/aoo})ulVzexQhc^cpv`aXl86:<3<n;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7;9849m6[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f28449:h1^<"i}f/pe+be&jf`t"|k_qlwvZadWhyyijQk1=30:7g<]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<2>4?0:?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;7>3<6;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7;;7827X> gsd-vc)`kq$h`fv re]sjqtXojUjkh_e3?0;4>3\:$kh!rg-dg}(ddbr$~iQnup\cfYf{{olSi?35?0:?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;7:3<6;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7;?7827X> gsd-vc)`kq$h`fv re]sjqtXojUjkh_e3?<;4>3\:$kh!rg-dg}(ddbr$~iQnup\cfYf{{olSi?39?0:?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;T==<6;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7X98827X> gsd-vc)`kq$h`fv re]sjqtXojUjkh_e3\574>3\:$kh!rg-dg}(ddbr$~iQnup\cfYf{{olSi?P120:?P6(o{l%~k!hcy,`hn~(zmU{by|Pgb]bwwc`Wm;T=9<7;T2,cw`)zo%lou lljz,vaYwf}xTknQnssgd[a7X:;20Y=!hrg,qb*adp'iggu!}d^rmpwY`kVkx~hiPd0]06==R8&myj#|i/fa{*fjlp&xoS}`{r^e`[duumnUo=R:=8:W3+bta&{l$knv!cmi{+wbXxg~ySjmParpfcZb6W<837X> gsd-vc)`kq$h`fv re]sjqtXojUjkh_e3\27><]9%l~k }f.e`|+ekcq%yhR~ats]dgZgtzlmTh<Q8299V4*aun'xm#jmw.bnh|*tcWyd~Ril_`qqabYc9V2946[?/fpe*w`(ojr%oaew/sf\tkruWniTm~|jg^f2[<423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<=<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2344423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<?<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2346423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<9<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2340423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<;<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2342423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;<5<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos234<423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;==<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2354423\:$kh!rg-dg}(ddbr$~iQnup\cfYg{:;=?<:;T2,cw`)zo%lou lljz,vaYwf}xTknQwos2356403\:$kh!rg-dg}(ddbr$x`~Pv`nva5Y7Wqey<=>?269V4*aun'xm#jmw.bnh|*rjxV|j`xk?_0]{kw67898<7X> gsd-vc)`kq$h`fv tlr\rdjrm9U9Sua}012362=R8&myj#|i/fa{*fjlp&~f|Rxnltg3[7Yg{:;<<<8;T2,cw`)zo%lou lljz,phvX~hf~i=Q=_ymq4564:>1^<"i}f/pe+be&jf`t"zbp^tbhpc5W;Usc>?010a?P6(o{l%~k!hcy,`hn~(|dzTzlbze3]1[}iu89:;S^Y?269V4*aun'xm#jmw.bnh|*rjxV|j`xk=_2]{kw6789837X> gsd-vc)`kq$h`fv tlr\rdjrm;U8Sua}0123571<]9%l~k }f.e`|+ekcq%a}Qyamwf6Z2Xpfx;<=>=8:W3+bta&{l$knv!cmi{+qkwWkgyh<P4^zlv567888:7X> gsd-vc)`kq$h`fv ws]sjqtXj`d7<3<=;T2,cw`)zo%lou lljz,swYwf}xTnd`311<16>S7'nxm"h gbz-gim'~xT|cz}_ckm8479:;1^<"i}f/pe+be&jf`t"y}_qlwvZdnf5;92??4U1-dvc(un&mht#mcky-tvZvi|{Uiec2>>338Q5)`zo$yj"ilx/aoo})pzVzexQmio>1:77<]9%l~k }f.e`|+ekcq%|~R~ats]amk:46;;0Y=!hrg,qb*adp'iggu!xr^rmpwYeag6?2??4U1-dvc(un&mht#mcky-tvZvi|{Uiec2:>338Q5)`zo$yj"ilx/aoo})pzVzexQmio>5:77<]9%l~k }f.e`|+ekcq%|~R~ats]amk:06;;0Y=!hrg,qb*adp'iggu!xr^rmpwYeag632??4U1-dvc(un&mht#mcky-tvZvi|{Uiec26>328Q5)`zo$yj"ilx/aoo})pzVzexQmio]365=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ7592_;#j|i.sd,cf~)keas#z|Ppovq[goiW8:9=6[?/fpe*w`(ojr%oaew/vp\tkruWkceS<?=1:W3+bta&{l$knv!cmi{+rtXxg~ySoga_0014>S7'nxm"h gbz-gim'~xT|cz}_ckm[7473\:$kh!rg-dg}(ddbr${Qnup\flhX;;:0Y=!hrg,qb*adp'iggu!xr^rmpwYeagU?>=5Z0.eqb+ta'nis"nbdx.uq[uhszVhbbR;=0:W3+bta&{l$knv!cmi{+rtXxg~ySoga_703?P6(o{l%~k!hcy,`hn~({U{by|Pbhl\376<]9%l~k }f.e`|+ekcq%|~R~ats]amkY?:91^<"i}f/pe+be&jf`t"y}_qlwvZdnfV39:6[?/fpe*w`(ojr%oaew/vp\tkruWkceSua}012363=R8&myj#|i/fa{*fjlp&}yS}`{r^`jjZ~hz9:;=?84U1-dvc(un&mht#mcky-tvZvi|{UiecQwos2347413\:$kh!rg-dg}(ddbr${Qnup\flhXpfx;<===6:W3+bta&{l$knv!cmi{+rtXxg~ySoga_ymq4563:?1^<"i}f/pe+be&jf`t"y}_qlwvZdnfVrd~=>?5348Q5)`zo$yj"ilx/aoo})pzVzexQmio]{kw678?8=7X> gsd-vc)`kq$h`fv ws]sjqtXj`dTtb|?01512>S7'nxm"h gbz-gim'~xT|cz}_ckm[}iu89:3>=5Z0.eqb+ta'nis"nbdx.uq[uhszVmh0=0=1:W3+bta&{l$knv!cmi{+rtXxg~ySjm311<15>S7'nxm"h gbz-gim'~xT|cz}_fa?548592_;#j|i.sd,cf~)keas#z|Ppovq[be;9;49<6[?/fpe*w`(ojr%oaew/vp\tkruWni7=3<?;T2,cw`)zo%lou lljz,swYwf}xTkn2=>328Q5)`zo$yj"ilx/aoo})pzVzexQhc=1=65=R8&myj#|i/fa{*fjlp&}yS}`{r^e`818582_;#j|i.sd,cf~)keas#z|Ppovq[be;=78;7X> gsd-vc)`kq$h`fv ws]sjqtXoj6=2?>4U1-dvc(un&mht#mcky-tvZvi|{Ulo191219V4*aun'xm#jmw.bnh|*quWyd~Ril<9<14>S7'nxm"h gbz-gim'~xT|cz}_fa?=;7a3\:$kh!rg-dg}(ddbr${Qnup\cfY79o1^<"i}f/pe+be&jf`t"y}_qlwvZadW88;7X> gsd-vc)`kq$h`fv ws]sjqtXojU:<?>4U1-dvc(un&mht#mcky-tvZvi|{UloR?>219V4*aun'xm#jmw.bnh|*quWyd~Ril_002b>S7'nxm"h gbz-gim'~xT|cz}_fa\64`<]9%l~k }f.e`|+ekcq%|~R~ats]dgZ56n2_;#j|i.sd,cf~)keas#z|Ppovq[beX<8l0Y=!hrg,qb*adp'iggu!xr^rmpwY`kV?:j6[?/fpe*w`(ojr%oaew/vp\tkruWniT:<h4U1-dvc(un&mht#mcky-tvZvi|{UloR9>f:W3+bta&{l$knv!cmi{+rtXxg~ySjmP80d8Q5)`zo$yj"ilx/aoo})pzVzexQhc^;12>S7'nxm"h gbz-gim'~xT|cz}_fa\evtbo5:5>:5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef>24;403\:$kh!rg-dg}(ddbr${Qnup\cfYf{{ol0<?1269V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqab:6:78=7X> gsd-vc)`kq$h`fv ws]sjqtXojUjkh<0<12>S7'nxm"h gbz-gim'~xT|cz}_fa\evtbo585>;5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef>0:70<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlm783<9;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd8085>2_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnk181279V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqab:06;<0Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hi38?05?P6(o{l%~k!hcy,`hn~({U{by|Pgb]bwwc`404996[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^211>S7'nxm"h gbz-gim'~xT|cz}_fa\evtboV;9:6[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^3363=R8&myj#|i/fa{*fjlp&}yS}`{r^e`[duumnU:=?84U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\57423\:$kh!rg-dg}(ddbr${Qnup\cfYf{{olS?<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[6423\:$kh!rg-dg}(ddbr${Qnup\cfYf{{olS9<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[0423\:$kh!rg-dg}(ddbr${Qnup\cfYf{{olS;<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[2423\:$kh!rg-dg}(ddbr${Qnup\cfYf{{olS5<:;T2,cw`)zo%lou lljz,swYwf}xTknQnssgd[<4>3\:$kh!rg-dg}(ddbr${Qnup\cfYf{{olSi?30?0b?P6(o{l%~k!hcy,`hn~({U{by|Pgb]bwwc`Wm;7==0=a:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb648;5>l5Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g59756;30Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0>2:7?<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlmTh<2=>3;8Q5)`zo$yj"ilx/aoo})pzVzexQhc^cpv`aXl8682?74U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\`4:36;30Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0>6:7?<]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlmTh<29>3;8Q5)`zo$yj"ilx/aoo})pzVzexQhc^cpv`aXl86<2?74U1-dvc(un&mht#mcky-tvZvi|{UloRo|rde\`4:?6;30Y=!hrg,qb*adp'iggu!xr^rmpwY`kVkx~hiPd0>::7><]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlmTh<Q?299V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqabYc9V;956[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2[46512_;#j|i.sd,cf~)keas#z|Ppovq[beXizxnkRj>_031=>S7'nxm"h gbz-gim'~xT|cz}_fa\evtboVn:S<<=8:W3+bta&{l$knv!cmi{+rtXxg~ySjmParpfcZb6W;837X> gsd-vc)`kq$h`fv ws]sjqtXojUjkh_e3\77><]9%l~k }f.e`|+ekcq%|~R~ats]dgZgtzlmTh<Q;299V4*aun'xm#jmw.bnh|*quWyd~Ril_`qqabYc9V?946[?/fpe*w`(ojr%oaew/vp\tkruWniTm~|jg^f2[34?3\:$kh!rg-dg}(ddbr${Qnup\cfYf{{olSi?P73:8Q5)`zo$yj"ilx/aoo})pzVzexQhc^cpv`aXl8U3>55Z0.eqb+ta'nis"nbdx.uq[uhszVmhSl}}ef]g5Z?5=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=>=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp34575=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=<=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp34555=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=:=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp34535=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=8=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp34515=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<=6=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp345?5=2_;#j|i.sd,cf~)keas#z|Ppovq[beXpfx;<<>=5:W3+bta&{l$knv!cmi{+rtXxg~ySjmPxnp3447512_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(khxyuck{<1<1=>S7'nxm"h gm2-va)`zhy%~~z|/b2,gdtuqgo0<0=9:W3+bta&{l$ka>!re-dvdu)zz~x#n> c`pq}kcs4;4956[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$ol|}yogw868512_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(khxyuck{<5<1=>S7'nxm"h gm2-va)`zhy%~~z|/b2,gdtuqgo080=9:W3+bta&{l$ka>!re-dvdu)zz~x#n> c`pq}kcs4?49j6[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$k`{w.foX4X(`e8$f=?h4U1-dvc(un&mg<#|k/fpbw+tt|z%h<"ibuy,di^7Z&ngx"`}=f:W3+bta&{l$ka>!re-dvdu)zz~x#n> glw{*bk\:T$la~ bs3d8Q5)`zo$yj"ic0/pg+btf{'xxx~!l0.enq}(`eR9V"jc|.lq1b>S7'nxm"h gm2-va)`zhy%~~z|/b2,chs&ngP8P hmr,nw7`<]9%l~k }f.eo4+tc'nxj#||tr-`4*aj}q$laV;R.fop*hu5n2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(ods"jcT6\,div(j{;l0Y=!hrg,qb*ak8'xo#j|ns/pppv)d8&mfyu hmZ5^*bkt&dy9?6[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$z<2?>318Q5)`zo$yj"ic0/pg+btf{'xxx~!l0.t28485;2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(~8692?=4U1-dvc(un&mg<#|k/fpbw+tt|z%h<"x><2<17>S7'nxm"h gm2-va)`zhy%~~z|/b2,r4:36;90Y=!hrg,qb*ak8'xo#j|ns/pppv)d8&|:080=3:W3+bta&{l$ka>!re-dvdu)zz~x#n> v0>5:75<]9%l~k }f.eo4+tc'nxj#||tr-`4*p64>49n6[?/fpe*w`(oe:%~i!hr`q-vvrt'j:$z<Q?_`lg45679;h0Y=!hrg,qb*ak8'xo#j|ns/pppv)d8&|:S<Qnne234575j2_;#j|i.sd,ci6)zm%l~l}!rrvp+f6(~8U9Sl`k012357d<]9%l~k }f.eo4+tc'nxj#||tr-`4*p6W:Ujbi>?0131f>S7'nxm"h gm2-va)`zhy%~~z|/b2,r4Y3Whdo<=>?13`8Q5)`zo$yj"ic0/pg+btf{'xxx~!l0.t2[0Yffm:;<=?=b:W3+bta&{l$ka>!re-dvdu)zz~x#n> v0]5[dhc89:;=?l4U1-dvc(un&mg<#|k/fpbw+tt|z%h<"x>_6]mkq6789;956[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$ol|}yogw858512_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(khxyuck{<0<1=>S7'nxm"h gm2-va)`zhy%~~z|/b3,gdtuqgo0?0=9:W3+bta&{l$ka>!re-dvdu)zz~x#n? c`pq}kcs4:4956[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$ol|}yogw818512_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(khxyuck{<4<1=>S7'nxm"h gm2-va)`zhy%~~z|/b3,gdtuqgo0;0=f:W3+bta&{l$ka>!re-dvdu)zz~x#n? glw{*bk\8T$la< b13d8Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.enq}(`eR;V"jc|.lq1b>S7'nxm"h gm2-va)`zhy%~~z|/b3,chs&ngP>P hmr,nw7`<]9%l~k }f.eo4+tc'nxj#||tr-`5*aj}q$laV=R.fop*hu5n2_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(ods"jcT4\,div(j{;l0Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&mfyu hmZ7^*bkt&dy9j6[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$k`{w.foX2X(`ez$f?h4U1-dvc(un&mg<#|k/fpbw+tt|z%h="ibuy,di^1Z&ngx"`}=3:W3+bta&{l$ka>!re-dvdu)zz~x#n? v0>3:75<]9%l~k }f.eo4+tc'nxj#||tr-`5*p64849?6[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$z<2=>318Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.t28685;2_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(~86?2?=4U1-dvc(un&mg<#|k/fpbw+tt|z%h="x><4<17>S7'nxm"h gm2-va)`zhy%~~z|/b3,r4:16;90Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&|:0:0=b:W3+bta&{l$ka>!re-dvdu)zz~x#n? v0]3[dhc89:;=?l4U1-dvc(un&mg<#|k/fpbw+tt|z%h="x>_0]bja6789;9n6[?/fpe*w`(oe:%~i!hr`q-vvrt'j;$z<Q=_`lg45679;h0Y=!hrg,qb*ak8'xo#j|ns/pppv)d9&|:S>Qnne234575j2_;#j|i.sd,ci6)zm%l~l}!rrvp+f7(~8U?Sl`k012357d<]9%l~k }f.eo4+tc'nxj#||tr-`5*p6W<Ujbi>?0131f>S7'nxm"h gm2-va)`zhy%~~z|/b3,r4Y1Whdo<=>?13`8Q5)`zo$yj"ic0/pg+btf{'xxx~!l1.t2[2Yig}:;<=?=0:W3+bta&{l$ka>!re-dvdu)zz~x#nabp103?P6(o{l%~k!hl1,q`*auiz$yy} cnos57?<]9%l~k }f.eo4+tc'nxj#||tr-qehYbey~rSklPi228Q5)`zo$yj"ic0/pg+btf{'xxx~!}al]fiur~WohTeRa}012374=R8&myj#|i/fn3*wb(o{kx"}{s.pbiZcjx}sTjoQf_np34566:?1^<"i}f/pe+bj7&{n$ko|.sqww*tfeVof|ywPi0f8Q5)`zo$yj"ic0/pg+wgjW{nTicQf1318Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkr5<2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfex<<:;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw55423\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|d=<<:;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw57423\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|d=><:;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw51433\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|d>?:4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov061=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}>986[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at407?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphs>;>0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|Vidycz8259V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjq>5<2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfex4<6;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[f;878h7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?4;Yu|;k0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPcx>24;4c3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw311<\vq4f3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw310<1`>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir0<?1_sv1e>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir0<<12e9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5;92R|{2`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5;82?j4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:6;7Uyx?74U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\g|:66;i0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPcx>2:Zts:01^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQly=0=6f=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Uhu1<1_sv1=>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vir0>0=c:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4:4T~y<6;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[f;<78h7X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?0;Yu|;30Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPcx>6:7e<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Tot2:>^pw6<=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Uhu1812b9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5<5Sz=9:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZe~4>49o6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^az828Xz}827X> gsd-vc)`d9$yh"|nup,Ifirf}Uhcx`{_b{?<;4d3\:$kh!rg-dh5(ul&x{by| MbmvjqYdg|dSnw38?]qp7?<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Tot26>3a8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXkp622R|{2`9V4*aun'xm#jb?.sf,vuhsz&Ghcx`{_bmvjqYg{6;2?l4U1-dvc(un&mg<#|k/srmpw)JkfexRm`uov\|jt;9949n6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^zlv9766;h0Y=!hrg,qb*ak8'xo#~ats-Ngjsi|VidyczPxnp?5785j2_;#j|i.sd,ci6)zm%y|cz}/LalqkrXkfexRv`r=30:7d<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Ttb|315<1a>S7'nxm"h gm2-va)uxg~y#@m`uov\gjsi|Vrd~1?;>^pw6d=R8&myj#|i/fn3*wb(zyd~"Clotlw[firf}Usc2>>3c8Q5)`zo$yj"ic0/pg+wvi|{%Fob{at^alqkrXpfx7>3<n;T2,cw`)zo%l`= }d.psjqt(Eje~byQlotlw[}iu4:49m6[?/fpe*w`(oe:%~i!}povq+Heh}g~Tob{at^zlv929:h1^<"i}f/pe+bj7&{n$~}`{r.O`kphsWje~byQwos>6:7g<]9%l~k }f.eo4+tc'{zex!BcnwmpZeh}g~Ttb|36?0b?P6(o{l%~k!hl1,q`*twf}x$Anaznu]`kphsWqey0:0=a:W3+bta&{l$ka>!re-qtkru'DidyczPcnwmpZ~hz525>l5Z0.eqb+ta'nf;"j rqlwv*Kdg|dSnaznu]{kw:>68l0Y=!hrg,qb*ak8'xo#~ats-`kphs4949<6[?/fpe*w`(oe:%~i!}povq+firf}6:<3<?;T2,cw`)zo%l`= }d.psjqt(kfex1?>>328Q5)`zo$yj"ic0/pg+wvi|{%hcx`{<00=65=R8&myj#|i/fn3*wb(zyd~"m`uov?568582_;#j|i.sd,ci6)zm%y|cz}/bmvjq:6<7;m7X> gsd-vc)`d9$yh"|nup,gjsi|5;5=k5Z0.eqb+ta'nf;"j rqlwv*eh}g~7>3?i;T2,cw`)zo%l`= }d.psjqt(kfex1=11g9V4*aun'xm#jb?.sf,vuhsz&idycz34?3e?P6(o{l%~k!hl1,q`*twf}x$ob{at=7=5c=R8&myj#|i/fn3*wb(zyd~"m`uov?2;7a3\:$kh!rg-dh5(ul&x{by| cnwmp9199o1^<"i}f/pe+bj7&{n$~}`{r.alqkr;07;m7X> gsd-vc)`d9$yh"|nup,gjsi|535=h5Z0.eqb+ta'nf;"j rqlwv*eh}g~T<<k4U1-dvc(un&mg<#|k/srmpw)dg|dS<?i;T2,cw`)zo%l`= }d.psjqt(kfexR??1g9V4*aun'xm#jb?.sf,vuhsz&idyczP103e?P6(o{l%~k!hl1,q`*twf}x$ob{at^315c=R8&myj#|i/fn3*wb(zyd~"m`uov\567a3\:$kh!rg-dh5(ul&x{by| cnwmpZ739l1^<"i}f/pe+bj7&{n$~}`{r.alqkrX:8o0Y=!hrg,qb*ak8'xo#~ats-`kphsW:;n7X> gsd-vc)`d9$yh"|nup,gjsi|V>:i6[?/fpe*w`(oe:%~i!}povq+firf}U>=h5Z0.eqb+ta'nf;"j rqlwv*eh}g~T:<k4U1-dvc(un&mg<#|k/srmpw)dg|dS:?j;T2,cw`)zo%l`= }d.psjqt(kfexR6>e:W3+bta&{l$ka>!re-qtkru'je~byQ6239V4*aun'xm#jb?.sf,vuhsz&idyczPd0>3:75<]9%l~k }f.eo4+tc'{zex!lotlw[a7;9949?6[?/fpe*w`(oe:%~i!}povq+firf}Uo=1?>>318Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?5785;2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc95;82?=4U1-dvc(un&mg<#|k/srmpw)dg|dSi?315<16>S7'nxm"h gm2-va)uxg~y#naznu]g5979:;1^<"i}f/pe+bj7&{n$~}`{r.alqkrXl8692?<4U1-dvc(un&mg<#|k/srmpw)dg|dSi?33?01?P6(o{l%~k!hl1,q`*twf}x$ob{at^f28185:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc95?5>?5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th<29>308Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3?3;453\:$kh!rg-dh5(ul&x{by| cnwmpZb64149>6[?/fpe*w`(oe:%~i!}povq+firf}Uo=171209V4*aun'xm#jb?.sf,vuhsz&idyczPd0]364=R8&myj#|i/fn3*wb(zyd~"m`uov\`4Y6:;1^<"i}f/pe+bj7&{n$~}`{r.alqkrXl8U:<?<4U1-dvc(un&mg<#|k/srmpw)dg|dSi?P1001?P6(o{l%~k!hl1,q`*twf}x$ob{at^f2[445:2_;#j|i.sd,ci6)zm%y|cz}/bmvjqYc9V;8>?5Z0.eqb+ta'nf;"j rqlwv*eh}g~Th<Q>4338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\677<]9%l~k }f.eo4+tc'{zex!lotlw[a7X;;;0Y=!hrg,qb*ak8'xo#~ats-`kphsWm;T8??4U1-dvc(un&mg<#|k/srmpw)dg|dSi?P5338Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_e3\277<]9%l~k }f.eo4+tc'{zex!lotlw[a7X?;;0Y=!hrg,qb*ak8'xo#~ats-`kphsWm;T4??4U1-dvc(un&mg<#|k/srmpw)dg|dSi?P9368Q5)`zo$yj"ic0/pg+wvi|{%hcx`{_omw4566;o1^<"i}f/pe+bj7&~x$kzo|.fre*rtwn&GjhiQkigd\tkruWykoSljk0123[f;87>;7X> gsd-vc)`d9$|~"ixar,dtc(pzyl$Aljk_ekebZvi|{U{miQnde2345Ydq5;;29>4U1-dvc(un&mg<#y}/fubw+awn'}y|k!Baef\`l`aWyd~R~nd^cg`5678Vir0<?1419V4*aun'xm#jb?.vp,crgt&nzm"z|f.Ob`aYcaolT|cz}_qcg[dbc89:;Snw313<0b>S7'nxm"h gm2-sw)`hy%k}h!wsre+HgclVnbjkQnup\tdbXimn;<=>Pcx>2:6`<]9%l~k }f.eo4+qu'n}j#if/uqtc)JimnThdhi_qlwvZvflVkoh=>?0^az8784n2_;#j|i.sd,ci6){%l{l}!gqd-swva'DkohRjffg]sjqtXxhnTmij?012\g|:46:l0Y=!hrg,qb*ak8'}y#jyns/esb+quxo%FmijPdhde[uhszVzjhRokd1234Ze~4=48j6[?/fpe*w`(oe:%{!hw`q-cu`){zm#@okd^fjbcYwf}xT|ljPaef3456Xkp6>2>h4U1-dvc(un&mg<#y}/fubw+awn'}y|k!Baef\`l`aWyd~R~nd^cg`5678Vir0;0<f:W3+bta&{l$ka>!ws-dsdu)oyl%{~i/Lcg`ZbnnoU{by|Pp`f\eab789:Tot28>2d8Q5)`zo$yj"ic0/uq+bqf{'m{j#y}pg-NeabXl`lmS}`{r^rb`Zgcl9:;<Rmv<9<0b>S7'nxm"h gm2-sw)`hy%k}h!wsre+HgclVnbjkQnup\tdbXimn;<=>Pcx>::17<]9%l~k }f.eo4+qu'n}j#if/uqtc)JimnThdhi_qlwvZvflVkoh=>?0^nvp9776=;0Y=!hrg,qb*ak8'}y#jyns/esb+quxo%FmijPdhde[uhszVzjhRokd1234Zjr|5;:29?4U1-dvc(un&mg<#y}/fubw+awn'}y|k!Baef\`l`aWyd~R~nd^cg`5678Vf~x1?=>538Q5)`zo$yj"ic0/uq+bqf{'m{j#y}pg-NeabXl`lmS}`{r^rb`Zgcl9:;<Rbzt=30:16<]9%l~k }f.eo4+qu'n}j#if/uqtc)JimnThdhi_qlwvZvflVkoh=>?0^nvp979<91^<"i}f/pe+bj7&~x$kzo|.fre*rtwn&GjhiQkigd\tkruWykoSljk0123[iss4;4?<6[?/fpe*w`(oe:%{!hw`q-cu`){zm#@okd^fjbcYwf}xT|ljPaef3456Xd|~7?3:?;T2,cw`)zo%l`= xr.etev(`xo$|~}h M`fg[aoanVzexQae]b`a6789Ugyy2;>528Q5)`zo$yj"ic0/uq+bqf{'m{j#y}pg-NeabXl`lmS}`{r^rb`Zgcl9:;<Rbzt=7=05=R8&myj#|i/fn3*rt(o~kx"j~i.vpsb*KflmUoekhPpovq[ugcWhno<=>?_mww838382_;#j|i.sd,ci6){%l{l}!gqd-swva'DkohRjffg]sjqtXxhnTmij?012\hpr;?7>;7X> gsd-vc)`d9$|~"ixar,dtc(pzyl$Aljk_ekebZvi|{U{miQnde2345Yk}}6329>4U1-dvc(un&mg<#y}/fubw+awn'}y|k!Baef\`l`aWyd~R~nd^cg`5678Vf~x171409V4*aun'xm#jb?.vp,crgt&nzm"z|f.Ob`aYcaolT|cz}_qcg[dbc89:;Sua}<01=75=R8&myj#|i/fn3*rt(o~kx"j~i.vpsb*bnnoU{by|Pp`f?5685n2_;#j|i.sd,ci6){%l{l}!gqd-swva'mcmjR~ats]seaY6;:20Y=!hrg,qb*ak8'}y#jyns/esb+quxo%oekhPpovq[ugcWhno<=>?<01=6d=R8&myj#|i/fn3*rt(o~kx"j~i.vpsb*vugnUmyabPi208Q5)`zo$yj"ic0/uq+bqf{'m{j#y}pg-svjaXn|fgSdQbuy2346543\:$kh!rg-dh5(pz&m|m~ hpg,tvu`(x{elSk{cl^k\ip~7899:??5Z0.eqb+ta'nf;"z| gvcp*bva&~x{j"~}of]eqijXaVddx=>?1218Q5)`zo$yj"ic0/uq+bqf{'m{j#y}pg-svjaXn|fgSdQaou23447512_;#j|i.sd,ci6){%l{l}!wrvp+f7(khxyuck{<1<1=>S7'nxm"h gm2-sw)`hy%{~z|/b3,gdtuqgo0<0=9:W3+bta&{l$ka>!ws-dsdu)z~x#n? c`pq}kcs4;4956[?/fpe*w`(oe:%{!hw`q-svrt'j;$ol|}yogw868512_;#j|i.sd,ci6){%l{l}!wrvp+f7(khxyuck{<5<1=>S7'nxm"h gm2-sw)`hy%{~z|/b3,gdtuqgo080=f:W3+bta&{l$ka>!ws-dsdu)z~x#n? glw{*bk\8T$la< b13d8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.enq}(`eR;V"jc|.lq1b>S7'nxm"h gm2-sw)`hy%{~z|/b3,chs&ngP>P hmr,nw7`<]9%l~k }f.eo4+qu'n}j#y|tr-`5*aj}q$laV=R.fop*hu5n2_;#j|i.sd,ci6){%l{l}!wrvp+f7(ods"jcT4\,div(j{;l0Y=!hrg,qb*ak8'}y#jyns/uppv)d9&mfyu hmZ7^*bkt&dy9j6[?/fpe*w`(oe:%{!hw`q-svrt'j;$k`{w.foX2X(`ez$f?=4U1-dvc(un&mg<#y}/fubw+qt|z%h="x><1<17>S7'nxm"h gm2-sw)`hy%{~z|/b3,r4:66;90Y=!hrg,qb*ak8'}y#jyns/uppv)d9&|:0?0=3:W3+bta&{l$ka>!ws-dsdu)z~x#n? v0>0:75<]9%l~k }f.eo4+qu'n}j#y|tr-`5*p64=49?6[?/fpe*w`(oe:%{!hw`q-svrt'j;$z<2:>318Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.t28385j2_;#j|i.sd,ci6){%l{l}!wrvp+f7(~8U;Sl`k012357d<]9%l~k }f.eo4+qu'n}j#y|tr-`5*p6W8Ujbi>?0131f>S7'nxm"h gm2-sw)`hy%{~z|/b3,r4Y5Whdo<=>?13`8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l1.t2[6Yffm:;<=?=b:W3+bta&{l$ka>!ws-dsdu)z~x#n? v0]7[dhc89:;=?l4U1-dvc(un&mg<#y}/fubw+qt|z%h="x>_4]bja6789;9n6[?/fpe*w`(oe:%{!hw`q-svrt'j;$z<Q9_omw45679;30Y=!hrg,qb*ak8'}y#jyns/uppv)d:&ij~waeu>3:7?<]9%l~k }f.eo4+qu'n}j#y|tr-`6*efz{seiy2>>3;8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.abvwim}692?74U1-dvc(un&mg<#y}/fubw+qt|z%h>"mnrs{maq:46;30Y=!hrg,qb*ak8'}y#jyns/uppv)d:&ij~waeu>7:7?<]9%l~k }f.eo4+qu'n}j#y|tr-`6*efz{seiy2:>3d8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.enq}(`eR:V"jc>.l31b>S7'nxm"h gm2-sw)`hy%{~z|/b0,chs&ngP=P hmr,nw7`<]9%l~k }f.eo4+qu'n}j#y|tr-`6*aj}q$laV<R.fop*hu5n2_;#j|i.sd,ci6){%l{l}!wrvp+f4(ods"jcT3\,div(j{;l0Y=!hrg,qb*ak8'}y#jyns/uppv)d:&mfyu hmZ6^*bkt&dy9j6[?/fpe*w`(oe:%{!hw`q-svrt'j8$k`{w.foX1X(`ez$f?h4U1-dvc(un&mg<#y}/fubw+qt|z%h>"ibuy,di^0Z&ngx"`}=3:W3+bta&{l$ka>!ws-dsdu)z~x#n< v0>3:75<]9%l~k }f.eo4+qu'n}j#y|tr-`6*p64849?6[?/fpe*w`(oe:%{!hw`q-svrt'j8$z<2=>318Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.t28685;2_;#j|i.sd,ci6){%l{l}!wrvp+f4(~86?2?=4U1-dvc(un&mg<#y}/fubw+qt|z%h>"x><4<17>S7'nxm"h gm2-sw)`hy%{~z|/b0,r4:16;h0Y=!hrg,qb*ak8'}y#jyns/uppv)d:&|:S=Qnne234575j2_;#j|i.sd,ci6){%l{l}!wrvp+f4(~8U:Sl`k012357d<]9%l~k }f.eo4+qu'n}j#y|tr-`6*p6W;Ujbi>?0131f>S7'nxm"h gm2-sw)`hy%{~z|/b0,r4Y4Whdo<=>?13`8Q5)`zo$yj"ic0/uq+bqf{'}xx~!l2.t2[1Yffm:;<=?=b:W3+bta&{l$ka>!ws-dsdu)z~x#n< v0]6[dhc89:;=?l4U1-dvc(un&mg<#y}/fubw+qt|z%h>"x>_7]mkq6789;9<6[?/fpe*w`(oe:%{!hw`q-svrt'jef|<<?;T2,cw`)zo%l`= xr.etev(p{}y$obc23:8Q5)`zo$yj"ic0/uq+bqf{'}xx~!}al]eqijXnkUb>85Z0.eqb+ta'nf;"z| gvcp*rus{&xjaRhzlm]j6a=R8&myj#|i/fn3*rt(o~kx"z}{s.pbiZ`rdeUbS`{w01236`=R8&myj#|i/fn3*rt(o~kx"z}{s.pbiZ`rdeUbS`{w012354b<]9%l~k }f.eo4+qu'{kfSz|Peo]j54`<]9%l~k }f.eo4+qu'{kfSz|Peo]j5Z76n2_;#j|i.sd,ci6){%ym`Qxr^gm[l7X:;90Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|Vidycz=4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp4423\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|d==<:;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw54423\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|d=?<;;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw672<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~8>95Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu610>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|<8?7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{6368Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkr0:=1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~by6=4:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmp<4>3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw30?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7<3Q}t3c8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp6:<3<k;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f;994T~y<n;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f;9849h6[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^az8479W{~956[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^az8485k2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<0<\vq4>3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSnw32?0`?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7>3Q}t3;8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXkp682?m4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:46Vx>45Z0.eqb+ta'nf;"z| wqlwv*Kdg|dSnaznu]`}929:j1^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=6=[wr512_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRmv<4<1g>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir080Pru0:?P6(o{l%~k!hl1,tv*qwf}x$Anaznu]`kphsWjs7:3<l;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[f;>7Uyx?74U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\g|:06;i0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPcx>4:Zts:01^<"i}f/pe+bj7&~x${}`{r.O`kphsWje~byQly=:=6f=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Uhu161_sv1=>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vir040=c:W3+bta&{l$ka>!ws-ttkru'DidyczPcnwmpZe~404T~y<n;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[}iu4949n6[?/fpe*w`(oe:%{!xpovq+Heh}g~Tob{at^zlv9776;h0Y=!hrg,qb*ak8'}y#z~ats-Ngjsi|VidyczPxnp?5485j2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRv`r=31:7c<]9%l~k }f.eo4+qu'~zex!BcnwmpZeh}g~Ttb|313<\vq4f3\:$kh!rg-dh5(pz&}{by| MbmvjqYdg|dSua}<0<1e>S7'nxm"h gm2-sw)pxg~y#@m`uov\gjsi|Vrd~1<12`9V4*aun'xm#jb?.vp,suhsz&Ghcx`{_bmvjqYg{682?o4U1-dvc(un&mg<#y}/vrmpw)JkfexRm`uov\|jt;<78j7X> gsd-vc)`d9$|~"ynup,Ifirf}Uhcx`{_ymq8085i2_;#j|i.sd,ci6){%||cz}/LalqkrXkfexRv`r=4=6d=R8&myj#|i/fn3*rt(yd~"Clotlw[firf}Usc28>3c8Q5)`zo$yj"ic0/uq+rvi|{%Fob{at^alqkrXpfx743<n;T2,cw`)zo%l`= xr.usjqt(Eje~byQlotlw[}iu404:j6[?/fpe*w`(oe:%{!xpovq+firf}6;2?>4U1-dvc(un&mg<#y}/vrmpw)dg|d0<>1219V4*aun'xm#jb?.vp,suhsz&idycz310<14>S7'nxm"h gm2-sw)pxg~y#naznu>26;7a3\:$kh!rg-dh5(pz&}{by| cnwmp9799o1^<"i}f/pe+bj7&~x${}`{r.alqkr;:7;m7X> gsd-vc)`d9$|~"ynup,gjsi|595=k5Z0.eqb+ta'nf;"z| wqlwv*eh}g~783?i;T2,cw`)zo%l`= xr.usjqt(kfex1;11g9V4*aun'xm#jb?.vp,suhsz&idycz36?3e?P6(o{l%~k!hl1,tv*qwf}x$ob{at=5=5c=R8&myj#|i/fn3*rt(yd~"m`uov?<;7a3\:$kh!rg-dh5(pz&}{by| cnwmp9?99l1^<"i}f/pe+bj7&~x${}`{r.alqkrX88o0Y=!hrg,qb*ak8'}y#z~ats-`kphsW8;m7X> gsd-vc)`d9$|~"ynup,gjsi|V;;=k5Z0.eqb+ta'nf;"z| wqlwv*eh}g~T=<?i;T2,cw`)zo%l`= xr.usjqt(kfexR?=1d9V4*aun'xm#jb?.vp,suhsz&idyczP20g8Q5)`zo$yj"ic0/uq+rvi|{%hcx`{_23f?P6(o{l%~k!hl1,tv*qwf}x$ob{at^62a>S7'nxm"h gm2-sw)pxg~y#naznu]65`=R8&myj#|i/fn3*rt(yd~"m`uov\24c<]9%l~k }f.eo4+qu'~zex!lotlw[27b3\:$kh!rg-dh5(pz&}{by| cnwmpZ>6m2_;#j|i.sd,ci6){%||cz}/bmvjqY>:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl86;2?=4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?311<17>S7'nxm"h gm2-sw)pxg~y#naznu]g59766;90Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;7=?0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk1=3=67=R8&myj#|i/fn3*rt(yd~"m`uov\`4:56;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;7?3<=;T2,cw`)zo%l`= xr.usjqt(kfexRj><5<16>S7'nxm"h gm2-sw)pxg~y#naznu]g5939:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl86=2?<4U1-dvc(un&mg<#y}/vrmpw)dg|dSi?37?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f28=85:2_;#j|i.sd,ci6){%||cz}/bmvjqYc9535><5Z0.eqb+ta'nf;"z| wqlwv*eh}g~Th<Q?209V4*aun'xm#jb?.vp,suhsz&idyczPd0]267=R8&myj#|i/fn3*rt(yd~"m`uov\`4Y68;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm;T=<<=;T2,cw`)zo%l`= xr.usjqt(kfexRj>_0015>S7'nxm"h gm2-sw)pxg~y#naznu]g5Z4592_;#j|i.sd,ci6){%||cz}/bmvjqYc9V99=6[?/fpe*w`(oe:%{!xpovq+firf}Uo=R:=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^715>S7'nxm"h gm2-sw)pxg~y#naznu]g5Z0592_;#j|i.sd,ci6){%||cz}/bmvjqYc9V=9=6[?/fpe*w`(oe:%{!xpovq+firf}Uo=R6=1:W3+bta&{l$ka>!ws-ttkru'je~byQk1^;16>S7'nxm"h gm2-sw)pxg~y#naznu]g6969::1^<"i}f/pe+bj7&~x${}`{r.alqkrXl;6:<3<<;T2,cw`)zo%l`= xr.usjqt(kfexRj=<03=66=R8&myj#|i/fn3*rt(yd~"m`uov\`7:6:7897X> gsd-vc)`d9$|~"ynup,gjsi|Vn90<0=2:W3+bta&{l$ka>!ws-ttkru'je~byQk2=0=67=R8&myj#|i/fn3*rt(yd~"m`uov\`7:46;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm8783<=;T2,cw`)zo%l`= xr.usjqt(kfexRj=<4<16>S7'nxm"h gm2-sw)pxg~y#naznu]g6909:;1^<"i}f/pe+bj7&~x${}`{r.alqkrXl;6<2?<4U1-dvc(un&mg<#y}/vrmpw)dg|dSi<38?01?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f18<8592_;#j|i.sd,ci6){%||cz}/bmvjqYc:V:9=6[?/fpe*w`(oe:%{!xpovq+firf}Uo>R?=2:W3+bta&{l$ka>!ws-ttkru'je~byQk2^3367=R8&myj#|i/fn3*rt(yd~"m`uov\`7Y69;80Y=!hrg,qb*ak8'}y#z~ats-`kphsWm8T=?<>;T2,cw`)zo%l`= xr.usjqt(kfexRj=_302?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[6463\:$kh!rg-dh5(pz&}{by| cnwmpZb5W=8:7X> gsd-vc)`d9$|~"ynup,gjsi|Vn9S8<>;T2,cw`)zo%l`= xr.usjqt(kfexRj=_702?P6(o{l%~k!hl1,tv*qwf}x$ob{at^f1[2463\:$kh!rg-dh5(pz&}{by| cnwmpZb5W18:7X> gsd-vc)`d9$|~"ynup,gjsi|Vn9S4<;;T2,cw`)zo%l`= xr.usjqt(kfexR``t12353d<]9%l~k }f.ofi*aee'miaj hbleb*kabkj$iaj!mlj]nahY`mgoymya}/wcoma(d{}x$nd`keb]b*goilliTec}{_`-FJJSSW9Ufyu>?0135f>S7'nxm"h mdo,cgk)okgl"jlbg`,mc`ed&kgl#obd_lgn[bcim{kc!yamkg*fusz&hbbikl_`,amkbbkVceyQn/DLLQQY6Wds<=>?17`8Q5)`zo$yj"cjm.eai+aeen$ln`in.oefgf(een%i`fQbel]dakcui}ey#{ocie,`wqt(j`doinQm.ckm``eXagySo!JNNWW[5Yj}q:;<=?9b:W3+bta&{l$ahc gco-cgk`&nhfkl agda`*gk`'kf`S`kb_fgmawgsg{%}magk.bqwv*dnfmohSo mioffgZoi{}Ui#H@@UU]2[hs89:;=8>4U1-dvc(un&gna"imm/eaib(`jdmj"cijcb,aib)edbUfi`Qheogqeqiu'kgei lsup,akgXi{xju1>1519V4*aun'xm#`kb/f`n*bdjo'miajo!nfg`g+djo&hggRcjm^efj`tf|fx$zlbfd/appw)bfhUj~ov<0<64>S7'nxm"h mdo,cgk)okgl"jlbg`,mc`ed&kgl#obd_lgn[bcim{kc!yamkg*fusz&oenRo}r`{?4;373\:$kh!rg-nah)`jd$ln`i!gcode+h`mji%n`i bmi\i`kXoldn~lz`r.tbhlb)kz~y#h`m_`pqe|:66<i0Y=!hrg,qb*kbe&mia#immf,dfhaf&gmnon mmf-ahnYjmdUlick}aumq+sgkam$hy| h`q\ip~Xj'H$hb{{_lw{8586=j1^<"i}f/pe+hcj'nhf"jlbg/eaibg)fnoho#lbg.`ooZkbeVmnbh|ntnp,rdjnl'ixx!gar]nq}Ye&K%ocxzPmtz?5;72k2_;#j|i.sd,i`k(okg%koch.f`ncd(iolih"och/cnh[hcjWnoeio{os-ueioc&jy~"fns^ov|Zd)J&ndyyQbuy>1:43d3\:$kh!rg-nah)`jd$ln`i!gcode+h`mji%n`i bmi\i`kXoldn~lz`r.tbhlb)kz~y#eo|_lw{[g(E'me~xRczx=1=50e<]9%l~k }f.ofi*aee'miaj hbleb*kabkj$iaj!mlj]nahY`mgoymya}/wcoma(d{}x$dl}Pmtz\f+D(lfS`{w<5<21f=R8&myj#|i/lgn+bdj&nhfk#immfc-jbcdk'hfk"lck^ofiZabflxjxb| v`nj`+et|{%cm~Qbuy]a*G)cg|~Taxv35?36g>S7'nxm"h mdo,cgk)okgl"jlbg`,mc`ed&kgl#obd_lgn[bcim{kc!yamkg*fusz&bjRczx^`-F*bh}}Ufyu29>07`?P6(o{l%~k!bel-dfh(`jdm%kocha/ldafe)jdm$naePmdo\c`hbzh~d~"xnlhf-gvru'akxS`{w_c,A+air|Vg~t19114`8Q5)`zo$yj"cjm.eai+aeen$ln`in.oefgf(een%i`fQbel]dakcui}ey#{ocie,`wqt(`hyTaxvPb/@,w`jXx`zn0=0:a:W3+bta&{l$ahc gco-cgk`&nhfkl agda`*gk`'kf`S`kb_fgmawgsg{%}magk.bqwv*nf{Vg~tRl!B.qfhZvnxlU;8i5Z0.eqb+ta'dof#jlb.f`nc+aeenk%bjklc/`nc*dkcVgnaRijndpbpjt(~hfbh#m|ts-qehYcg|~i8h5Z0.eqb+ta'dof#jlb.f`nc+aeenk%bjklc/`nc*dkcVgnaRijndpbpjt(~hfbh#m|ts-qehYcg|~i<9k4U1-dvc(un&gna"imm/eaib(`jdmj"cijcb,aib)edbUfi`Qheogqeqiu'kgei lsup,vdkXlfn<:i;T2,cw`)zo%fi`!hbl,dfha)okglm#`heba-fha(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjWme~xo??4g9V4*aun'xm#`kb/f`n*bdjo'miajo!nfg`g+djo&hggRcjm^efj`tf|fx$zlbfd/appw)uidUocxzm106e?P6(o{l%~k!bel-dfh(`jdm%kocha/ldafe)jdm$naePmdo\c`hbzh~d~"xnlhf-gvru'{kfSiaztc310c=R8&myj#|i/lgn+bdj&nhfk#immfc-jbcdk'hfk"lck^ofiZabflxjxb| v`nj`+et|{%ym`Qkotva562a3\:$kh!rg-nah)`jd$ln`i!gcode+h`mji%n`i bmi\i`kXoldn~lz`r.tbhlb)kz~y#ob_emvpg73<l1^<"i}f/pe+hcj'nhf"jlbg/eaibg)fnoho#lbg.`ooZkbeVmnbh|ntnp,rdjnl'ixx!}al]gkpre:=o0Y=!hrg,qb*kbe&mia#immf,dfhaf&gmnon mmf-ahnYjmdUlick}aumq+sgkam$hy| r`o\`jssj:>n7X> gsd-vc)jmd%ln` hble-cgk`i'dlinm!ble,fimXelgTkh`jr`vlv*pfd`n%o~z}/scn[air|k>?i6[?/fpe*w`(elg$koc!gcod*bdjoh$ekhml.cod+gjlWdofSjkaescwkw)qieco"n}{r.pbiZbh}}h>8h5Z0.eqb+ta'dof#jlb.f`nc+aeenk%bjklc/`nc*dkcVgnaRijndpbpjt(~hfbh#m|ts-qehYcg|~i:9k4U1-dvc(un&gna"imm/eaib(`jdmj"cijcb,aib)edbUfi`Qheogqeqiu'kgei lsup,vdkXlfn::j;T2,cw`)zo%fi`!hbl,dfha)okglm#`heba-fha(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjWme~xo6;e:W3+bta&{l$ahc gco-cgk`&nhfkl agda`*gk`'kf`S`kb_fgmawgsg{%}magk.bqwv*tfeVndyyl6739V4*aun'xm#`kb/f`n*bdjo'miajo!nfg`g+djo&hggRcjm^efj`tf|fx$zlbfd/appw)uidfdc}U?]/pbi+t({:Uecd`ft/pbi*bwzhg%h}:w1/pbi25<]9%l~k }f.ofi*aee'miaj hbleb*kabkj$iaj!mlj]nahY`mgoymya}/wcoma(d{}x$~lcconrX55[)zhg%~"}<_omjjlr)zhg$h}|nm/fs0}7)zhg<?6[?/fpe*w`(elg$koc!gcod*bdjoh$ekhml.cod+gjlWdofSjkaescwkw)qieco"n}{r.pbiiihxR;:Q#|nm/p,w6Yig`dbx#|nm.fsvdk)ly>s=#|nm618Q5)`zo$yj"cjm.eai+aeen$ln`in.oefgf(een%i`fQbel]dakcui}ey#{ocie,`wqt(zhggcb~T13_-vdk)z&y8Scafnhv-vdk(lyxja#j4y3-vdk0;2_;#j|i.sd,i`k(okg%koch.f`ncd(iolih"och/cnh[hcjWnoeio{os-ueioc&jy~"|nmmmlt^74U'xja#| s2]mklhn|'xja"jr`o-`u29'xja:=4U1-dvc(un&gna"imm/eaib(`jdmj"cijcb,aib)edbUfi`Qheogqeqiu'kgei lsup,vdkkgfzP=9S!r`o-v*u4Wgebbdz!r`o,`utfe'n{8u?!r`o47>S7'nxm"h mdo,cgk)okgl"jlbg`,mc`ed&kgl#obd_lgn[bcim{kc!yamkg*fusz&xjaaa`pZ36Y+tfe'x$>Qaohljp+tfe&n{~lc!dq6{5+tfe>80Y=!hrg,qb*kbe&mia#immf,dfhaf&gmnon mmf-ahnYjmdUlick}aumq+sgkam$hy| r`ookjv\9T$ym` }/r1\jjoia}$ym`!kpscn*av3p8$ym`9=;T2,cw`)zo%fi`!hbl,dfha)okglm#`heba-fha(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjdfe{W?S!r`o-v*u4Wgebbdz!r`o,`utfe'n{8u?!r`o46>S7'nxm"h mdo,cgk)okgl"jlbg`,mc`ed&kgl#obd_lgn[bcim{kc!yamkg*fusz&xjaaa`pZ1^*wgj&{%x?R``iokw*wgj'mzym` kp5z2*wgj?;1^<"i}f/pe+hcj'nhf"jlbg/eaibg)fnoho#lbg.`ooZkbeVmnbh|ntnp,rdjnl'ixx!}alnlku]3U'xja#| s2]mklhn|'xja"jr`o-`u29'xja:<4U1-dvc(un&gna"imm/eaib(`jdmj"cijcb,aib)edbUfi`Qheogqeqiu'kgei lsup,vdkkgfzP9P }al,q+v5Xffceey }al-gtwgj&mz?t< }al51?P6(o{l%~k!bel-dfh(`jdm%kocha/ldafe)jdm$naePmdo\c`hbzh~d~"xnlhf-gvru'{kf`ba[7_-vdk)z&y8Scafnhv-vdk(lyxja#j4y3-vdk0:2_;#j|i.sd,i`k(okg%koch.f`ncd(iolih"och/cnh[hcjWnoeio{os-ueioc&jy~"|nmmmlt^1Z&{kf"!|3^llmkos&{kf#i~}al,gt1~6&{kf;?5Z0.eqb+ta'dof#jlb.f`nc+aeenk%bjklc/`nc*dkcVgnaRijndpbpjt(~hfbh#m|ts-qehjhgyQ3Q#|nm/p,w6Yig`dbx#|nm.fsvdk)ly>s=#|nm608Q5)`zo$yj"cjm.eai+aeen$ln`in.oefgf(een%i`fQbel]dakcui}ey#{ocie,`wqt(zhggcb~T9\,qeh(u'z9Tbbgaiu,qeh)cx{kf"i~;x0,qeh7e3\:$kh!rg-nah)seyUym`Q}d^gm5f=R8&myj#|i/lgn+qkwW{kfSjPeo32`>S7'nxm"h rrvahn)U[]UMYABPGDL2`>S7'nxm"h rrvahn)ulVxxxRo|rde14>S7'nxm"h rrvahn)ulVxxxRo|rde\`4473\:$kh!rg-qwqdkc&xoS}{_`qqabYc:8i0Y=!hrg,qb*tt|kf`#jPrrv\gjke9m1^<"i}f/pe+wusjea$~iQ}su]`khd69l1^<"i}f/pe+wusjea$~iQ}su]qab:768o0Y=!hrg,qb*tt|kf`#jPrrv\v`a;97;n7X> gsd-vc)u{}hgg"|k_sqw[wc`4;4:h6[?/fpe*w`(zz~i`f!}d^pppZtboV::h6[?/fpe*w`(zz~i`f!}d^pppZtboV;:h6[?/fpe*w`(zz~i`f!}d^pppZtboV8:;6[?/fpe*w`(zz~i`f!}su]g541<]9%l~k }f.pppgjl'{ySi<>7:W3+bta&{l$~~zmlj-qwqYc;8n0Y=!hrg,qb*tt|kf`#z|Prrv\evtbo;:0Y=!hrg,qb*tt|kf`#z|Prrv\evtboVn:>=5Z0.eqb+ta'{ynae ws]qwqYf{{olSi<>c:W3+bta&{l$~~zmlj-tvZtt|Vidao?k;T2,cw`)zo%yylck.uq[wusWjefn<?j;T2,cw`)zo%yylck.uq[wusW{ol0=0>e:W3+bta&{l$~~zmlj-tvZtt|Vxnk1?11e9V4*aun'xm#}{bmi,swYu{}UyijQ?1e9V4*aun'xm#}{bmi,swYu{}UyijQ>a:WPAWYFD@KXo6[\ES]UMVOEDL90ZNM6;WKFSZR^XL90[HO<;VGAg>QUA]OTABJJ_@a8SWOSMVGDHHQM1e9[MIOIP$RON->!1!QWQG&7&8*J_NGF5:ZLVF_13QY_@DL8;YQW[BHC?2RXXRXLCc9[[FIUMVCEJB84Xe`\Ma`<PmbT\gbVdppmjh682RoaRCnjnpUawungg;;7Ujb_LkmkwPbzzcdbn5nllmppZcjx}si7lbborv\bpjk>2hjof{d:`bgnswWdkygh|<;bnh`>bf|hUhcx`{(1+g?agsiVidycz'1(g8`drfWje~by&>0(g8`drfWje~by&>1(g8`drfWje~by&>2(f8`drfWje~by&=)e9geqgXkfex%=&d:fbpdYdg|d$9'k;ecweZeh}g~#9$j4d`vb[firf}"=%i5kauc\gjsi|!="h6jnt`]`kphs 1#o7io{a^alqkr/1 ;;7io{a^alqkr;9;0;2:5kbhvfvw0<l`d#<$84dhl+5,1<l`d#=='8;ekm,47.?2nbb%?=)69gmk.6; =0hd`'15+4?aoi 8?";6jfn)35-2=cag":;$94dhl+5=/03mce$<7&6:fjj-4.?2nbb%<?)69gmk.59 =0hd`'23+4?aoi ;9";6jfn)07-2=cag"99$94dhl+63/03mce$?9&7:fjj-4?!>1oec&=9(48`lh/; =0hd`'31+4?aoi :;":6jfn)6*2>bnf!?":6jfn)4*2>bnf!=":6jfn):*2>bnf!3":6jfn=2=3>bnf5;;2:5kio>25;1<l`d7=?08;ekm8459?2nbb1?;>69gmk:6=7=0hd`317<4?aoi48=5;6jfn=3;:2=cag6:5384dhl?5;1<l`d7>=08;ekm8779?2nbb1<=>69gmk:5;7=0hd`325<4?aoi4;?5;6jfn=05:2=cag69;394dhl?6=803mce0?716:fjj949?2nbb1=?>89gmk:493:5;6jfn=12:3=cag682;5kio>7:3=cag6>2;5kio>5:3=cag6<2;5kio>;:3=cag622:5kotv+4,1<lf$<'8;emvp-4.?2ndyy&<)69gkpr/< =0hb{{(4+4?air|!<";6j`uu*4-2=cg|~7<394dnww84803me~x1<17:flqq:46>1ocxz34?58`jss4<4<7iazt=4==>bh}}6<6=08;emvp91902ooek<age78ahvsq=1meka=2:djbj*aaoeTkh`jr`vlvZp1W;&ECCK#NNLF7a3<n`ld kgio^efj`tf|fxTz;Q=,za\gjkjggUh`bmd=1.`[agsiVidyczPwhfwl874$jUoecQxievk964+kVndyyQ}su]uei;7$jUocxzPwhfwl8>+kVoemobj_sqw[vik4;'oRk}rnp\mklbk}cdbRzvpd?3(fYa}efTjaohs^pppZpfd4;'oRfns^coijusWlg{xt3?,b]kevYfddexxRhzlm?3(fYoizUomyoPcnwmp86+kVbjRgat^aoo86+kVbjRayesdokr;7$jUcm~Q}d^fbpdYdg|d1="l_icp[wus58&hSeo|_rppp86+kVbjR{addpehjq:8%iTdl}Pv`nj`86+kVbjRy}_`ah95*dWakxSz|Pd`vb[firf}7; nQfmqnfi`hsi}cdbRzvpd?1(fYjmdeyuRzvpd?2(fYj{neeS{oc=0.`[jpbzofd{Rb`w<2/gZvumeejhRbntdl`}87+kVzyiaand^pfcv;7$jU{~dcPfhdl[qwm42`t9"l_qplcZcjx}sTxe|jsi]bwvcu|V|j`0<#c^rqkbYbey~rSyf}erj\j`af|lU}ma3<,b]svjaXmdzuRzvpd?3(fYwzfmTjxbc_ujqavnXizyn~yQyam?74<0+kVzycjQiumn\pmtb{aUeijo{e^tbh8271<&hS}|`g^dvhiYsqyo6=!mPre]geqgXkfexRyfduj>50*dW{nThh~{h<1133>+kVxoSk|jq<3/gZtcWyd~Ryfduj>50*dW|doihcov]okr;7$jU~hQkotv\vvr:9%iTy~kPeba>4)eX}zoTi`ljdegg[wc`59&hSx}j_guepZbf|hUhcx`{=1.`[sgkamUgcz3?,b]tvZgdcVfd{0>#c^uq[agsiVidyczPwhfwl874$jU|~Rjjpuj><4?5$jU|~Rh}ep?2(fYpzVzexQxievk945+kfg{cckat^lbi`;aaoe'q<k4fhdl[coagVmnbh|ntnp\r3Y5WqyS<<i;gkekZabflxjxb|Pv7]1(%^nd`ds,NA]E!Efj`tf|fx+=9 <4:dvhib<ag`noyjmiugqva=nfcohx~lftdpq3>oi|Vigg55agb`vmib?3f|n~kb`w`9svjaXmdzu<:4psmd[`kw|pUdk|h)2*51=wzfmTi`~{y^vkv`uo 8#:96~}of]fiur~W}byi~f'11+21>vugnUna}zv_ujqavn/98#:96~}of]fiur~W}byi~f'13+21>vugnUna}zv_ujqavn/9:#:96~}of]fiur~W}byi~f'15+20>vugnUna}zv_ujqavn/: ;?7}|`g^gntqX|axne&<)068twi`Wlg{xtQ{hsgpl-2.9=1{~biPelrw}Zrozlyc$8'>4:rqkbYbey~rSyf}erj+2,733yxdkRkbpu{\pmtb{a"<%<:4psmd[`kw|pUdk|h):*51=wzfmTi`~{y^vkv`uo 0#:;6~}of]fiur~W}byi~f31583:4d<x{elShctx]wlwct`Vkxh|{(1+2f>vugnUna}zv_ujqavnXizyn~y&>)0a8twi`Wlg{xtQ{hsgplZgt{lx$<>&1b9svjaXmdzuRzgrdqk[dutm{~#=<'>c:rqkbYbey~rSyf}erj\evubz}":>$?l;qplcZcjx}sTxe|jsi]bwvcu|!;8%<m4psmd[`kw|pUdk|h^cpw`ts 8>"=o5rne\ahvsqV~c~h}g_`qpawr/: ;i7}|`g^gntqX|axneQnsrgqp-5.9k1{~biPelrw}ZrozlycSl}|esv+0,7e3yxdkRkbpu{\pmtb{aUj~k}t)7*5g=wzfmTi`~{y^vkv`uoWhyxiz'6(3a?uthoVof|ywPtipfwmYf{zoyx%9&1c9svjaXmdzuRzgrdqk[dutm{~#4$?m;qplcZcjx}sTxe|jsi]bwvcu|!3"=h5rne\ahvsqV~c~h}g_`qpawr;9=0;2<l4psmd[`kw|pUdk|h^lfcdrb 9#:n6~}of]fiur~W}byi~fPndebp`.6!8i0|ah_dosp|Ys`{oxdR`jg`vf,46.9j1{~biPelrw}ZrozlycSckhaug+54/6k2zycjQjmqvz[qnumzbTbhintd*26,7d3yxdkRkbpu{\pmtb{aUeijo{e)30-4e<x{elShctx]wlwct`Vdnklzj(06*5g=wzfmTi`~{y^vkv`uoWgolmyk'2(3a?uthoVof|ywPtipfwmYimnki%=&1c9svjaXmdzuRzgrdqk[kc`i}o#8$?m;qplcZcjx}sTxe|jsi]mabgsm!?"=o5rne\ahvsqV~c~h}g_ogdeqc/> ;i7}|`g^gntqX|axneQaefcwa-1.9k1{~biPelrw}ZrozlycSckhaug+<,7e3yxdkRkbpu{\pmtb{aUeijo{e);*5`=wzfmTi`~{y^vkv`uoWgolmyk31583:<=wzfmTjxbc129svjaXn|fgSyf}erj+4,743yxdkRhzlm]wlwct`!;"=95rne\bpjkW}byi~f'11+20>vugnUmyabPtipfwm.69 ;?7}|`g^dvhiYs`{oxd%?=)018twi`Wog`Rzgrdqk,7/6;2zycjQiumn\pmtb{a"8%<=4psmd[cskdV~c~h}g(5+27>vugnUmyabPtipfwm.2!890|ah_gwohZrozlyc$;'>3:rqkbYa}efTxe|jsi*4-45<x{elSk{cl^vkv`uo 1#:?6~}of]eqijX|axne&6)048twi`Wog`Rzgrdqk844=87;j7}|`g^dvhiYs`{oxdRo|sdpw,5/6i2zycjQiumn\pmtb{aUj~k}t)3*5g=wzfmTjxbc_ujqavnXizyn~y&>0(3a?uthoVl~`aQ{hsgplZgt{lx$<?&1c9svjaXn|fgSyf}erj\evubz}":>$?n;qplcZ`rdeUdk|h^cpw`ts ;#:m6~}of]eqijX|axneQnsrgqp-5.9h1{~biPftno[qnumzbTm~}jru*7-4g<x{elSk{cl^vkv`uoWhyxiz'5(3b?uthoVl~`aQ{hsgplZgt{lx$;'>a:rqkbYa}efTxe|jsi]bwvcu|!="=l5rne\bpjkW}byi~fParqfvq.?!8k0|ah_gwohZrozlycSl}|esv+=,7c3yxdkRhzlm]wlwct`Vkxh|{<0094;7f3yxdkRhzlm]wlwct`Vdnklzj(1+2e>vugnUmyabPtipfwmYimnki%?&1c9svjaXn|fgSyf}erj\j`af|l":<$?m;qplcZ`rdeUdk|h^lfcdrb 8;"=o5rne\bpjkW}byi~fPndebp`.6: ;j7}|`g^dvhiYs`{oxdR`jg`vf,7/6i2zycjQiumn\pmtb{aUeijo{e)1*5d=wzfmTjxbc_ujqavnXflmjxh&;)0c8twi`Wog`Rzgrdqk[kc`i}o#9$?n;qplcZ`rdeUdk|h^lfcdrb ?#:m6~}of]eqijX|axneQaefcwa-1.9h1{~biPftno[qnumzbTbhintd*;-4g<x{elSk{cl^vkv`uoWgolmyk'9(3g?uthoVl~`aQ{hsgplZhboh~n0<<50?48vaYddb;;7jPd`vb[firf}";%<>4re]geqgXkfex%?&109q`Zbf|hUhcx`{(02*54=ulVnjxlQlotlw,47.981yhRjnt`]`kphs 88"=<5}d^fbpdYdg|d$<=&109q`Zbf|hUhcx`{(06*55=ulVnjxlQlotlw,7/682xoSio{a^alqkr/; ;;7jPd`vb[firf}"?%<>4re]geqgXkfex%;&119q`Zbf|hUhcx`{(7+24>tcWmkmRm`uov+3,773{nThlzn_bmvjq.?!8:0~iQkauc\gjsi|!3"==5}d^fbpdYdg|d0=0>3:pg[agsiVidycz31583:0=ulVoe:6|k_sqw7>tt|>1xndzjrs68wwus991a}!Pcf-emci)fne?7y|ze89vjacunee|96xnlhf5?rtXija=7z|Pcmi24>quWmkmRm`uov+4,773~xThlzn_bmvjq.6!8;0{Qkauc\gjsi|!;;%<?4ws]geqgXkfex%?>)038swYci}kTob{at)31-46<{UomyoPcnwmp-4.991|~Rjnt`]`kphs :#:<6y}_ecweZeh}g~#8$??;vp\`drfWje~by&:)028swYci}kTob{at)4*55=pzVnjxlQlotlw,2/682}ySio{a^alqkr/0 ;;7z|Pd`vb[firf}"2%<=4ws]geqgXkfex1?=:1<6?rtXmg<0{Q}suCDu77j81KLu;<9;D90?7|[=l18o757;3077b5i38<=:htn572>4=i<<81:6*;4g870<=z[=n18o757;3077b5i38<=:h4Sc490f2=83;8??j=a;0452`<[=n18n:50;3077b5i38<=5>4d5`a>5<628qX8k4;b884>454:m8j6?9>7g9uP462290:6<4>fdyP0c<3j00<6<=<2e0b>716?o1/89:5b69U006=:rh>7?4ub194>{#nj0:;6l;bc83>66=;39;wE:;2:X71?4|9o0::7s+11c90gd<,=>n69li;h700?6=3f>m;7>5;h77`?6=3f>h<7>5;n6ae?6=3`?8i7>5;h702?6=3f>jj7>5$gg90g1<fon1<65`4`g94?"am3>i;6`id;38?j2fl3:1(kk54c58jcb=:21d8lm50;&ea?2e?2dmh7=4;n6bf?6=,oo18o94ngf90>=h<hk1<7*ie;6a3>hal3?07b:n9;29 cc=<k=0bkj56:9l0d>=83.mi7:m7:le`?1<3`>3<7>5$gg90<`<fon1<65f46d94?"am3>2j6`id;38?l20l3:1(kk548d8jcb=:21b8:m50;&ea?2>n2dmh7=4;h64f?6=,oo184h4ngf90>=n<>k1<7*ie;6:b>hal3?07d:89;29 cc=<0l0bkj56:9j02>=83.mi7:6f:le`?1<3`><;7>5$gg90<`<fon1465f46494?"am3>2j6`id;;8?l20=3:1(kk548d8jcb=i21b8::50;&ea?2>n2dmh7l4;h646?6=,oo184h4ngf9g>=n<>;1<7*ie;6:b>hal3n07d:80;29 cc=<0l0bkj5e:9j03`=83.mi7:6f:le`?`<3`>=i7>5$gg90<`<fon1==54i54g>5<#nl0?5k5afe825>=n<?i1<7*ie;6:b>hal3;976g;6c83>!`b2=3m7chk:018?l21i3:1(kk548d8jcb=9=10e986:18'b`<31o1eji4>5:9j0=0=83.mi7:6f:le`?7132c?484?:%df>1?a3glo6<94;h6;0?6=,oo184h4ngf95==<a=286=4+fd87=c=inm0:565f49094?"am3>2j6`id;3b?>o3080;6)hj:5;e?k`c28h07d:8e;29 cc=<0l0bkj51b98m114290/jh4;9g9mba<6l21b8;650;&ea?2>n2dmh7?j;:k722<72-ln697i;odg>4`<3`?9>7>5;c677?6=93:1<vF;439'55g=<=90ckl50;9~f3e=83;1<7>tH561?!77i3<h7b8m:188yg23290ij7?k6;3ea~N3<;1Q884>6z33>c<693i157o5b;3e>40=9;0o6n4k:0d957<683;=6o4n:8825?`=u-;;m7:me:&7<?2ek2.?i7:md:&e3?`f3`>oh7>5$gg90`0<fon1<65f4ea94?"am3>n:6`id;38?l2cj3:1(kk54d48jcb=:21b8io50;&ea?2b>2dmh7=4;h6g=?6=,oo18h84ngf90>=n<l?1<7*ie;6f2>hal3?07d:j4;29 cc=<l<0bkj56:9j0`5=83.mi7:j6:le`?1<3`>n>7>5$gg90`0<fon1465f4d394?"am3>n:6`id;;8?l2b83:1(kk54d48jcb=i21b8ih50;&ea?2b>2dmh7l4;h6ga?6=,oo18h84ngf9g>=n<m21<7*ie;6f2>hal3n07d:k7;29 cc=<l<0bkj5e:9j0f4=831b9>;50;9j16>=831d9>m50;9j0fb=83.mi7:k6:le`?6<3`>ho7>5$gg90a0<fon1=65f4b`94?"am3>o:6`id;08?l2di3:1(kk54e48jcb=;21b8n750;&ea?2c>2dmh7:4;h6g1?6=,oo18i84ngf91>=n<m>1<7*ie;6g2>hal3<07d:k3;29 cc=<m<0bkj57:9j0a4=83.mi7:k6:le`?><3`>o=7>5$gg90a0<fon1565f4e294?"am3>o:6`id;c8?l2dn3:1(kk54e48jcb=j21b8nk50;&ea?2c>2dmh7m4;h6`<?6=,oo18i84ngf9`>=n<j=1<7*ie;6g2>hal3o07d;<4;29?j2d=3:17d:jd;29 cc=<o<0bkj50:9j0`e=83.mi7:i6:le`?7<3`>nn7>5$gg90c0<fon1>65f4dc94?"am3>m:6`id;18?l2b13:1(kk54g48jcb=<21b8k;50;&ea?2a>2dmh7;4;h6e0?6=,oo18k84ngf92>=n<o91<7*ie;6e2>hal3=07d:i2;29 cc=<o<0bkj58:9j0c7=83.mi7:i6:le`??<3`>m<7>5$gg90c0<fon1m65f4dd94?"am3>m:6`id;`8?l2bm3:1(kk54g48jcb=k21b8h650;&ea?2a>2dmh7j4;h6f3?6=,oo18k84ngf9a>=h<<>1<75`44a94?"am3>=96`id;28?j22j3:1(kk54778jcb=921d88o50;&ea?21=2dmh7<4;n650?6=,oo18;;4ngf97>=h<?91<7*ie;651>hal3>07b:92;29 cc=<??0bkj55:9l037=83.mi7:95:le`?0<3f>=<7>5$gg9033<fon1;65`44d94?"am3>=96`id;:8?j22m3:1(kk54778jcb=121d88j50;&ea?21=2dmh7o4;n66=?6=,oo18;;4ngf9f>=h<<21<7*ie;651>hal3i07b:i7;29?l33l3:17d:ic;29 cc==9?0bkj50:9j0cd=83.mi7;?5:le`?7<3`>mm7>5$gg9153<fon1>65f51694?"am3?;96`id;18?l37;3:1(kk55178jcb=<21b9=<50;&ea?37=2dmh7;4;h735?6=,oo19=;4ngf92>=n=9:1<7*ie;731>hal3=07d:if;29 cc==9?0bkj58:9j0cc=83.mi7;?5:le`??<3`>mh7>5$gg9153<fon1m65f4g;94?"am3?;96`id;`8?l2a03:1(kk55178jcb=k21d8n>50;9l0gg=831b9>k50;9j000=831b9=o50;&ea?36;2dmh7>4;h73=?6=,oo19<=4ngf95>=n=921<7*ie;727>hal3807d;>2;29 cc==890bkj53:9j147=83.mi7;>3:le`?2<3`?:<7>5$gg9145<fon1965f51d94?"am3?:?6`id;48?l37m3:1(kk55018jcb=?21b9=j50;&ea?36;2dmh764;h73g?6=,oo19<=4ngf9=>=n=9h1<7*ie;727>hal3k07d;?7;29 cc==890bkj5b:9j150=83.mi7;>3:le`?e<3`?:47>5$gg9177<fon1<65f50594?"am3?9=6`id;38?l36>3:1(kk55338jcb=:21b9?>50;&ea?3592dmh7=4;h72b?6=,oo19??4ngf90>=n=8o1<7*ie;715>hal3?07d;>d;29 cc==;;0bkj56:9j14e=83.mi7;=1:le`?1<3`?:n7>5$gg9177<fon1465f50c94?"am3?9=6`id;;8?l3613:1(kk55338jcb=i21b9<;50;&ea?3592dmh7l4;h720?6=,oo19??4ngf9g>=h<<91<75f4b194?=n<<=1<75f55g94?=h=:=1<75`52f94?=n=:<1<75`4`d94?"am3>i;6`id;28?j2fm3:1(kk54c58jcb=921d8lj50;&ea?2e?2dmh7<4;n6bg?6=,oo18o94ngf97>=h<hh1<7*ie;6a3>hal3>07b:na;29 cc=<k=0bkj55:9l0d?=83.mi7:m7:le`?0<3f>j47>5$gg90g1<fon1;65f49294?"am3>2j6`id;28?l20n3:1(kk548d8jcb=921b8:j50;&ea?2>n2dmh7<4;h64g?6=,oo184h4ngf97>=n<>h1<7*ie;6:b>hal3>07d:8a;29 cc=<0l0bkj55:9j02?=83.mi7:6f:le`?0<3`><47>5$gg90<`<fon1;65f46594?"am3>2j6`id;:8?l20>3:1(kk548d8jcb=121b8:;50;&ea?2>n2dmh7o4;h640?6=,oo184h4ngf9f>=n<>81<7*ie;6:b>hal3i07d:81;29 cc=<0l0bkj5d:9j026=83.mi7:6f:le`?c<3`>=j7>5$gg90<`<fon1j65f47g94?"am3>2j6`id;33?>o3>m0;6)hj:5;e?k`c28;07d:9c;29 cc=<0l0bkj51398m10e290/jh4;9g9mba<6;21b8;o50;&ea?2>n2dmh7?;;:k72<<72-ln697i;odg>43<3`>3:7>5$gg90<`<fon1=;54i5:6>5<#nl0?5k5afe823>=n<1>1<7*ie;6:b>hal3;376g;8283>!`b2=3m7chk:0;8?l2?:3:1(kk548d8jcb=9h10e96>:18'b`<31o1eji4>b:9j02c=83.mi7:6f:le`?7d32c?;>4?:%df>1?a3glo6<j4;h65<?6=,oo184h4ngf95`=<a=<<6=4+fd87=c=inm0:j65f44794?=h=;31<7*ie;707>hal3:07b;=8;29 cc==:90bkj51:9l171=83.mi7;<3:le`?4<3f?9:7>5$gg9165<fon1?65`53794?"am3?8?6`id;68?j3493:1(kk55218jcb==21d9>>50;&ea?34;2dmh784;n71b?6=,oo19>=4ngf93>=h=;o1<7*ie;707>hal3207b;=d;29 cc==:90bkj59:9l17e=83.mi7;<3:le`?g<3f?9n7>5$gg9165<fon1n65`53c94?"am3?8?6`id;a8?j35<3:1(kk55218jcb=l21d9?=50;&ea?34;2dmh7k4;n777?6=,oo199m4ngf94>=h==81<7*ie;77g>hal3;07b;;1;29 cc===i0bkj52:9l11d=83.mi7;;c:le`?5<3f??m7>5$gg911e<fon1865`55;94?"am3??o6`id;78?j3303:1(kk555a8jcb=>21d99950;&ea?33k2dmh794;n772?6=,oo199m4ngf9<>=h==?1<7*ie;77g>hal3307b;;4;29 cc===i0bkj5a:9l116=83.mi7;;c:le`?d<3f?8j7>5$gg911e<fon1o65`4b494?=n<j;1<75`47494?=n=;81<75`52`94?=e<=i1<7?50;2x 46f2?i0D9:m;I676>i1j3:17pl;4e83>4<729q/==o54518L12e3A>?>6aib;29?xd51=0;694?:1y'55g=>01C89l4H561?!162?1b8;4?::k64?6=3`lm6=44o023>5<<uk82;7>54;294~"68h0=56F;4c9K014<,>;1:6g;6;29?l372900ekh50;9l556=831vn>8k:187>5<7s-;;m786;I67f>N3<;1/;<49;h65>5<<a<:1<75ffg83>>i6890;66sm37a94?2=83:p(<>n:7;8L12e3A>?>6*81;48m10=831b9=4?::keb?6=3f;;<7>5;|`76<<72=0;6=u+11c923=O<=h0D9:=;%52>4=n<?0;66g;c;29?l372900c<>?:188yg24?3:187>50z&24d<112B?8o5G4508L14<,j:19>o4$6392>o3>3:17d;?:188mc`=831d==>50;9~f14d29086=4?{%33e?023A>?n6F;439K07=#k90>?l5+7082?l212900e8>50;9l556=831vn9=n:180>5<7s-;;m78:;I67f>N3<;1C8?5+c1867d=#?80:7d:9:188m06=831d==>50;9~f151290?6=4?{%33e?0>3A>?n6F;439K07=#k90>?l5+7085?l212900e8>50;9jbc<722e:<=4?::a07d=8391<7>t$02b>33<@=>i7E:;2:J76>"d83?8m6*81;38m10=831b9=4?::m245<722wi8>650;794?6|,8:j6;o4H56a?M23:2B?>6*l0;70e>o3>3:17d:8:188m06=831bjk4?::m245<722wi8>750;194?6|,8:j6;;4H56a?M23:2B?>6*l0;70e>"093;0e9850;9j15<722e:<=4?::a07g=83?1<7>t$02b>3g<@=>i7E:;2:J76>"d83?8m6g;6;29?l202900e8>50;9jbc<722e:<=4?::a063=83>1<7>t$02b>3?<@=>i7E:;2:J76>"d83?8m6*81;48m10=831b9=4?::keb?6=3f;;<7>5;|`771<72=0;6=u+11c92<=O<=h0D9:=;%52>3=n<?0;66g:0;29?l`a2900c<>?:188yg24;3:187>50z&24d<112B?8o5G4508 27=>2c?:7>5;h73>5<<aol1<75`11294?=zj=996=4;:183!77i3<27E:;b:J707=#?80=7d:9:188m06=831bjk4?::m245<722wi89>50;694?6|,8:j6;74H56a?M23:2.<=784i5494?=n=90;66gif;29?j7783:17pl;3g83>1<729q/==o5689K01d<@=>97)9>:79j03<722c><7>5;hde>5<<g8:;6=44}c37<?6=<3:1<v*>0`852>N3<k1C89<4$6395>o3>3:17d:l:188m06=831d==>50;9~f420290?6=4?{%33e?013A>?n6F;439'34<63`>=6=44i5a94?=n=90;66a>0183>>{e9=<1<7:50;2x 46f2?<0D9:m;I676>"093;0e9850;9j0f<722c><7>5;n334?6=3th:884?:583>5}#99k1:;5G45`8L1253-=:6<5f4783>>o3k3:17d;?:188k4672900qo?;4;290?6=8r.:<l496:J70g=O<=80(:?51:k72?6=3`>h6=44i4294?=h99:1<75rb073>5<3290;w)??a;45?M23j2B?8?5+7082?l212900e9m50;9j15<722e:<=4?::a51`=83>1<7>t$02b>30<@=>i7E:;2:&45?7<a=<1<75f4b83>>o283:17b??0;29?xd6<l0;694?:1y'55g=>?1C89l4H561?!16281b8;4?::k7g?6=3`?;6=44o023>5<<uk;?h7>54;294~"68h0=:6F;4c9K014<,>;1=6g;6;29?l2d2900e8>50;9l556=831vn<:l:187>5<7s-;;m789;I67f>N3<;1/;<4>;h65>5<<a=i1<75f5183>>i6890;66sm15`94?2=83:p(<>n:748L12e3A>?>6*81;38m10=831b8n4?::k64?6=3f;;<7>5;|`20d<72=0;6=u+11c923=O<=h0D9:=;%52>4=n<?0;66g;c;29?l372900c<>?:188yg7313:187>50z&24d<1>2B?8o5G4508 27=92c?:7>5;h6`>5<<a<:1<75`11294?=zj8o36=4;:183!77i3<=7E:;b:J707=#?80:7d:9:188m1e=831b9=4?::m245<722wi=h950;694?6|,8:j6;84H56a?M23:2.<=7?4i5494?=n<j0;66g:0;29?j7783:17pl>e783>1<729q/==o5679K01d<@=>97)9>:09j03<722c?o7>5;h73>5<<g8:;6=44}c3e4?6=<3:1<v*>0`852>N3<k1C89<4$6395>o3>3:17d:l:188m06=831d==>50;9~f4ca290?6=4?{%33e?013A>?n6F;439'34<63`>=6=44i5a94?=n=90;66a>0183>>{e9lo1<7:50;2x 46f2?<0D9:m;I676>"093;0e9850;9j0f<722c><7>5;n334?6=3th:ii4?:583>5}#99k1:;5G45`8L1253-=:6<5f4783>>o3k3:17d;?:188k4672900qo?jc;290?6=8r.:<l496:J70g=O<=80(:?51:k72?6=3`>h6=44i4294?=h99:1<75rb0ga>5<3290;w)??a;45?M23j2B?8?5+7082?l212900e9m50;9j15<722e:<=4?::a5`g=83>1<7>t$02b>30<@=>i7E:;2:&45?7<a=<1<75f4b83>>o283:17b??0;29?xd6m00;694?:1y'55g=>?1C89l4H561?!16281b8;4?::k7g?6=3`?;6=44o023>5<<uk;n97>54;294~"68h0=:6F;4c9K014<,>;1=6g;6;29?l2d2900e8>50;9l556=831vn<k;:187>5<7s-;;m789;I67f>N3<;1/;<4>;h65>5<<a=i1<75f5183>>i6890;66sm22d94?2=83:p(<>n:748L12e3A>?>6*81;38m10=831b8n4?::k64?6=3f;;<7>5;|`17`<72=0;6=u+11c923=O<=h0D9:=;%52>4=n<?0;66g;c;29?l372900c<>?:188yg44l3:187>50z&24d<1>2B?8o5G4508 27=92c?:7>5;h6`>5<<a<:1<75`11294?=zj;><6=4;:183!77i3<=7E:;b:J707=#?80:7d:9:188m1e=831b9=4?::m245<722wi>9850;694?6|,8:j6;84H56a?M23:2.<=7?4i5494?=n<j0;66g:0;29?j7783:17pl=4483>1<729q/==o5679K01d<@=>97)9>:09j03<722c?o7>5;h73>5<<g8:;6=44}c070?6=<3:1<v*>0`852>N3<k1C89<4$6395>o3>3:17d:l:188m06=831d==>50;9~f724290?6=4?{%33e?013A>?n6F;439'34<63`>=6=44i5a94?=n=90;66a>0183>>{e:=81<7:50;2x 46f2?<0D9:m;I676>"093;0e9850;9j0f<722c><7>5;n334?6=3th98<4?:583>5}#99k1:;5G45`8L1253-=:6<5f4783>>o3k3:17d;?:188k4672900qo<;0;290?6=8r.:<l496:J70g=O<=80(:?51:k72?6=3`>h6=44i4294?=h99:1<75rb31`>5<3290;w)??a;45?M23j2B?8?5+7082?l212900e9m50;9j15<722e:<=4?::a66d=83>1<7>t$02b>30<@=>i7E:;2:&45?7<a=<1<75f4b83>>o283:17b??0;29?xd6j<0;694?:1y'55g=>?1C89l4H561?!16281b8;4?::k7g?6=3`?;6=44o023>5<<uk;i87>54;294~"68h0=:6F;4c9K014<,>;1=6g;6;29?l2d2900e8>50;9l556=831vn<l<:187>5<7s-;;m789;I67f>N3<;1/;<4>;h65>5<<a=i1<75f5183>>i6890;66sm1c094?2=83:p(<>n:748L12e3A>?>6*81;38m10=831b8n4?::k64?6=3f;;<7>5;|`2f4<72=0;6=u+11c923=O<=h0D9:=;%52>4=n<?0;66g;c;29?l372900c<>?:188yg7el3:187>50z&24d<1>2B?8o5G4508 27=92c?:7>5;h6`>5<<a<:1<75`11294?=zj8hh6=4;:183!77i3<=7E:;b:J707=#?80:7d:9:188m1e=831b9=4?::m245<722wi=ol50;694?6|,8:j6;84H56a?M23:2.<=7?4i5494?=n<j0;66g:0;29?j7783:17pl>b`83>1<729q/==o5679K01d<@=>97)9>:09j03<722c?o7>5;h73>5<<g8:;6=44}c3a=?6=<3:1<v*>0`852>N3<k1C89<4$6395>o3>3:17d:l:188m06=831d==>50;9~f4d?290?6=4?{%33e?013A>?n6F;439'34<63`>=6=44i5a94?=n=90;66a>0183>>{e9k=1<7:50;2x 46f2?<0D9:m;I676>"093;0e9850;9j0f<722c><7>5;n334?6=3th:n;4?:583>5}#99k1:;5G45`8L1253-=:6<5f4783>>o3k3:17d;?:188k4672900qo<=5;290?6=8r.:<l496:J70g=O<=80D9<4$b2916g<,>;1=6g;6;29?l2d2900e8>50;9l556=831vn?<;:187>5<7s-;;m789;I67f>N3<;1C8?5+c1867d=#?80:7d:9:188m1e=831b9=4?::m245<722wi>?=50;694?6|,8:j6;84H56a?M23:2B?>6*l0;70e>"093;0e9850;9j0f<722c><7>5;n334?6=3th9>i4?:583>5}#99k1:;5G45`8L1253A>97)m?:41b?!16281b8;4?::k7g?6=3`?;6=44o023>5<<uk89o7>54;294~"68h0=:6F;4c9K014<@=80(n>552c8 27=92c?:7>5;h6`>5<<a<:1<75`11294?=zj;8i6=4;:183!77i3<=7E:;b:J707=O<;1/o=4:3`9'34<63`>=6=44i5a94?=n=90;66a>0183>>{e:;k1<7:50;2x 46f2?<0D9:m;I676>N3:2.h<7;<a:&45?7<a=<1<75f4b83>>o283:17b??0;29?xd5:00;694?:1y'55g=>?1C89l4H561?M253-i;68=n;%52>4=n<?0;66g;c;29?l372900c<>?:188yg4503:187>50z&24d<1>2B?8o5G4508L14<,j:19>o4$6395>o3>3:17d:l:188m06=831d==>50;9~f740290?6=4?{%33e?013A>?n6F;439K07=#k90>?l5+7082?l212900e9m50;9j15<722e:<=4?::a670=83>1<7>t$02b>30<@=>i7E:;2:J76>"d83?8m6*81;38m10=831b8n4?::k64?6=3f;;<7>5;|`167<72=0;6=u+11c923=O<=h0D9:=;I61?!e72<9j7)9>:09j03<722c?o7>5;h73>5<<g8:;6=44}c015?6=<3:1<v*>0`852>N3<k1C89<4H508 f6==:k0(:?51:k72?6=3`>h6=44i4294?=h99:1<75rb0;a>5<3290;w)??a;45?M23j2B?8?5G439'g5<2;h1/;<4>;h65>5<<a=i1<75f5183>>i6890;66sm18c94?2=83:p(<>n:748L12e3A>?>6F;2:&`4?34i2.<=7?4i5494?=n<j0;66g:0;29?j7783:17pl>9883>1<729q/==o5679K01d<@=>97E:=;%a3>05f3-=:6<5f4783>>o3k3:17d;?:188k4672900qo?68;290?6=8r.:<l496:J70g=O<=80D9<4$b2916g<,>;1=6g;6;29?l2d2900e8>50;9l556=831vn<78:187>5<7s-;;m789;I67f>N3<;1C8?5+c1867d=#?80:7d:9:188m1e=831b9=4?::m245<722wi=l=50;694?6|,8:j6;84H56a?M23:2B?>6*l0;70e>"093;0e9850;9j0f<722c><7>5;n334?6=3th:m?4?:583>5}#99k1:;5G45`8L1253A>97)m?:41b?!16281b8;4?::k7g?6=3`?;6=44o023>5<<uk;j=7>54;294~"68h0=:6F;4c9K014<@=80(n>552c8 27=92c?:7>5;h6`>5<<a<:1<75`11294?=zj8k;6=4;:183!77i3<=7E:;b:J707=O<;1/o=4:3`9'34<63`>=6=44i5a94?=n=90;66a>0183>>{e90l1<7:50;2x 46f2?<0D9:m;I676>N3:2.h<7;<a:&45?7<a=<1<75f4b83>>o283:17b??0;29?xd61l0;694?:1y'55g=>?1C89l4H561?M253-i;68=n;%52>4=n<?0;66g;c;29?l372900c<>?:188yg7>l3:187>50z&24d<1>2B?8o5G4508L14<,j:19>o4$6395>o3>3:17d:l:188m06=831d==>50;9~f4?d290?6=4?{%33e?013A>?n6F;439K07=#k90>?l5+7082?l212900e9m50;9j15<722e:<=4?::a5<0=83>1<7>t$02b>30<@=>i7E:;2:J76>"d83?8m6*81;38m10=831b8n4?::k64?6=3f;;<7>5;|`2=0<72=0;6=u+11c923=O<=h0D9:=;I61?!e72<9j7)9>:09j03<722c?o7>5;h73>5<<g8:;6=44}c34`?6=<3:1<v*>0`852>N3<k1C89<4$6395>o3>3:17d:l:188m06=831d==>50;9~f41d290?6=4?{%33e?013A>?n6F;439'34<63`>=6=44i5a94?=n=90;66a>0183>>{e9>h1<7:50;2x 46f2?<0D9:m;I676>"093;0e9850;9j0f<722c><7>5;n334?6=3th:;l4?:583>5}#99k1:;5G45`8L1253-=:6<5f4783>>o3k3:17d;?:188k4672900qo?89;290?6=8r.:<l496:J70g=O<=80(:?51:k72?6=3`>h6=44i4294?=h99:1<75rb0:6>5<3290;w)??a;45?M23j2B?8?5+7082?l212900e9m50;9j15<722e:<=4?::a5=2=83>1<7>t$02b>30<@=>i7E:;2:&45?7<a=<1<75f4b83>>o283:17b??0;29?xd60:0;694?:1y'55g=>?1C89l4H561?!16281b8;4?::k7g?6=3`?;6=44o023>5<<uk;3>7>54;294~"68h0=:6F;4c9K014<,>;1=6g;6;29?l2d2900e8>50;9l556=831vn<6>:187>5<7s-;;m789;I67f>N3<;1/;<4>;h65>5<<a=i1<75f5183>>i6890;66sm19294?2=83:p(<>n:748L12e3A>?>6*81;38m10=831b8n4?::k64?6=3f;;<7>5;|`23c<72=0;6=u+11c923=O<=h0D9:=;%52>4=n<?0;66g;c;29?l372900c<>?:188yg70m3:187>50z&24d<1>2B?8o5G4508 27=92c?:7>5;h6`>5<<a<:1<75`11294?=zj8=36=4;:183!77i3<=7E:;b:J707=#?80:7d:9:188m1e=831b9=4?::m245<722wi=:950;694?6|,8:j6;84H56a?M23:2.<=7?4i5494?=n<j0;66g:0;29?j7783:17pl=0c83>1<729q/==o5679K01d<@=>97)9>:09j03<722c?o7>5;h73>5<<g8:;6=44}c03e?6=<3:1<v*>0`852>N3<k1C89<4$6395>o3>3:17d:l:188m06=831d==>50;9~f76>290?6=4?{%33e?013A>?n6F;439'34<63`>=6=44i5a94?=n=90;66a>0183>>{e:891<7:50;2x 46f2?<0D9:m;I676>"093;0e9850;9j0f<722c><7>5;n334?6=3th9=?4?:583>5}#99k1:;5G45`8L1253-=:6<5f4783>>o3k3:17d;?:188k4672900qo<>1;290?6=8r.:<l496:J70g=O<=80(:?51:k72?6=3`>h6=44i4294?=h99:1<75rb333>5<3290;w)??a;45?M23j2B?8?5+7082?l212900e9m50;9j15<722e:<=4?::a65`=83>1<7>t$02b>30<@=>i7E:;2:&45?7<a=<1<75f4b83>>o283:17b??0;29?xd58l0;694?:1y'55g=>?1C89l4H561?!16281b8;4?::k7g?6=3`?;6=44o023>5<<uk8;h7>54;294~"68h0=:6F;4c9K014<,>;1=6g;6;29?l2d2900e8>50;9l556=831vn?>l:187>5<7s-;;m789;I67f>N3<;1/;<4>;h65>5<<a=i1<75f5183>>i6890;66sm21:94?2=83:p(<>n:748L12e3A>?>6*81;38m10=831b8n4?::k64?6=3f;;<7>5;|`142<72=0;6=u+11c923=O<=h0D9:=;%52>4=n<?0;66g;c;29?l372900c<>?:188yg4b03:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm2d594?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk8n57>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a6`0=83?1<7>t$02b>31<@=>i7E:;2:&45?7<a=<1<75f4683>>o3k3:17d;?:188k4672900qo<j5;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e:o;1<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c0e4?6==3:1<v*>0`853>N3<k1C89<4$6395>o3>3:17d:8:188m1e=831b9=4?::m245<722wi>hh50;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg4bm3:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm2df94?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk8no7>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a6`d=83?1<7>t$02b>31<@=>i7E:;2:&45?7<a=<1<75f4683>>o3k3:17d;?:188k4672900qo<ja;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e:l>1<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c0f7?6==3:1<v*>0`85e>N3<k1C89<4$6392>o3>3:17d:8:188m06=831bjk4?::m245<722wi>n750;194?6|,8:j69:n;I67f>N3<;1b844?::ka0?6=3fl26=44}c0`<?6=;3:1<v*>0`870d=O<=h0D9:=;h6:>5<<ak>1<75`f883>>{e:k:1<7:50;2x 46f2j;0D9:m;I676>o313:17d;>:188m4642900ck750;9~f7e029086=4?{%33e?23i2B?8o5G4508m1?=831bn94?::me=?6=3th9mh4?:583>5}#99k1o<5G45`8L1253`>26=44i4394?=n9991<75`f883>>{e:j<1<7=50;2x 46f2=>j7E:;b:J707=n<00;66gm4;29?j`>2900qo<nc;290?6=8r.:<l4l1:J70g=O<=80e9750;9j14<722c:<>4?::me=?6=3th9o84?:283>5}#99k189o4H56a?M23:2c?57>5;h`7>5<<go31<75rb3cb>5<3290;w)??a;a2?M23j2B?8?5f4883>>o293:17d??3;29?j`>2900qo<k3;297?6=8r.:<l4;4`9K01d<@=>97d:6:188mg2=831dj44?::a6f4=83>1<7>t$02b>f7<@=>i7E:;2:k7=?6=3`?:6=44i020>5<<go31<75rb3f1>5<4290;w)??a;67e>N3<k1C89<4i5;94?=nj=0;66ai9;29?xd5k90;694?:1y'55g=k81C89l4H561?l2>2900e8?50;9j555=831dj44?::a6a7=8391<7>t$02b>12f3A>?n6F;439j0<<722ci87>5;nd:>5<<uk8ii7>54;294~"68h0h=6F;4c9K014<a=31<75f5083>>o68:0;66ai9;29?xd5l90;6>4?:1y'55g=<=k0D9:m;I676>o313:17dl;:188kc?=831vn?ll:187>5<7s-;;m7m>;I67f>N3<;1b844?::k65?6=3`;;?7>5;nd:>5<<uk8hj7>53;294~"68h0?8l5G45`8L1253`>26=44ic694?=hn00;66sm2cc94?2=83:p(<>n:b38L12e3A>?>6g;9;29?l362900e<><:188kc?=831vn?mj:180>5<7s-;;m7:;a:J70g=O<=80e9750;9jf1<722em57>5;|`1f=<72=0;6=u+11c9g4=O<=h0D9:=;h6:>5<<a<;1<75f11194?=hn00;66sm2bf94?5=83:p(<>n:56b?M23j2B?8?5f4883>>oe<3:17bh6:188yg4e>3:187>50z&24d<d92B?8o5G4508m1?=831b9<4?::k246<722em57>5;|`1gf<72:0;6=u+11c901g<@=>i7E:;2:k7=?6=3`h?6=44og;94?=zj;h?6=4;:183!77i3i:7E:;b:J707=n<00;66g:1;29?l77;3:17bh6:188yg4dj3:1?7>50z&24d<3<h1C89l4H561?l2>2900eo:50;9lb<<722wi>o<50;694?6|,8:j6n?4H56a?M23:2c?57>5;h72>5<<a8:86=44og;94?=zj;i?6=4<:183!77i3>?m6F;4c9K014<a=31<75fb583>>ia13:17pl=a983>1<729q/==o5c09K01d<@=>97d:6:188m07=831b===50;9lb<<722wi?=950;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg57>3:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm31794?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk9;87>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a755=83?1<7>t$02b>31<@=>i7E:;2:&45?7<a=<1<75f4683>>o3k3:17d;?:188k4672900qo=?f;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e;9o1<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c13`?6==3:1<v*>0`853>N3<k1C89<4$6395>o3>3:17d:8:188m1e=831b9=4?::m245<722wi?=m50;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg57j3:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm31c94?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk9;57>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a75>=83?1<7>t$02b>31<@=>i7E:;2:&45?7<a=<1<75f4683>>o3k3:17d;?:188k4672900qo=?2;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e;9;1<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c11f?6=;3:1<v*>0`870d=O<=h0D9:=;h6:>5<<ak>1<75`f883>>{e;8>1<7:50;2x 46f2j;0D9:m;I676>o313:17d;>:188m4642900ck750;9~f674290?6=4?{%33e?e63A>?n6F;439j0<<722c>=7>5;h337?6=3fl26=44}c126?6=<3:1<v*>0`8`5>N3<k1C89<4i5;94?=n=80;66g>0283>>ia13:17pl<1e83>1<729q/==o5c09K01d<@=>97d:6:188m07=831b===50;9lb<<722wi?<m50;694?6|,8:j6n?4H56a?M23:2c?57>5;h72>5<<a8:86=44og;94?=zj:;i6=4;:183!77i3i:7E:;b:J707=n<00;66g:1;29?l77;3:17bh6:188yg56i3:187>50z&24d<d92B?8o5G4508m1?=831b9<4?::k246<722em57>5;|`05<<72=0;6=u+11c9g4=O<=h0D9:=;h6:>5<<a<;1<75f11194?=hn00;66sm30:94?2=83:p(<>n:b38L12e3A>?>6g;9;29?l362900e<><:188kc?=831vn>?8:187>5<7s-;;m7m>;I67f>N3<;1b844?::k65?6=3`;;?7>5;nd:>5<<uk9::7>54;294~"68h0h=6F;4c9K014<a=31<75f5083>>o68:0;66ai9;29?xd49<0;694?:1y'55g=k81C89l4H561?l2>2900e8?50;9j555=831dj44?::a747=83>1<7>t$02b>f7<@=>i7E:;2:k7=?6=3`?:6=44i020>5<<go31<75rb20g>5<3290;w)??a;45?M23j2B?8?5+7082?l212900e9m50;9j15<722e:<=4?::a77`=83?1<7>t$02b>3g<@=>i7E:;2:&45?0<a=<1<75f4683>>o283:17dhi:188k4672900qo<71;290?6=8r.:<l4l1:J70g=O<=80e9750;9j14<722c:<>4?::me=?6=3th94=4?:583>5}#99k1o<5G45`8L1253`>26=44i4394?=n9991<75`f883>>{e:>l1<7:50;2x 46f2j;0D9:m;I676>o313:17d;>:188m4642900ck750;9~f71b290?6=4?{%33e?e63A>?n6F;439j0<<722c>=7>5;h337?6=3fl26=44}c04`?6=<3:1<v*>0`8`5>N3<k1C89<4i5;94?=n=80;66g>0283>>ia13:17pl=7b83>1<729q/==o5c09K01d<@=>97d:6:188m07=831b===50;9lb<<722wi>:l50;694?6|,8:j6n?4H56a?M23:2c?57>5;h72>5<<a8:86=44og;94?=zj;=j6=4;:183!77i3i:7E:;b:J707=n<00;66g:1;29?l77;3:17bh6:188yg41:3:187>50z&24d<d92B?8o5G4508m1?=831b9<4?::k246<722em57>5;|`124<72=0;6=u+11c9g4=O<=h0D9:=;h6:>5<<a<;1<75f11194?=hn00;66sm27294?2=83:p(<>n:b38L12e3A>?>6g;9;29?l362900e<><:188kc?=831vn?;i:187>5<7s-;;m7m>;I67f>N3<;1b844?::k65?6=3`;;?7>5;nd:>5<<uk8>i7>54;294~"68h0h=6F;4c9K014<a=31<75f5083>>o68:0;66ai9;29?xd5=m0;694?:1y'55g=k81C89l4H561?l2>2900e8?50;9j555=831dj44?::a60e=83>1<7>t$02b>f7<@=>i7E:;2:k7=?6=3`?:6=44i020>5<<go31<75rb37a>5<3290;w)??a;a2?M23j2B?8?5f4883>>o293:17d??3;29?j`>2900qo=:b;290?6=8r.:<l4l1:J70g=O<=80e9750;9j14<722c:<>4?::me=?6=3th89l4?:583>5}#99k1o<5G45`8L1253`>26=44i4394?=n9991<75`f883>>{e;<31<7:50;2x 46f2j;0D9:m;I676>o313:17d;>:188m4642900ck750;9~f63?290?6=4?{%33e?e63A>?n6F;439j0<<722c>=7>5;h337?6=3fl26=44}c163?6=<3:1<v*>0`8`5>N3<k1C89<4i5;94?=n=80;66g>0283>>ia13:17pl<5783>1<729q/==o5c09K01d<@=>97d:6:188m07=831b===50;9lb<<722wi?8;50;694?6|,8:j6n?4H56a?M23:2c?57>5;h72>5<<a8:86=44og;94?=zj:>;6=4;:183!77i3i:7E:;b:J707=n<00;66g:1;29?l77;3:17bh6:188yg54n3:187>50z&24d<d92B?8o5G4508m1?=831b9<4?::k246<722em57>5;|`07`<72=0;6=u+11c9g4=O<=h0D9:=;h6:>5<<a<;1<75f11194?=hn00;66sm32f94?2=83:p(<>n:b38L12e3A>?>6g;9;29?l362900e<><:188kc?=831vn>=l:187>5<7s-;;m7m>;I67f>N3<;1b844?::k65?6=3`;;?7>5;nd:>5<<uk98n7>54;294~"68h0h=6F;4c9K014<a=31<75f5083>>o68:0;66ai9;29?xd4;h0;694?:1y'55g=k81C89l4H561?l2>2900e8?50;9j555=831dj44?::a7fb=83?1<7>t$02b>3g<@=>i7E:;2:&45?0<a=<1<75f4683>>o283:17dhi:188k4672900qo=le;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e;m81<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c1g7?6==3:1<v*>0`853>N3<k1C89<4$6395>o3>3:17d:8:188m1e=831b9=4?::m245<722wi?i850;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg5c<3:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm3e794?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk9o57>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a7a1=83?1<7>t$02b>31<@=>i7E:;2:&45?7<a=<1<75f4683>>o3k3:17d;?:188k4672900qo=k8;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e;m;1<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c1`b?6==3:1<v*>0`853>N3<k1C89<4$6395>o3>3:17d:8:188m1e=831b9=4?::m245<722wi?i>50;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg5e>3:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm3c794?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk9i;7>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a7g`=83?1<7>t$02b>31<@=>i7E:;2:&45?7<a=<1<75f4683>>o3k3:17d;?:188k4672900qo=me;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e;kn1<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c1ag?6==3:1<v*>0`853>N3<k1C89<4$6395>o3>3:17d:8:188m1e=831b9=4?::m245<722wi?oo50;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg5e13:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm3c`94?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk9i47>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a7g2=83?1<7>t$02b>3g<@=>i7E:;2:&45?0<a=<1<75f4683>>o283:17dhi:188k4672900qo=m3;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e;0h1<7=50;2x 46f2=>j7E:;b:J707=n<00;66gm4;29?j`>2900qo=6a;297?6=8r.:<l4;4`9K01d<@=>97d:6:188mg2=831dj44?::a7=2=83>1<7>t$02b>f7<@=>i7E:;2:k7=?6=3`?:6=44i020>5<<go31<75rb2;:>5<4290;w)??a;67e>N3<k1C89<4i5;94?=nj=0;66ai9;29?xd40;0;694?:1y'55g=k81C89l4H561?l2>2900e8?50;9j555=831dj44?::a7d3=8391<7>t$02b>12f3A>?n6F;439j0<<722ci87>5;nd:>5<<uk92:7>54;294~"68h0h=6F;4c9K014<a=31<75f5083>>o68:0;66ai9;29?xd4i=0;6>4?:1y'55g=<=k0D9:m;I676>o313:17dl;:188kc?=831vn>7;:187>5<7s-;;m7m>;I67f>N3<;1b844?::k65?6=3`;;?7>5;nd:>5<<uk9j?7>53;294~"68h0?8l5G45`8L1253`>26=44ic694?=hn00;66sm38094?2=83:p(<>n:b38L12e3A>?>6g;9;29?l362900e<><:188kc?=831vn>o=:180>5<7s-;;m7:;a:J70g=O<=80e9750;9jf1<722em57>5;|`0=5<72=0;6=u+11c9g4=O<=h0D9:=;h6:>5<<a<;1<75f11194?=hn00;66sm3`394?5=83:p(<>n:56b?M23j2B?8?5f4883>>oe<3:17bh6:188yg5?m3:187>50z&24d<d92B?8o5G4508m1?=831b9<4?::k246<722em57>5;|`0e5<72:0;6=u+11c901g<@=>i7E:;2:k7=?6=3`h?6=44og;94?=zj:2h6=4;:183!77i3i:7E:;b:J707=n<00;66g:1;29?l77;3:17bh6:188yg5>n3:1?7>50z&24d<3<h1C89l4H561?l2>2900eo:50;9lb<<722wi?5o50;694?6|,8:j6n?4H56a?M23:2c?57>5;h72>5<<a8:86=44og;94?=zj:3n6=4<:183!77i3>?m6F;4c9K014<a=31<75fb583>>ia13:17pl<8983>1<729q/==o5c09K01d<@=>97d:6:188m07=831b===50;9lb<<722wi?4j50;194?6|,8:j69:n;I67f>N3<;1b844?::ka0?6=3fl26=44}c1;2?6=<3:1<v*>0`8`5>N3<k1C89<4i5;94?=n=80;66g>0283>>ia13:17pl<9983>6<729q/==o545c8L12e3A>?>6g;9;29?ld32900ck750;9~f6>7290?6=4?{%33e?e63A>?n6F;439j0<<722c>=7>5;h337?6=3fl26=44}c1ff?6==3:1<v*>0`853>N3<k1C89<4$6395>o3>3:17d:8:188m1e=831b9=4?::m245<722wi?ho50;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg5b13:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm3g194?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk9m>7>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a7c7=83?1<7>t$02b>31<@=>i7E:;2:&45?7<a=<1<75f4683>>o3k3:17d;?:188k4672900qo=i0;291?6=8r.:<l497:J70g=O<=80(:?51:k72?6=3`><6=44i5a94?=n=90;66a>0183>>{e;ll1<7;50;2x 46f2?=0D9:m;I676>"093;0e9850;9j02<722c?o7>5;h73>5<<g8:;6=44}c1fa?6==3:1<v*>0`853>N3<k1C89<4$6395>o3>3:17d:8:188m1e=831b9=4?::m245<722wi?hj50;794?6|,8:j6;94H56a?M23:2.<=7?4i5494?=n<>0;66g;c;29?l372900c<>?:188yg5bk3:197>50z&24d<1?2B?8o5G4508 27=92c?:7>5;h64>5<<a=i1<75f5183>>i6890;66sm3d:94?3=83:p(<>n:758L12e3A>?>6*81;38m10=831b8:4?::k7g?6=3`?;6=44o023>5<<uk9n;7>55;294~"68h0=;6F;4c9K014<,>;1=6g;6;29?l202900e9m50;9j15<722e:<=4?::a050=83>1<7>t$02b>3><@=>i7E:;2:&45?7<a=<1<75f4683>>o283:17b??0;29?xd3;j0;6>4?:1y'55g=j01C89l4H561?!1628?0e;j50;9j2`<722em57>5;|`76`<72:0;6=u+11c9f<=O<=h0D9:=;%52>43<a?n1<75f6d83>>ia13:17pl<3083>6<729q/==o5b89K01d<@=>97)9>:078m3b=831b:h4?::me=?6=3th:9?4?:283>5}#99k1n45G45`8L1253-=:6<l4i7f94?=n>l0;66ai9;29?xd6;?0;6>4?:1y'55g=j01C89l4H561?!1628h0e;j50;9j2`<722em57>5;|`270<72:0;6=u+11c9f<=O<=h0D9:=;%52>4d<a?n1<75f6d83>>ia13:17pl>3583>6<729q/==o5b89K01d<@=>97)9>:0`8m3b=831b:h4?::me=?6=3th:?>4?:283>5}#99k1n45G45`8L1253-=:6<l4i7f94?=n>l0;66ai9;29?xd6;;0;6>4?:1y'55g=j01C89l4H561?!1628h0e;j50;9j2`<722em57>5;|`274<72:0;6=u+11c9f<=O<=h0D9:=;%52>4d<a?n1<75f6d83>>ia13:17pl>3183>6<729q/==o5b89K01d<@=>97)9>:0`8m3b=831b:h4?::me=?6=3th:>k4?:283>5}#99k1n45G45`8L1253-=:6<l4i7f94?=n>l0;66ai9;29?xd6:l0;6>4?:1y'55g=j01C89l4H561?!1628h0e;j50;9j2`<722em57>5;|`26a<72:0;6=u+11c9f<=O<=h0D9:=;%52>4d<a?n1<75f6d83>>ia13:17pl>2b83>6<729q/==o5b89K01d<@=>97)9>:0`8m3b=831b:h4?::me=?6=3th:>o4?:283>5}#99k1n45G45`8L1253-=:6<l4i7f94?=n>l0;66ai9;29?xd6910;6>4?:1y'55g=j01C89l4H561?!1628h0e;j50;9j2`<722em57>5;|`252<72:0;6=u+11c9f<=O<=h0D9:=;%52>4d<a?n1<75f6d83>>ia13:17pl>1783>6<729q/==o5b89K01d<@=>97)9>:0`8m3b=831b:h4?::me=?6=3th:=84?:283>5}#99k1n45G45`8L1253-=:6<l4i7f94?=n>l0;66ai9;29?xd69=0;6>4?:1y'55g=j01C89l4H561?!1628h0e;j50;9j2`<722em57>5;|`256<72:0;6=u+11c9f<=O<=h0D9:=;%52>4d<a?n1<75f6d83>>ia13:17pl>1383>6<729q/==o5b89K01d<@=>97)9>:0`8m3b=831b:h4?::me=?6=3th:=<4?:283>5}#99k1n45G45`8L1253-=:6<l4i7f94?=n>l0;66ai9;29?xd6990;6>4?:1y'55g=j01C89l4H561?!1628h0e;j50;9j2`<722em57>5;|`24c<72:0;6=u+11c9f<=O<=h0D9:=;%52>4d<a?n1<75f6d83>>ia13:17pl>0d83>6<729q/==o5b89K01d<@=>97)9>:0`8m3b=831b:h4?::me=?6=3th:<i4?:283>5}#99k1n45G45`8L1253-=:6<l4i7f94?=n>l0;66ai9;29?xd68j0;6>4?:1y'55g=j01C89l4H561?!1628h0e;j50;9j2`<722em57>5;|`24g<72:0;6=u+11c9f<=O<=h0D9:=;%52>4d<a?n1<75f6d83>>ia13:17pl>5583>1<729q/==o5bb9K01d<@=>97)9>:318m3b=831b:h4?::k5b?6=3fl26=44}c362?6==3:1<v*>0`8aa>N3<k1C89<4$6395a=n>m0;66g9e;29?l0a2900e:>50;9lb<<722wi?>=50;194?6|,8:j6o74H56a?M23:2.<=7:<;h4g>5<<a?o1<75`f883>>{e:021<7=50;2x 46f2k30D9:m;I676>"093;>7d8k:188m3c=831dj44?::a50>=8391<7>t$02b>g?<@=>i7E:;2:&45?7e3`<o6=44i7g94?=hn00;66sm14c94?2=83:p(<>n:ca8L12e3A>?>6*81;00?l0c2900e;k50;9j2c<722em57>5;|`21f<72<0;6=u+11c9f`=O<=h0D9:=;%52>4b<a?n1<75f6d83>>o1n3:17d9?:188kc?=831vn9<7:187>5<7s-;;m7ll;I67f>N3<;1/;<493:k5`?6=3`<n6=44i7d94?=hn00;66sm37;94?5=83:p(<>n:c;8L12e3A>?>6*81;02?l0c2900e;k50;9lb<<722wi?9k50;194?6|,8:j6o74H56a?M23:2.<=7<>;h4g>5<<a?o1<75`f883>>{e:0;1<7=50;2x 46f2k30D9:m;I676>"0938:7d8k:188m3c=831dj44?::a624=8391<7>t$02b>g?<@=>i7E:;2:&45?463`<o6=44i7g94?=hn00;66sm37:94?3=83:p(<>n:cg8L12e3A>?>6*81;01?l0c2900e;k50;9j2c<722c<<7>5;nd:>5<<uk9?h7>55;294~"68h0ii6F;4c9K014<,>;1>?5f6e83>>o1m3:17d8i:188m26=831dj44?::a6<6=83?1<7>t$02b>gc<@=>i7E:;2:&45?7b3`<o6=44i7g94?=n>o0;66g80;29?j`>2900qo<81;291?6=8r.:<l4me:J70g=O<=80(:?51d9j2a<722c=i7>5;h4e>5<<a>:1<75`f883>>{e;?=1<7;50;2x 46f2ko0D9:m;I676>"093897d8k:188m3c=831b:k4?::k44?6=3fl26=44}c17g?6==3:1<v*>0`8aa>N3<k1C89<4$63967=n>m0;66g9e;29?l0a2900e:>50;9lb<<722wi>5h50;794?6|,8:j6ok4H56a?M23:2.<=7?j;h4g>5<<a?o1<75f6g83>>o083:17bh6:188yg4083:197>50z&24d<em2B?8o5G4508 27=9l1b:i4?::k5a?6=3`<m6=44i6294?=hn00;66sm37494?3=83:p(<>n:cg8L12e3A>?>6*81;01?l0c2900e;k50;9j2c<722c<<7>5;nd:>5<<uk9?n7>55;294~"68h0ii6F;4c9K014<,>;1>?5f6e83>>o1m3:17d8i:188m26=831dj44?::a6=c=83?1<7>t$02b>gc<@=>i7E:;2:&45?7b3`<o6=44i7g94?=n>o0;66g80;29?j`>2900qo<9f;291?6=8r.:<l4me:J70g=O<=80(:?51d9j2a<722c=i7>5;h4e>5<<a>:1<75`f883>>{e;??1<7;50;2x 46f2ko0D9:m;I676>"093897d8k:188m3c=831b:k4?::k44?6=3fl26=44}c17e?6==3:1<v*>0`8aa>N3<k1C89<4$63967=n>m0;66g9e;29?l0a2900e:>50;9lb<<722wi>5j50;794?6|,8:j6ok4H56a?M23:2.<=7?j;h4g>5<<a?o1<75f6g83>>o083:17bh6:188yg41m3:197>50z&24d<em2B?8o5G4508 27=9l1b:i4?::k5a?6=3`<m6=44i6294?=hn00;66sm37694?3=83:p(<>n:cg8L12e3A>?>6*81;01?l0c2900e;k50;9j2c<722c<<7>5;nd:>5<<uk9?57>55;294~"68h0ii6F;4c9K014<,>;1>?5f6e83>>o1m3:17d8i:188m26=831dj44?::a6=e=83?1<7>t$02b>gc<@=>i7E:;2:&45?7b3`<o6=44i7g94?=n>o0;66g80;29?j`>2900qo<9d;291?6=8r.:<l4me:J70g=O<=80(:?51d9j2a<722c=i7>5;h4e>5<<a>:1<75`f883>>{e;?l1<7;50;2x 46f2ko0D9:m;I676>"093;j7d8k:188m3c=831b:k4?::k44?6=3fl26=44}c157?6==3:1<v*>0`8aa>N3<k1C89<4$63967=n>m0;66g9e;29?l0a2900e:>50;9lb<<722wi?9650;794?6|,8:j6ok4H56a?M23:2.<=7<=;h4g>5<<a?o1<75f6g83>>o083:17bh6:188yg4?j3:197>50z&24d<em2B?8o5G4508 27=9l1b:i4?::k5a?6=3`<m6=44i6294?=hn00;66sm27a94?3=83:p(<>n:cg8L12e3A>?>6*81;3f?l0c2900e;k50;9j2c<722c<<7>5;nd:>5<<uk83m7>53;294~"68h0i56F;4c9K014<,>;1:6g9d;29?l0b2900ck750;9~f70e29086=4?{%33e?d>3A>?n6F;439'34<13`<o6=44i7g94?=hn00;66sm28494?2=83:p(<>n:ca8L12e3A>?>6*81;47?l0c2900e;k50;9j2c<722em57>5;|`21c<72:0;6=u+11c9f<=O<=h0D9:=;%52>77<a?n1<75f6d83>>ia13:17pl>2483>6<729q/==o5b89K01d<@=>97)9>:0`8m3b=831b:h4?::me=?6=3th::?4?:583>5}#99k1nn5G45`8L1253-=:6<m4i7f94?=n>l0;66g9f;29?j`>2900qo:?4;290?6=8r.:<l4mc:J70g=O<=80(:?5619j2a<722c=i7>5;h4e>5<<go31<75rb520>5<3290;w)??a;``?M23j2B?8?5+70854>o1l3:17d8j:188m3`=831dj44?::a054=83>1<7>t$02b>ge<@=>i7E:;2:&45?073`<o6=44i7g94?=n>o0;66ai9;29?xd3880;694?:1y'55g=jj1C89l4H561?!162?:0e;j50;9j2`<722c=j7>5;nd:>5<<uk>;<7>54;294~"68h0io6F;4c9K014<,>;1:=5f6e83>>o1m3:17d8i:188kc?=831vn>hi:187>5<7s-;;m7ll;I67f>N3<;1/;<490:k5`?6=3`<n6=44i7d94?=hn00;66sm3gg94?2=83:p(<>n:ca8L12e3A>?>6*81;43?l0c2900e;k50;9j2c<722em57>5;|`0ba<72=0;6=u+11c9ff=O<=h0D9:=;%52>36<a?n1<75f6d83>>o1n3:17bh6:188yg7c:3:1?7>50z&24d<e12B?8o5G4508 27=9k1b:i4?::k5a?6=3fl26=44}c144?6=;3:1<v*>0`8a=>N3<k1C89<4$63950=n>m0;66g9e;29?j`>2900qo?>b;291?6=8r.:<l4me:J70g=O<=80(:?5259j2a<722c=i7>5;h4e>5<<a>:1<75`f883>>{e9;81<7=50;2x 46f2k30D9:m;I676>"093;i7d8k:188m3c=831dj44?::a576=8391<7>t$02b>g?<@=>i7E:;2:&45?7e3`<o6=44i7g94?=hn00;66sm2c394?4=83:p(<>n:c:8L12e3A>?>6*81;36?l0c2900ck750;9~f7ga29096=4?{%33e?d?3A>?n6F;439'34<6=2c=h7>5;nd:>5<<uk8jh7>52;294~"68h0i46F;4c9K014<,>;1=85f6e83>>ia13:17pl=ac83>7<729q/==o5b99K01d<@=>97)9>:078m3b=831dj44?::a6f5=8381<7>t$02b>g><@=>i7E:;2:&45?723`<o6=44og;94?=zj;i:6=4=:183!77i3h37E:;b:J707=#?80:96g9d;29?j`>2900qo<mf;296?6=8r.:<l4m8:J70g=O<=80(:?5149j2a<722em57>5;|`1fa<72;0;6=u+11c9f==O<=h0D9:=;%52>43<a?n1<75`f883>>{e:kh1<7<50;2x 46f2k20D9:m;I676>"093;>7d8k:188kc?=831vn?l6:181>5<7s-;;m7l7;I67f>N3<;1/;<4>5:k5`?6=3fl26=44}c0a3?6=:3:1<v*>0`8a<>N3<k1C89<4$63950=n>m0;66ai9;29?xd5j<0;6?4?:1y'55g=j11C89l4H561?!1628?0e;j50;9lb<<722wi>o=50;094?6|,8:j6o64H56a?M23:2.<=7?:;h4g>5<<go31<75rb3c:>5<5290;w)??a;`;?M23j2B?8?5+70821>o1l3:17bh6:188yg5?=3:1>7>50z&24d<e02B?8o5G4508 27=9<1b:i4?::me=?6=3th84>4?:383>5}#99k1n55G45`8L1253-=:6<;4i7f94?=hn00;66sm38594?4=83:p(<>n:c:8L12e3A>?>6*81;36?l0c2900ck750;9~f6?229096=4?{%33e?d?3A>?n6F;439'34<6=2c=h7>5;nd:>5<<uk92?7>52;294~"68h0i46F;4c9K014<,>;1=85f6e83>>ia13:17pl<9083>7<729q/==o5b99K01d<@=>97)9>:078m3b=831dj44?::a7=`=8381<7>t$02b>g><@=>i7E:;2:&45?723`<o6=44og;94?=zj:2o6=4=:183!77i3h37E:;b:J707=#?80:96g9d;29?j`>2900qo=7b;296?6=8r.:<l4m8:J70g=O<=80(:?5149j2a<722em57>5;|`0<<<72;0;6=u+11c9f==O<=h0D9:=;%52>43<a?n1<75`f883>>{e;1=1<7<50;2x 46f2k20D9:m;I676>"093;>7d8k:188kc?=831vn>6>:181>5<7s-;;m7l7;I67f>N3<;1/;<4>5:k5`?6=3fl26=44}c0`e?6=:3:1<v*>0`8a<>N3<k1C89<4$63950=n>m0;66ai9;29?xd41j0;6?4?:1y'55g=j11C89l4H561?!1628?0e;j50;9lb<<722wi=?:50;794?6|,8:j6ok4H56a?M23:2.<=7?k;h4g>5<<a?o1<75f6g83>>o083:17bh6:188yg55:3:1?7>50z&24d<e12B?8o5G4508 27=:81b:i4?::k5a?6=3fl26=44}c117?6=;3:1<v*>0`8a=>N3<k1C89<4$63964=n>m0;66g9e;29?j`>2900qo==4;297?6=8r.:<l4m9:J70g=O<=80(:?5209j2a<722c=i7>5;nd:>5<<uk9997>53;294~"68h0i56F;4c9K014<,>;1><5f6e83>>o1m3:17bh6:188yg55>3:1?7>50z&24d<e12B?8o5G4508 27=:81b:i4?::k5a?6=3fl26=44}c113?6=;3:1<v*>0`8a=>N3<k1C89<4$63964=n>m0;66g9e;29?j`>2900qo==8;297?6=8r.:<l4m9:J70g=O<=80(:?5209j2a<722c=i7>5;nd:>5<<uk9957>53;294~"68h0i56F;4c9K014<,>;1><5f6e83>>o1m3:17bh6:188yg71?3:197>50z&24d<em2B?8o5G4508 27=:=1b:i4?::k5a?6=3`<m6=44i6294?=hn00;66sm10g94?5=83:p(<>n:c;8L12e3A>?>6*81;3a?l0c2900e;k50;9lb<<722wi=<o50;794?6|,8:j6ok4H56a?M23:2.<=7<;;h4g>5<<a?o1<75f6g83>>o083:17bh6:188yg7613:197>50z&24d<em2B?8o5G4508 27=9m1b:i4?::k5a?6=3`<m6=44i6294?=hn00;66sm1e394?3=83:p(<>n:cg8L12e3A>?>6*81;3g?l0c2900e;k50;9j2c<722c<<7>5;nd:>5<<uk;o:7>55;294~"68h0ii6F;4c9K014<,>;1>95f6e83>>o1m3:17d8i:188m26=831dj44?::a5a2=83?1<7>t$02b>gc<@=>i7E:;2:&45?7c3`<o6=44i7g94?=n>o0;66g80;29?j`>2900qo?>d;290?6=8r.:<l4mc:J70g=O<=80(:?51b9j2a<722c=i7>5;h4e>5<<go31<75rb20b>5<4290;w)??a;`:?M23j2B?8?5+70815>o1l3:17d8j:188kc?=831vn>?j:180>5<7s-;;m7l6;I67f>N3<;1/;<4=1:k5`?6=3`<n6=44og;94?=zj:;m6=4<:183!77i3h27E:;b:J707=#?809=6g9d;29?l0b2900ck750;9~f64729086=4?{%33e?d>3A>?n6F;439'34<592c=h7>5;h4f>5<<go31<75rb00b>5<2290;w)??a;`f?M23j2B?8?5+7082`>o1l3:17d8j:188m3`=831b;=4?::me=?6=3th:>;4?:583>5}#99k1nn5G45`8L1253-=:6?=4i7f94?=n>l0;66g9f;29?j`>2900qo?=8;291?6=8r.:<l4me:J70g=O<=80(:?51e9j2a<722c=i7>5;h4e>5<<a>:1<75`f883>>{e9;=1<7;50;2x 46f2ko0D9:m;I676>"093;o7d8k:188m3c=831b:k4?::k44?6=3fl26=44}c115?6=;3:1<v*>0`8a=>N3<k1C89<4$63964=n>m0;66g9e;29?j`>2900qo=i5;290?6=8r.:<l4mc:J70g=O<=80(:?53:k5`?6=3`<n6=44i7d94?=hn00;66sm3g:94?3=83:p(<>n:cg8L12e3A>?>6*81;03?l0c2900e;k50;9j2c<722c<<7>5;nd:>5<<uk9m;7>55;294~"68h0ii6F;4c9K014<,>;196g9d;29?l0b2900e;h50;9j35<722em57>5;|`0b3<72=0;6=u+11c9ff=O<=h0D9:=;%52>1=n>m0;66g9e;29?l0a2900ck750;9~f444290?6=4?{%33e?dd3A>?n6F;439'34<5;2c=h7>5;h4f>5<<a?l1<75`f883>>{e9;31<7;50;2x 46f2ko0D9:m;I676>"093;o7d8k:188m3c=831b:k4?::k44?6=3fl26=44}c145?6=;3:1<v*>0`8a=>N3<k1C89<4$63950=n>m0;66g9e;29?j`>2900qo=82;297?6=8r.:<l4m9:J70g=O<=80(:?5149j2a<722c=i7>5;nd:>5<<uk>:h7>52b83>5}#99k1==?4H56a?M23:2P?978te;:956<603;?6<75}%67<?77:2.:<;4>;%51>7=#?:097)9;:39'30<53-==6?5+7681?!1?2;1/;44=;%5b>7=#?k097)9l:39'3a<53-=n6?5+7g81?!>72;1/4<4=;%:1>7=#0:097)6;:39'<0<53-2=6?5+8681?!>?2;1/444=;%:b>7=#0k097)6l:39'<a<53-2n6?5+8g81?!?72;1/5<4=;%;1>7=#1:097)7;:39'=0<53-3=6?5+9681?!??2;1/544=;%;b>7=#1k097)7l:39'=a<53-3n6?5+9g81?!g72;1/m<4=;%c1>7=#i:097)o;:39'e0<53-k=6?5+a681?!g?2;1/m44=;%cb>7=#ik097)ol:39'ea<53-kn6?5+ag81?!d72;1/n<4=;%330?263-h96<5+b282?!23?3;;>6*>0682?l2f2900e9l50;9j24<722c=>7>5;h33<?6=3`;;57>5;h671?6=3`>?:7>5;h0b>5<#nl0956`id;28?l4?290/jh4=9:le`?7<3`8<6=4+fd81=>hal3807d<9:18'b`<512dmh7=4;h10>5<#nl0956`id;68?l55290/jh4=9:le`?3<3`9:6=4+fd81=>hal3<07d=?:18'b`<512dmh794;h0e>5<#nl0956`id;:8?l4b290/jh4=9:le`??<3`8o6=4+fd81=>hal3k07d<l:18'b`<512dmh7l4;h0a>5<#nl0956`id;a8?l42290/jh4=9:le`?b<3`9<6=4+fd802>hal3:07d=::18'b`<4>2dmh7?4;h63>5<#nl08:6`id;08?l5a290/jh4<6:le`?5<3`9n6=4+fd802>hal3>07d=k:18'b`<4>2dmh7;4;h1`>5<#nl08:6`id;48?l5e290/jh4<6:le`?1<3`9j6=4+fd802>hal3207d=6:18'b`<4>2dmh774;h1;>5<#nl08:6`id;c8?l53290/jh4<6:le`?d<3`?86=4+fd866>hal3:07d;7:18'b`<2?2dmh7>4;h75>5<#nl0>;6`id;38?l32290/jh4:7:le`?4<3`??6=4+fd863>hal3907b;n:18'b`<212dmh7>4;n7e>5<#nl0>i6`id;28?j3c290/jh4:e:le`?7<3f?h6=4+fd86a>hal3807b;m:18'b`<2m2dmh7=4;|`75f<72;i1<7>t$02b>4663A>?n6F;439Y00<1sl036<=519820?7>2t.?854>039'550=92.<>7<4$6196>"0<380(:;52:&42?4<,>=1>6*88;08 2?=:2.<m7<4$6`96>"0k380(:j52:&4a?4<,>l1>6*70;08 =7=:2.3>7<4$9196>"?<380(5;52:&;2?4<,1=1>6*78;08 =?=:2.3m7<4$9`96>"?k380(5j52:&;a?4<,1l1>6*60;08 <7=:2.2>7<4$8196>"><380(4;52:&:2?4<,0=1>6*68;08 <?=:2.2m7<4$8`96>">k380(4j52:&:a?4<,0l1>6*n0;08 d7=:2.j>7<4$`196>"f<380(l;52:&b2?4<,h=1>6*n8;08 d?=:2.jm7<4$``96>"fk380(lj52:&ba?4<,hl1>6*m0;08 g7=:2.:<94;1:&a6?7<,k91=6*;468247=#99=1=6g;a;29?l2e2900e;?50;9j27<722c:<54?::k24<<722c?884?::k703<722c9m7>5$gg96<=inm0;76g=8;29 cc=:01eji4>;:k13?6=,oo1>45afe81?>o5>3:1(kk5289mba<432c8?7>5$gg96<=inm0?76g<2;29 cc=:01eji4:;:k05?6=,oo1>45afe85?>o483:1(kk5289mba<032c9j7>5$gg96<=inm0376g=e;29 cc=:01eji46;:k1`?6=,oo1>45afe8b?>o5k3:1(kk5289mba<e32c9n7>5$gg96<=inm0h76g=5;29 cc=:01eji4k;:k03?6=,oo1?;5afe83?>o4=3:1(kk5379mba<632c?<7>5$gg973=inm0976g<f;29 cc=;?1eji4<;:k0a?6=,oo1?;5afe87?>o4l3:1(kk5379mba<232c8o7>5$gg973=inm0=76g<b;29 cc=;?1eji48;:k0e?6=,oo1?;5afe8;?>o413:1(kk5379mba<>32c847>5$gg973=inm0j76g<4;29 cc=;?1eji4m;:k67?6=,oo19?5afe83?>o203:1(kk5569mba<732c>:7>5$gg912=inm0:76g:5;29 cc==>1eji4=;:k60?6=,oo19:5afe80?>i2i3:1(kk5589mba<732e>j7>5$gg91`=inm0;76a:d;29 cc==l1eji4>;:m6g?6=,oo19h5afe81?>i2j3:1(kk55d9mba<432wi8<l50;0`>5<7s-;;m7??1:J70g=O<=80V9;56zg9<?742821=94>9;'01>=9980(<>9:09'37<53-=86?5+7581?!122;1/;;4=;%54>7=#?1097)96:39'3d<53-=i6?5+7b81?!1c2;1/;h4=;%5e>7=#09097)6>:39'<7<53-286?5+8581?!>22;1/4;4=;%:4>7=#01097)66:39'<d<53-2i6?5+8b81?!>c2;1/4h4=;%:e>7=#19097)7>:39'=7<53-386?5+9581?!?22;1/5;4=;%;4>7=#11097)76:39'=d<53-3i6?5+9b81?!?c2;1/5h4=;%;e>7=#i9097)o>:39'e7<53-k86?5+a581?!g22;1/m;4=;%c4>7=#i1097)o6:39'ed<53-ki6?5+ab81?!gc2;1/mh4=;%ce>7=#j9097)l>:39'552=<81/n?4>;%`0>4=#<==1==<4$024>4=n<h0;66g;b;29?l062900e;<50;9j55>=831b==750;9j013=831b89850;9j6d<72-ln6?74ngf94>=n:10;6)hj:3;8jcb=921b>:4?:%df>7?<fon1>65f2783>!`b2;30bkj53:9j76<72-ln6?74ngf90>=n;;0;6)hj:3;8jcb==21b?<4?:%df>7?<fon1:65f3183>!`b2;30bkj57:9j6c<72-ln6?74ngf9<>=n:l0;6)hj:3;8jcb=121b>i4?:%df>7?<fon1m65f2b83>!`b2;30bkj5b:9j6g<72-ln6?74ngf9g>=n:<0;6)hj:3;8jcb=l21b?:4?:%df>60<fon1<65f3483>!`b2:<0bkj51:9j05<72-ln6>84ngf96>=n;o0;6)hj:248jcb=;21b?h4?:%df>60<fon1865f3e83>!`b2:<0bkj55:9j7f<72-ln6>84ngf92>=n;k0;6)hj:248jcb=?21b?l4?:%df>60<fon1465f3883>!`b2:<0bkj59:9j7=<72-ln6>84ngf9e>=n;=0;6)hj:248jcb=j21b9>4?:%df>04<fon1<65f5983>!`b2<=0bkj50:9j13<72-ln6894ngf95>=n=<0;6)hj:458jcb=:21b994?:%df>01<fon1?65`5`83>!`b2<30bkj50:9l1c<72-ln68k4ngf94>=h=m0;6)hj:4g8jcb=921d9n4?:%df>0c<fon1>65`5c83>!`b2<o0bkj53:9~f17f2909o7>50z&24d<6881C89l4H561?_222?qn654>3;3;>42=900v(9:7:021?!77>3;0(:<52:&47?4<,>>1>6*85;08 20=:2.<;7<4$6:96>"01380(:o52:&4f?4<,>i1>6*8d;08 2c=:2.<j7<4$9296>"?9380(5<52:&;7?4<,1>1>6*75;08 =0=:2.3;7<4$9:96>"?1380(5o52:&;f?4<,1i1>6*7d;08 =c=:2.3j7<4$8296>">9380(4<52:&:7?4<,0>1>6*65;08 <0=:2.2;7<4$8:96>">1380(4o52:&:f?4<,0i1>6*6d;08 <c=:2.2j7<4$`296>"f9380(l<52:&b7?4<,h>1>6*n5;08 d0=:2.j;7<4$`:96>"f1380(lo52:&bf?4<,hi1>6*nd;08 dc=:2.jj7<4$c296>"e9380(<>;:538 g4=92.i?7?4$564>4653-;;;7?4i5c94?=n<k0;66g91;29?l052900e<>7:188m46>2900e9:::188m1212900e?o50;&ea?4>3glo6=54i3:94?"am3827chk:098m71=83.mi7<6;odg>7=<a;<1<7*ie;0:?k`c2:10e>=50;&ea?4>3glo6954i2094?"am3827chk:498m67=83.mi7<6;odg>3=<a::1<7*ie;0:?k`c2>10e?h50;&ea?4>3glo6554i3g94?"am3827chk:898m7b=83.mi7<6;odg>d=<a;i1<7*ie;0:?k`c2k10e?l50;&ea?4>3glo6n54i3794?"am3827chk:e98m61=83.mi7=9;odg>5=<a:?1<7*ie;15?k`c2810e9>50;&ea?513glo6?54i2d94?"am39=7chk:298m6c=83.mi7=9;odg>1=<a:n1<7*ie;15?k`c2<10e>m50;&ea?513glo6;54i2`94?"am39=7chk:698m6g=83.mi7=9;odg>==<a:31<7*ie;15?k`c2010e>650;&ea?513glo6l54i2694?"am39=7chk:c98m05=83.mi7;=;odg>5=<a<21<7*ie;74?k`c2910e8850;&ea?303glo6<54i4794?"am3?<7chk:398m02=83.mi7;8;odg>6=<g<k1<7*ie;7:?k`c2910c8h50;&ea?3b3glo6=54o4f94?"am3?n7chk:098k0e=83.mi7;j;odg>7=<g<h1<7*ie;7f?k`c2:10qo:>9;296f<729q/==o51138L12e3A>?>6T;5;4xa?>=9:0:47?;:0;9y!2303;;>6*>0782?!152;1/;>4=;%57>7=#?<097)99:39'32<53-=36?5+7881?!1f2;1/;o4=;%5`>7=#?m097)9j:39'3c<53-2;6?5+8081?!>52;1/4>4=;%:7>7=#0<097)69:39'<2<53-236?5+8881?!>f2;1/4o4=;%:`>7=#0m097)6j:39'<c<53-3;6?5+9081?!?52;1/5>4=;%;7>7=#1<097)79:39'=2<53-336?5+9881?!?f2;1/5o4=;%;`>7=#1m097)7j:39'=c<53-k;6?5+a081?!g52;1/m>4=;%c7>7=#i<097)o9:39'e2<53-k36?5+a881?!gf2;1/mo4=;%c`>7=#im097)oj:39'ec<53-h;6?5+b081?!77<3>:7)l=:09'f6<63->?;7??2:&242<63`>j6=44i5`94?=n>80;66g92;29?l7703:17d??9;29?l23=3:17d:;6;29?l4f290/jh4=9:le`?6<3`836=4+fd81=>hal3;07d<8:18'b`<512dmh7<4;h05>5<#nl0956`id;18?l54290/jh4=9:le`?2<3`996=4+fd81=>hal3?07d=>:18'b`<512dmh784;h13>5<#nl0956`id;58?l4a290/jh4=9:le`?><3`8n6=4+fd81=>hal3307d<k:18'b`<512dmh7o4;h0`>5<#nl0956`id;`8?l4e290/jh4=9:le`?e<3`8>6=4+fd81=>hal3n07d=8:18'b`<4>2dmh7>4;h16>5<#nl08:6`id;38?l27290/jh4<6:le`?4<3`9m6=4+fd802>hal3907d=j:18'b`<4>2dmh7:4;h1g>5<#nl08:6`id;78?l5d290/jh4<6:le`?0<3`9i6=4+fd802>hal3=07d=n:18'b`<4>2dmh764;h1:>5<#nl08:6`id;;8?l5?290/jh4<6:le`?g<3`9?6=4+fd802>hal3h07d;<:18'b`<2:2dmh7>4;h7;>5<#nl0>;6`id;28?l31290/jh4:7:le`?7<3`?>6=4+fd863>hal3807d;;:18'b`<2?2dmh7=4;n7b>5<#nl0>56`id;28?j3a290/jh4:e:le`?6<3f?o6=4+fd86a>hal3;07b;l:18'b`<2m2dmh7<4;n7a>5<#nl0>i6`id;18?xd3910;6?m50;2x 46f28::7E:;b:J707=]<<0=wh47:0195=<6<3;26p*;498247=#99<1=6*82;08 25=:2.<87<4$6796>"0>380(:952:&4<?4<,>31>6*8a;08 2d=:2.<o7<4$6f96>"0m380(:h52:&;4?4<,1;1>6*72;08 =5=:2.387<4$9796>"?>380(5952:&;<?4<,131>6*7a;08 =d=:2.3o7<4$9f96>"?m380(5h52:&:4?4<,0;1>6*62;08 <5=:2.287<4$8796>">>380(4952:&:<?4<,031>6*6a;08 <d=:2.2o7<4$8f96>">m380(4h52:&b4?4<,h;1>6*n2;08 d5=:2.j87<4$`796>"f>380(l952:&b<?4<,h31>6*na;08 dd=:2.jo7<4$`f96>"fm380(lh52:&a4?4<,k;1>6*>05875>"e:3;0(o=51:&702<68;1/==951:k7e?6=3`>i6=44i7394?=n>;0;66g>0983>>o6800;66g;4483>>o3<?0;66g=a;29 cc=:01eji4?;:k1<?6=,oo1>45afe82?>o5?3:1(kk5289mba<532c9:7>5$gg96<=inm0876g<3;29 cc=:01eji4;;:k06?6=,oo1>45afe86?>o493:1(kk5289mba<132c8<7>5$gg96<=inm0<76g=f;29 cc=:01eji47;:k1a?6=,oo1>45afe8:?>o5l3:1(kk5289mba<f32c9o7>5$gg96<=inm0i76g=b;29 cc=:01eji4l;:k11?6=,oo1>45afe8g?>o4?3:1(kk5379mba<732c897>5$gg973=inm0:76g;0;29 cc=;?1eji4=;:k0b?6=,oo1?;5afe80?>o4m3:1(kk5379mba<332c8h7>5$gg973=inm0>76g<c;29 cc=;?1eji49;:k0f?6=,oo1?;5afe84?>o4i3:1(kk5379mba<?32c857>5$gg973=inm0276g<8;29 cc=;?1eji4n;:k00?6=,oo1?;5afe8a?>o2;3:1(kk5539mba<732c>47>5$gg912=inm0;76g:6;29 cc==>1eji4>;:k61?6=,oo19:5afe81?>o2<3:1(kk5569mba<432e>m7>5$gg91<=inm0;76a:f;29 cc==l1eji4?;:m6`?6=,oo19h5afe82?>i2k3:1(kk55d9mba<532e>n7>5$gg91`=inm0876sm43494?4d290;w)??a;335>N3<k1C89<4Z5792~c=03;86<651582=?{#<=21==<4$025>4=#?;097)9<:39'31<53-=>6?5+7781?!102;1/;54=;%5:>7=#?h097)9m:39'3f<53-=o6?5+7d81?!1a2;1/4=4=;%:2>7=#0;097)6<:39'<1<53-2>6?5+8781?!>02;1/454=;%::>7=#0h097)6m:39'<f<53-2o6?5+8d81?!>a2;1/5=4=;%;2>7=#1;097)7<:39'=1<53-3>6?5+9781?!?02;1/554=;%;:>7=#1h097)7m:39'=f<53-3o6?5+9d81?!?a2;1/m=4=;%c2>7=#i;097)o<:39'e1<53-k>6?5+a781?!g02;1/m54=;%c:>7=#ih097)om:39'ef<53-ko6?5+ad81?!ga2;1/n=4=;%`2>7=#99>18<5+b382?!d4281/89951108 460281b8l4?::k7f?6=3`<:6=44i7094?=n9921<75f11;94?=n<=?1<75f45494?=n:h0;6)hj:3;8jcb=821b>54?:%df>7?<fon1=65f2683>!`b2;30bkj52:9j63<72-ln6?74ngf97>=n;:0;6)hj:3;8jcb=<21b??4?:%df>7?<fon1965f3083>!`b2;30bkj56:9j75<72-ln6?74ngf93>=n:o0;6)hj:3;8jcb=021b>h4?:%df>7?<fon1565f2e83>!`b2;30bkj5a:9j6f<72-ln6?74ngf9f>=n:k0;6)hj:3;8jcb=k21b>84?:%df>7?<fon1h65f3683>!`b2:<0bkj50:9j70<72-ln6>84ngf95>=n<90;6)hj:248jcb=:21b?k4?:%df>60<fon1?65f3d83>!`b2:<0bkj54:9j7a<72-ln6>84ngf91>=n;j0;6)hj:248jcb=>21b?o4?:%df>60<fon1;65f3`83>!`b2:<0bkj58:9j7<<72-ln6>84ngf9=>=n;10;6)hj:248jcb=i21b?94?:%df>60<fon1n65f5283>!`b2<80bkj50:9j1=<72-ln6894ngf94>=n=?0;6)hj:458jcb=921b984?:%df>01<fon1>65f5583>!`b2<=0bkj53:9l1d<72-ln6874ngf94>=h=o0;6)hj:4g8jcb=821d9i4?:%df>0c<fon1=65`5b83>!`b2<o0bkj52:9l1g<72-ln68k4ngf97>=zj=8>6=4=c;294~"68h0:<<5G45`8L1253S>>6;uj:9827?7?28>1=44r$56;>4653-;;:7?4$6096>"0;380(::52:&41?4<,><1>6*87;08 2>=:2.<57<4$6c96>"0j380(:m52:&4`?4<,>o1>6*8f;08 =6=:2.3=7<4$9096>"?;380(5:52:&;1?4<,1<1>6*77;08 =>=:2.357<4$9c96>"?j380(5m52:&;`?4<,1o1>6*7f;08 <6=:2.2=7<4$8096>">;380(4:52:&:1?4<,0<1>6*67;08 <>=:2.257<4$8c96>">j380(4m52:&:`?4<,0o1>6*6f;08 d6=:2.j=7<4$`096>"f;380(l:52:&b1?4<,h<1>6*n7;08 d>=:2.j57<4$`c96>"fj380(lm52:&b`?4<,ho1>6*nf;08 g6=:2.i=7<4$027>17<,k81=6*m3;38 12028:97)??7;38m1g=831b8o4?::k55?6=3`<96=44i02;>5<<a8:26=44i566>5<<a=>=6=44i3c94?"am3827chk:198m7>=83.mi7<6;odg>4=<a;=1<7*ie;0:?k`c2;10e?850;&ea?4>3glo6>54i2194?"am3827chk:598m64=83.mi7<6;odg>0=<a:;1<7*ie;0:?k`c2?10e>>50;&ea?4>3glo6:54i3d94?"am3827chk:998m7c=83.mi7<6;odg><=<a;n1<7*ie;0:?k`c2h10e?m50;&ea?4>3glo6o54i3`94?"am3827chk:b98m73=83.mi7<6;odg>a=<a:=1<7*ie;15?k`c2910e>;50;&ea?513glo6<54i5294?"am39=7chk:398m6`=83.mi7=9;odg>6=<a:o1<7*ie;15?k`c2=10e>j50;&ea?513glo6854i2a94?"am39=7chk:798m6d=83.mi7=9;odg>2=<a:k1<7*ie;15?k`c2110e>750;&ea?513glo6454i2:94?"am39=7chk:`98m62=83.mi7=9;odg>g=<a<91<7*ie;71?k`c2910e8650;&ea?303glo6=54i4494?"am3?<7chk:098m03=83.mi7;8;odg>7=<a<>1<7*ie;74?k`c2:10c8o50;&ea?3>3glo6=54o4d94?"am3?n7chk:198k0b=83.mi7;j;odg>4=<g<i1<7*ie;7f?k`c2;10c8l50;&ea?3b3glo6>54}c610?6=:j0;6=u+11c9557<@=>i7E:;2:X71?0|m321=>4>8;37>4?=u->?47??2:&243<63-=96?5+7281?!132;1/;84=;%55>7=#?>097)97:39'3<<53-=j6?5+7c81?!1d2;1/;i4=;%5f>7=#?o097)6?:39'<4<53-296?5+8281?!>32;1/484=;%:5>7=#0>097)67:39'<<<53-2j6?5+8c81?!>d2;1/4i4=;%:f>7=#0o097)7?:39'=4<53-396?5+9281?!?32;1/584=;%;5>7=#1>097)77:39'=<<53-3j6?5+9c81?!?d2;1/5i4=;%;f>7=#1o097)o?:39'e4<53-k96?5+a281?!g32;1/m84=;%c5>7=#i>097)o7:39'e<<53-kj6?5+ac81?!gd2;1/mi4=;%cf>7=#io097)l?:39'f4<53-;;87:>;%`1>4=#j:0:7):;7;336>"68>0:7d:n:188m1d=831b:<4?::k56?6=3`;;47>5;h33=?6=3`>?97>5;h672?6=3`8j6=4+fd81=>hal3:07d<7:18'b`<512dmh7?4;h04>5<#nl0956`id;08?l41290/jh4=9:le`?5<3`986=4+fd81=>hal3>07d==:18'b`<512dmh7;4;h12>5<#nl0956`id;48?l57290/jh4=9:le`?1<3`8m6=4+fd81=>hal3207d<j:18'b`<512dmh774;h0g>5<#nl0956`id;c8?l4d290/jh4=9:le`?d<3`8i6=4+fd81=>hal3i07d<::18'b`<512dmh7j4;h14>5<#nl08:6`id;28?l52290/jh4<6:le`?7<3`>;6=4+fd802>hal3807d=i:18'b`<4>2dmh7=4;h1f>5<#nl08:6`id;68?l5c290/jh4<6:le`?3<3`9h6=4+fd802>hal3<07d=m:18'b`<4>2dmh794;h1b>5<#nl08:6`id;:8?l5>290/jh4<6:le`??<3`936=4+fd802>hal3k07d=;:18'b`<4>2dmh7l4;h70>5<#nl0>>6`id;28?l3?290/jh4:7:le`?6<3`?=6=4+fd863>hal3;07d;::18'b`<2?2dmh7<4;h77>5<#nl0>;6`id;18?j3f290/jh4:9:le`?6<3f?m6=4+fd86a>hal3:07b;k:18'b`<2m2dmh7?4;n7`>5<#nl0>i6`id;08?j3e290/jh4:e:le`?5<3th?>>4?:3a94?6|,8:j6<>>;I67f>N3<;1Q8849{d8;>45=910:87?6:|&70=<68;1/==851:&46?4<,>91>6*84;08 23=:2.<:7<4$6596>"00380(:752:&4e?4<,>h1>6*8c;08 2b=:2.<i7<4$6d96>"?8380(5?52:&;6?4<,191>6*74;08 =3=:2.3:7<4$9596>"?0380(5752:&;e?4<,1h1>6*7c;08 =b=:2.3i7<4$9d96>">8380(4?52:&:6?4<,091>6*64;08 <3=:2.2:7<4$8596>">0380(4752:&:e?4<,0h1>6*6c;08 <b=:2.2i7<4$8d96>"f8380(l?52:&b6?4<,h91>6*n4;08 d3=:2.j:7<4$`596>"f0380(l752:&be?4<,hh1>6*nc;08 db=:2.ji7<4$`d96>"e8380(o?52:&241<392.i>7?4$c195>"3<>0:<?5+11595>o3i3:17d:m:188m37=831b:?4?::k24=<722c:<44?::k700<722c?8;4?::k1e?6=,oo1>45afe83?>o503:1(kk5289mba<632c9;7>5$gg96<=inm0976g=6;29 cc=:01eji4<;:k07?6=,oo1>45afe87?>o4:3:1(kk5289mba<232c8=7>5$gg96<=inm0=76g<0;29 cc=:01eji48;:k1b?6=,oo1>45afe8;?>o5m3:1(kk5289mba<>32c9h7>5$gg96<=inm0j76g=c;29 cc=:01eji4m;:k1f?6=,oo1>45afe8`?>o5=3:1(kk5289mba<c32c8;7>5$gg973=inm0;76g<5;29 cc=;?1eji4>;:k74?6=,oo1?;5afe81?>o4n3:1(kk5379mba<432c8i7>5$gg973=inm0?76g<d;29 cc=;?1eji4:;:k0g?6=,oo1?;5afe85?>o4j3:1(kk5379mba<032c8m7>5$gg973=inm0376g<9;29 cc=;?1eji46;:k0<?6=,oo1?;5afe8b?>o4<3:1(kk5379mba<e32c>?7>5$gg917=inm0;76g:8;29 cc==>1eji4?;:k62?6=,oo19:5afe82?>o2=3:1(kk5569mba<532c>87>5$gg912=inm0876a:a;29 cc==01eji4?;:m6b?6=,oo19h5afe83?>i2l3:1(kk55d9mba<632e>o7>5$gg91`=inm0976a:b;29 cc==l1eji4<;:a074=838h6=4?{%33e?7792B?8o5G4508^13=>ro147?<:0:951<613w/89651108 461281/;?4=;%50>7=#?=097)9::39'33<53-=<6?5+7981?!1>2;1/;l4=;%5a>7=#?j097)9k:39'3`<53-=m6?5+8181?!>62;1/4?4=;%:0>7=#0=097)6::39'<3<53-2<6?5+8981?!>>2;1/4l4=;%:a>7=#0j097)6k:39'<`<53-2m6?5+9181?!?62;1/5?4=;%;0>7=#1=097)7::39'=3<53-3<6?5+9981?!?>2;1/5l4=;%;a>7=#1j097)7k:39'=`<53-3m6?5+a181?!g62;1/m?4=;%c0>7=#i=097)o::39'e3<53-k<6?5+a981?!g>2;1/ml4=;%ca>7=#ij097)ok:39'e`<53-km6?5+b181?!d62;1/==:5409'f7<63-h86<5+4559554<,8:<6<5f4`83>>o3j3:17d8>:188m34=831b==650;9j55?=831b89;50;9j010=831b>l4?:%df>7?<fon1<65f2983>!`b2;30bkj51:9j62<72-ln6?74ngf96>=n:?0;6)hj:3;8jcb=;21b?>4?:%df>7?<fon1865f3383>!`b2;30bkj55:9j74<72-ln6?74ngf92>=n;90;6)hj:3;8jcb=?21b>k4?:%df>7?<fon1465f2d83>!`b2;30bkj59:9j6a<72-ln6?74ngf9e>=n:j0;6)hj:3;8jcb=j21b>o4?:%df>7?<fon1o65f2483>!`b2;30bkj5d:9j72<72-ln6>84ngf94>=n;<0;6)hj:248jcb=921b8=4?:%df>60<fon1>65f3g83>!`b2:<0bkj53:9j7`<72-ln6>84ngf90>=n;m0;6)hj:248jcb==21b?n4?:%df>60<fon1:65f3c83>!`b2:<0bkj57:9j7d<72-ln6>84ngf9<>=n;00;6)hj:248jcb=121b?54?:%df>60<fon1m65f3583>!`b2:<0bkj5b:9j16<72-ln68<4ngf94>=n=10;6)hj:458jcb=821b9;4?:%df>01<fon1=65f5483>!`b2<=0bkj52:9j11<72-ln6894ngf97>=h=h0;6)hj:4;8jcb=821d9k4?:%df>0c<fon1<65`5e83>!`b2<o0bkj51:9l1f<72-ln68k4ngf96>=h=k0;6)hj:4g8jcb=;21vn9<>:181g?6=8r.:<l4>009K01d<@=>97W:::7yf>=<6;3;36<:5188~ 12?28:97)??6;38 24=:2.<?7<4$6696>"0=380(:852:&43?4<,>21>6*89;08 2g=:2.<n7<4$6a96>"0l380(:k52:&4b?4<,1:1>6*71;08 =4=:2.3?7<4$9696>"?=380(5852:&;3?4<,121>6*79;08 =g=:2.3n7<4$9a96>"?l380(5k52:&;b?4<,0:1>6*61;08 <4=:2.2?7<4$8696>">=380(4852:&:3?4<,021>6*69;08 <g=:2.2n7<4$8a96>">l380(4k52:&:b?4<,h:1>6*n1;08 d4=:2.j?7<4$`696>"f=380(l852:&b3?4<,h21>6*n9;08 dg=:2.jn7<4$`a96>"fl380(lk52:&bb?4<,k:1>6*m1;08 4632=;0(o<51:&a7?7<,=><6<>=;%333?7<a=k1<75f4c83>>o193:17d8=:188m46?2900e<>6:188m1222900e9:9:188m7g=83.mi7<6;odg>5=<a;21<7*ie;0:?k`c2810e?950;&ea?4>3glo6?54i3494?"am3827chk:298m65=83.mi7<6;odg>1=<a:81<7*ie;0:?k`c2<10e>?50;&ea?4>3glo6;54i2294?"am3827chk:698m7`=83.mi7<6;odg>==<a;o1<7*ie;0:?k`c2010e?j50;&ea?4>3glo6l54i3a94?"am3827chk:c98m7d=83.mi7<6;odg>f=<a;?1<7*ie;0:?k`c2m10e>950;&ea?513glo6=54i2794?"am39=7chk:098m16=83.mi7=9;odg>7=<a:l1<7*ie;15?k`c2:10e>k50;&ea?513glo6954i2f94?"am39=7chk:498m6e=83.mi7=9;odg>3=<a:h1<7*ie;15?k`c2>10e>o50;&ea?513glo6554i2;94?"am39=7chk:898m6>=83.mi7=9;odg>d=<a:>1<7*ie;15?k`c2k10e8=50;&ea?353glo6=54i4:94?"am3?<7chk:198m00=83.mi7;8;odg>4=<a<?1<7*ie;74?k`c2;10e8:50;&ea?303glo6>54o4c94?"am3?27chk:198k0`=83.mi7;j;odg>5=<g<n1<7*ie;7f?k`c2810c8m50;&ea?3b3glo6?54o4`94?"am3?n7chk:298yg2583:1>n4?:1y'55g=99;0D9:m;I676>\3=3<pi7651282<?732831q):;8;336>"68?0:7)9=:39'36<53-=?6?5+7481?!112;1/;:4=;%5;>7=#?0097)9n:39'3g<53-=h6?5+7e81?!1b2;1/;k4=;%:3>7=#08097)6=:39'<6<53-2?6?5+8481?!>12;1/4:4=;%:;>7=#00097)6n:39'<g<53-2h6?5+8e81?!>b2;1/4k4=;%;3>7=#18097)7=:39'=6<53-3?6?5+9481?!?12;1/5:4=;%;;>7=#10097)7n:39'=g<53-3h6?5+9e81?!?b2;1/5k4=;%c3>7=#i8097)o=:39'e6<53-k?6?5+a481?!g12;1/m:4=;%c;>7=#i0097)on:39'eg<53-kh6?5+ae81?!gb2;1/mk4=;%`3>7=#j8097)??4;62?!d5281/n>4>;%673?77:2.:<:4>;h6b>5<<a=h1<75f6083>>o1:3:17d??8;29?l7713:17d:;5;29?l23>3:17d<n:18'b`<512dmh7>4;h0;>5<#nl0956`id;38?l40290/jh4=9:le`?4<3`8=6=4+fd81=>hal3907d=<:18'b`<512dmh7:4;h11>5<#nl0956`id;78?l56290/jh4=9:le`?0<3`9;6=4+fd81=>hal3=07d<i:18'b`<512dmh764;h0f>5<#nl0956`id;;8?l4c290/jh4=9:le`?g<3`8h6=4+fd81=>hal3h07d<m:18'b`<512dmh7m4;h06>5<#nl0956`id;f8?l50290/jh4<6:le`?6<3`9>6=4+fd802>hal3;07d:?:18'b`<4>2dmh7<4;h1e>5<#nl08:6`id;18?l5b290/jh4<6:le`?2<3`9o6=4+fd802>hal3?07d=l:18'b`<4>2dmh784;h1a>5<#nl08:6`id;58?l5f290/jh4<6:le`?><3`926=4+fd802>hal3307d=7:18'b`<4>2dmh7o4;h17>5<#nl08:6`id;`8?l34290/jh4:2:le`?6<3`?36=4+fd863>hal3:07d;9:18'b`<2?2dmh7?4;h76>5<#nl0>;6`id;08?l33290/jh4:7:le`?5<3f?j6=4+fd86=>hal3:07b;i:18'b`<2m2dmh7>4;n7g>5<#nl0>i6`id;38?j3d290/jh4:e:le`?4<3f?i6=4+fd86a>hal3907pl;1g83>7e=83:p(<>n:022?M23j2B?8?5U4485`<?2891=54>4;3:>x"3<10:<?5+11495>"0:380(:=52:&40?4<,>?1>6*86;08 21=:2.<47<4$6;96>"0i380(:l52:&4g?4<,>n1>6*8e;08 2`=:2.3<7<4$9396>"?:380(5=52:&;0?4<,1?1>6*76;08 =1=:2.347<4$9;96>"?i380(5l52:&;g?4<,1n1>6*7e;08 =`=:2.2<7<4$8396>">:380(4=52:&:0?4<,0?1>6*66;08 <1=:2.247<4$8;96>">i380(4l52:&:g?4<,0n1>6*6e;08 <`=:2.j<7<4$`396>"f:380(l=52:&b0?4<,h?1>6*n6;08 d1=:2.j47<4$`;96>"fi380(ll52:&bg?4<,hn1>6*ne;08 d`=:2.i<7<4$c396>"68=0?=6*m2;38 g5=92.?8:4>039'551=92c?m7>5;h6a>5<<a?;1<75f6383>>o6810;66g>0883>>o3<<0;66g;4783>>o5i3:1(kk5289mba<732c947>5$gg96<=inm0:76g=7;29 cc=:01eji4=;:k12?6=,oo1>45afe80?>o4;3:1(kk5289mba<332c8>7>5$gg96<=inm0>76g<1;29 cc=:01eji49;:k04?6=,oo1>45afe84?>o5n3:1(kk5289mba<?32c9i7>5$gg96<=inm0276g=d;29 cc=:01eji4n;:k1g?6=,oo1>45afe8a?>o5j3:1(kk5289mba<d32c997>5$gg96<=inm0o76g<7;29 cc=;?1eji4?;:k01?6=,oo1?;5afe82?>o383:1(kk5379mba<532c8j7>5$gg973=inm0876g<e;29 cc=;?1eji4;;:k0`?6=,oo1?;5afe86?>o4k3:1(kk5379mba<132c8n7>5$gg973=inm0<76g<a;29 cc=;?1eji47;:k0=?6=,oo1?;5afe8:?>o403:1(kk5379mba<f32c887>5$gg973=inm0i76g:3;29 cc==;1eji4?;:k6<?6=,oo19:5afe83?>o2>3:1(kk5569mba<632c>97>5$gg912=inm0976g:4;29 cc==>1eji4<;:m6e?6=,oo1945afe83?>i2n3:1(kk55d9mba<732e>h7>5$gg91`=inm0:76a:c;29 cc==l1eji4=;:m6f?6=,oo19h5afe80?>{e<8o1<7<l:183!77i3;;=6F;4c9K014<R=?1:vk58;30>4>=9=0:57s+45:9554<,8:=6<5+7381?!142;1/;94=;%56>7=#??097)98:39'3=<53-=26?5+7`81?!1e2;1/;n4=;%5g>7=#?l097)9i:39'<5<53-2:6?5+8381?!>42;1/494=;%:6>7=#0?097)68:39'<=<53-226?5+8`81?!>e2;1/4n4=;%:g>7=#0l097)6i:39'=5<53-3:6?5+9381?!?42;1/594=;%;6>7=#1?097)78:39'==<53-326?5+9`81?!?e2;1/5n4=;%;g>7=#1l097)7i:39'e5<53-k:6?5+a381?!g42;1/m94=;%c6>7=#i?097)o8:39'e=<53-k26?5+a`81?!ge2;1/mn4=;%cg>7=#il097)oi:39'f5<53-h:6?5+116904=#j;0:7)l<:09'011=9980(<>8:09j0d<722c?n7>5;h42>5<<a?81<75f11:94?=n9931<75f45794?=n<=<1<75f2`83>!`b2;30bkj50:9j6=<72-ln6?74ngf95>=n:>0;6)hj:3;8jcb=:21b>;4?:%df>7?<fon1?65f3283>!`b2;30bkj54:9j77<72-ln6?74ngf91>=n;80;6)hj:3;8jcb=>21b?=4?:%df>7?<fon1;65f2g83>!`b2;30bkj58:9j6`<72-ln6?74ngf9=>=n:m0;6)hj:3;8jcb=i21b>n4?:%df>7?<fon1n65f2c83>!`b2;30bkj5c:9j60<72-ln6?74ngf9`>=n;>0;6)hj:248jcb=821b?84?:%df>60<fon1=65f4183>!`b2:<0bkj52:9j7c<72-ln6>84ngf97>=n;l0;6)hj:248jcb=<21b?i4?:%df>60<fon1965f3b83>!`b2:<0bkj56:9j7g<72-ln6>84ngf93>=n;h0;6)hj:248jcb=021b?44?:%df>60<fon1565f3983>!`b2:<0bkj5a:9j71<72-ln6>84ngf9f>=n=:0;6)hj:408jcb=821b954?:%df>01<fon1<65f5783>!`b2<=0bkj51:9j10<72-ln6894ngf96>=n==0;6)hj:458jcb=;21d9l4?:%df>0?<fon1<65`5g83>!`b2<o0bkj50:9l1a<72-ln68k4ngf95>=h=j0;6)hj:4g8jcb=:21d9o4?:%df>0c<fon1?65rb534>5<5k3:1<v*>0`8244=O<=h0D9:=;[66>3}b210:?7?7:0695<<z,=>36<>=;%332?7<,>81>6*83;08 22=:2.<97<4$6496>"0?380(:652:&4=?4<,>k1>6*8b;08 2e=:2.<h7<4$6g96>"0n380(5>52:&;5?4<,181>6*73;08 =2=:2.397<4$9496>"??380(5652:&;=?4<,1k1>6*7b;08 =e=:2.3h7<4$9g96>"?n380(4>52:&:5?4<,081>6*63;08 <2=:2.297<4$8496>">?380(4652:&:=?4<,0k1>6*6b;08 <e=:2.2h7<4$8g96>">n380(l>52:&b5?4<,h81>6*n3;08 d2=:2.j97<4$`496>"f?380(l652:&b=?4<,hk1>6*nb;08 de=:2.jh7<4$`g96>"fn380(o>52:&a5?4<,8:?69?4$c095>"e;3;0(9:8:021?!77?3;0e9o50;9j0g<722c==7>5;h41>5<<a8:36=44i02:>5<<a=>>6=44i565>5<<a;k1<7*ie;0:?k`c2910e?650;&ea?4>3glo6<54i3594?"am3827chk:398m70=83.mi7<6;odg>6=<a:91<7*ie;0:?k`c2=10e><50;&ea?4>3glo6854i2394?"am3827chk:798m66=83.mi7<6;odg>2=<a;l1<7*ie;0:?k`c2110e?k50;&ea?4>3glo6454i3f94?"am3827chk:`98m7e=83.mi7<6;odg>g=<a;h1<7*ie;0:?k`c2j10e?;50;&ea?4>3glo6i54i2594?"am39=7chk:198m63=83.mi7=9;odg>4=<a=:1<7*ie;15?k`c2;10e>h50;&ea?513glo6>54i2g94?"am39=7chk:598m6b=83.mi7=9;odg>0=<a:i1<7*ie;15?k`c2?10e>l50;&ea?513glo6:54i2c94?"am39=7chk:998m6?=83.mi7=9;odg><=<a:21<7*ie;15?k`c2h10e>:50;&ea?513glo6o54i4194?"am3?97chk:198m0>=83.mi7;8;odg>5=<a<<1<7*ie;74?k`c2810e8;50;&ea?303glo6?54i4694?"am3?<7chk:298k0g=83.mi7;6;odg>5=<g<l1<7*ie;7f?k`c2910c8j50;&ea?3b3glo6<54o4a94?"am3?n7chk:398k0d=83.mi7;j;odg>6=<uk;>i7>56;294~"68h0ij6F;4c9K014<,>;1>95f6e83>>o1m3:17d8i:188m26=831dn84?::me=?6=3th:><4?:583>5}#99k1nl5G45`8L1253-=:6<l4i7f94?=n>l0;66am5;29?j`>2900qo?>f;290?6=8r.:<l4md:J70g=O<=80(:?51b9j2a<722c=i7>5;h4e>5<<gk?1<75rb047>5<3290;w)??a;`g?M23j2B?8?5+7082g>o1l3:17d8j:188m3`=831dn84?::a533=8391<7>t$02b>gd<@=>i7E:;2:&45?7e3`<o6=44i7g94?=hj<0;66sm17494?2=83:p(<>n:cf8L12e3A>?>6*81;3`?l0c2900e;k50;9j2c<722ei97>5;|`25f<72?0;6=u+11c9fc=O<=h0D9:=;%52>4b<a?n1<75f6d83>>o1n3:17d9?:188kg3=831dj44?::p162=83?pR8=;;<0:<?0c34>9478j;<1e<?17349m;78k;|q677<72h>pR989;_660>X2;m1U9>l4^570?[34?2T?o85Q52a8Z1e13W>>o6P;5c9]00g<V=<?7S:93:\727=Y<?;0R98?;_66b>X3=l1U88j4^57:?[2202T>8>5Q5508Z0263W??n6P:4`9]11?<V<>37S;;7:\603=Y==?0R8:;;_774>X2;o1U9?74^40;?[35?2T>>;5Q5378Z0563W?8<6P:2g9]17c<V<8o7S;=c:\66g=Y=;k0R8<;;_717>;3<j0=n63;39864>;3:h0><63;34864>;3;=0><63;32864>;3;;0><63;41864>;3;o0><63=b1865>;5il0>=63=ab865>;5ih0>=63=c3865>;5k90>=63=bd865>;5jj0>=63=b`865>;5j10>=63=b7865>;5j=0>=63=b3865>;5i10>=63<108246=::1;19<52292914=::>l19<5226g914=::>n19<5226a914=::>h19<5226c914=::?819<52273914=::?:19<5224d914=::<o19<5224f914=::<i19<5224`914=:;<h19<5234c914=:;<319<5234:914=:;<=19<52344914=:;<?19<52352914=:;:l19<5232g914=:;:n19<5232a914=:;:h19<5232c914=:;1>19<52390914=:;0<19<52386914=:;0819<52382914=:;1o19<5239a914=:;1k19<5239:914=:;1<19<52392914=:<8n1==74=53g>12234>:h7;<;<62g?77127?=n4;449>04e==:168<l511;8917e2=>>70:>b;70?826i3;;563;1`8700=:<8k19>5240;955?<5=;269::;<62=?3434>:47??9:?75=<3<<168<65529>070=993019<9:566?825>3?870:=5;33=>;3:<0?8852437916=:<;>1==74=507>12234>987;<;<617?77127?>>4;449>075==:168?<511;891452=>>70:=2;70?82593;;563;208700=:<;;19>52432955?<5=8;69::;<614?3434>:j7??9:?75c<3<<168<h5529>04c=993019?j:566?826m3?870:>7;33=>;39>0?8852405916=z{<9=6=48{_702>;3:00?o63;368eb>;3;?0mj63;398eb>;3:h0mj63;348eb>{t:0=1<7<t^5`b?84>?3;;<6s|55f94?0|V<>o70=80;4g?85a=3<o70=i6;4f?85093<o70=82;4g?xu2:;0;6;kt^401?84><3>=70<67;65?825k3>=70:=b;65?825i3>=70:<4;65?824;3>=70:<2;65?87b03>=70?j7;65?87b>3>=70?i0;65?87bn3>=70?je;65?87bl3>=70?jc;65?87bj3>=70?ja;65?87b13>=70?j5;65?87b<3>=70<<f;65?844m3>=70<<d;65?843?3>=70<;6;65?843=3>=70<;4;65?843;3>=70<;2;65?84393>=70<;0;65?844k3>=70<<b;65?845=3>=70<=4;65?845;3>=70<=d;65?845k3>=70<=b;65?845i3>=70<=9;65?84503>=70<=7;65?845>3>=70<=2;65?84593>=70?8d;65?870k3>=70?8b;65?870i3>=70?89;65?87?=3>=70?74;65?87?;3>=70?72;65?87?93>=70?70;65?870n3>=70?8e;65?87003>=70?87;65?84b03>=70<j7;65?84b13>=70<j6;65?84b=3>=70<i1;65?84a83>=70<jf;65?84bm3>=70<jd;65?84bk3>=70<jb;65?84bi3>=70<j4;65?84b;3>=70=?7;65?857>3>=70=?5;65?857<3>=70=?3;65?857n3>=70=?e;65?857l3>=70=?c;65?857j3>=70=?a;65?85713>=70=?8;65?857:3>=70=?1;65?827>3>=70:>d;6b?826k3>j70:>b;6b?826i3>j70:>9;6b?82603>j70:=6;6b?825=3>j70:=4;6b?825;3>j70:=2;6b?82593>j70:=0;6b?826n3>j70:>e;6b?826?3>j7p}<6e83>7}Y<j:01>8k:023?xu2;l0;6:lt^41f?851l3>=70=9c;65?82513>=70:<7;65?824i3>=70:<6;65?82403>=70:<9;65?824=3>=70:;0;65?824n3>=70?;8;65?873?3>=70?;6;65?873=3>=70?;4;65?87283>=70?;f;65?873m3>=70?;d;65?873k3>=70?;b;65?873i3>=70?;9;65?87e=3>=70?m4;65?87e;3>=70?m2;65?87e93>=70?md;65?87ek3>=70?mb;65?87ei3>=70?m9;65?87e03>=70?m7;65?87e>3>=70?6b;65?87>i3>=70?69;65?87>03>=70?67;65?87f;3>=70?n2;65?87f93>=70?n0;65?87>n3>=70?6e;65?87>l3>=70?6c;65?87>>3>=70?65;65?847j3>=70<?a;65?84713>=70<>3;65?846:3>=70<>1;65?84683>=70<?f;65?847m3>=70<?d;65?847k3>=70<?8;65?847?3>=70==d;65?855n3>=70=ld;65?85dm3>=70=k2;65?85c;3>=70=k6;65?85c<3>=70=k5;65?85c13>=70=k7;65?85c03>=70=k1;65?85dn3>=70=k0;65?85e>3>=70=m5;65?85e?3>=70=mf;65?85em3>=70=md;65?85ek3>=70=ma;65?85e13>=70=mb;65?85e03>=70=m4;65?85e;3>=70=jb;65?85bi3>=70=j9;65?85a;3>=70=i2;65?85a93>=70=i0;65?85bn3>=70=je;65?85bl3>=70=jc;65?85b03>=70=j7;65?826l3>i70:>c;6a?826j3>i70:>a;6a?82613>i70:>8;6a?825>3>i70:=5;6a?825<3>i70:=3;6a?825:3>i70:=1;6a?82583>i70:>f;6a?826m3>i70:>7;6a?xu4:o0;6?uQ4g58964a28:;7p};b983>7}Y<hl019>;:g;8yv2e>3:1>vP;ad9>055=n01v9l::181[2fl27?<?4i9:p0g2=838pR9ol;<635?`>3ty?n>4?:3y]0dd<5=:;6k74}r6a6?6=:rT?ml523gd9b<=z{=h:6=4={_6b=>;4nl0m56s|4c294?4|V=k370=id;d:?xu3i90;6>uQ4928917c2<>019?l:468yv2>m3:1?vP;7g9>04d===168<o5559~w1?d2908wS:8d:?75<<2<27?=54:4:p0<d=839pR99l;<612?3334>997;;;|q7=d<72:qU8:l4=507>02<5=8868:4}r6:=?6=;rT?;l52430911=:<;;1995rs5;;>5<4sW><563;21860>;39o0>86s|48594?5|V==370:>e;77?826?3??7p};9783>6}Y<>=019?k:478917d2<?0q~:65;297~X3??168<l5549>04g==<1v97;:180[20=27?=44:5:?75=<2=2wx84=50;1xZ11334>9:7;:;<611?323ty?5<4?:2y]024<5=8?68;4=500>03<uz>2<7>53z\734=:<;819852433910=z{=2m6=4<{_644>;3:90>963;1g861>{t<1o1<7=t^54e?826m3?>70:>7;76?xu30m0;6>uQ47g8917c2<<019?l:448yv2?k3:1?vP;6e9>04d==?168<o5579~w1>e2908wS:9c:?75<<2>27?=54:6:p0=g=839pR98m;<612?3134>997;9;|q7<<<72:qU8;o4=507>00<5=886884}r6;<?6=;rT?:452430913=:<;;19;5rs5c4>5<4sW>3:63;21862>;39o0>:6s|4`494?5|V=2>70:>e;75?826?3?=7p};a483>6}Y<1>019?k:4:8917d2<20q~:n4;297~X30:168<l5599>04g==11v9o<:180[2?:27?=44:8:?75=<202wx8l<50;1xZ1>634>9:7;7;<611?3?3ty?m<4?:2y]02c<5=8?6864=500>0><uz>2h7>53z\736=:<;81955243391==z{=396=4<{_65<>;3:90>463;1g86<>{t<1=1<7=t^544?826m3?370:>7;7;?xud<3:1mv3;4e8ef>;5k=0?563=a987=>;4980?563=7`87=>;5=k0?563<5487=>;4;h0?563<9987=>;4090?56s|28794?5|5;3?68>4=3;4>06<5;3=6k74}r605?6=:8q6>4:5fg9>6<1=no168>:5112897c?2=i01?k8:5a897c>2=i01?k9:5a897c22=i01?h>:5a897`72=i01?ki:5a897cb2=i01?kk:5a897cd2=i01?km:5a897cf2=i01?k;:5a897c42ol01>>8:5a896612=i01>>::5a896632=i01>><:5a8966a2=i01>>j:5a8966c2=i01>>l:5a8966e2=i01>>n:5a8966>2=i01>>7:5a896652=i01>>>:5a8yv4><3:19v3=958245=::021:h5243:92a=:;o21:k523g592`=z{:<n6=4<{<15`?37349=o7;?;<15b?`>3ty??;4?:4y>73b=no16?;m5fg9>061==9168>851128964a2ol0q~=9c;293~;4>j0:<=5232192`=:;>:1:h523g792`=:;o<1:k5236392`=:;>81:h5rs514>5<5s4>957;?;<603?7782wx8?750;6x914>28:;70=<1;4f?854;3<o70=9f;4g?xu3:k0;6>u243a915=:<;h1==>4=50b>11<uz>9o7>52z?76f<689168?k56d9~w15>2908w0:<a;73?82403><70:<9;334>{t<:k1<7<t=51b>46734>8o78j;|q770<72;q68>85519>063=99:0q~:=a;297~;3:k0><63;2`8245=:<;o1:i5rs51;>5<4s4>847??0:?77<<2827??n49d:p07b=83>p19=;:gd891542ol019==:gd8914b2o30q~:<0;2972}:<:91==>4=0g;>1e<58o<69m4=0g5>1e<58l;69m4=0ge>1e<58on69m4=0gg>1e<58oh69m4=0ga>1e<58oj69m4=0g:>1e<58o>69m4=0g7>1e<5;9m69m4=31f>1e<5;9o69m4=364>1e<5;>=69m4=366>1e<5;>?69m4=360>1e<5;>969m4=362>1e<5;>;69m4=31`>1e<5;9i69m4=306>1e<5;8?69m4=300>1e<5;8o69m4=30`>1e<5;8i69m4=30b>1e<5;8269m4=30;>1e<5;8<69m4=305>1e<5;8969m4=302>1e<58=o69m4=05`>1e<58=i69m4=05b>1e<58=269m4=0:6>1e<582?69m4=0:0>1e<582969m4=0:2>1e<582;69m4=05e>1e<58=n69m4=05;>1e<58=<69m4}r61b?6=9=q68><51128914?2?l01>h7:7g896`02>:019?k:02;?826k3;;463;1c824==:<8k1==64=53:>46?34>:47??8:?763<681168?;511:8914328:370:=3;33<>;3:;0:<552433955><5=8;6<>7;<62b?77027?=h4>099>041=9920q~:<b;297~;3<90mj63;3g8eb>;3;j0m56s|42g94?4>s4>?<7??0:?06a<3k278oi4if:?0g`<3k278h?4;c:?0`6<3k278h;4;c:?0`1<3k278h84;c:?0`<<3k278h:4;c:?0`=<3k278h<4;c:?0gc<3k278h=4;c:?0f3<3k278n84;c:?0f2<3k278nk4;c:?0f`<3k278ni4;c:?0ff<3k278nl4;c:?0f<<3k278no4;c:?0f=<3k278n94if:?0f6<3k278io4;c:?0ad<3k278i44;c:?0b6<3k278j?4;c:?0b4<3k278j=4;c:?0ac<3k278ih4;c:?0aa<3k278in4;c:?0a=<3k278i:4;c:p06b=839<w0:<f;334>;6<10?o63>4687g>;6<?0?o63>4487g>;6<=0?o63>5187g>;6<o0?o63>4d87g>;6<m0?o63>4b87g>;6<k0?o63>4`87g>;6<00?o63>b487g>;6j=0?o63>b287g>;6j;0?o63>b087g>;6jm0?o63>bb87g>;6jk0?o63>b`87g>;6j00?o63>b987g>;6j>0?o63>b787g>;61k0?o63>9`87g>;6100?o63>9987g>;61>0?o63>a287g>;6i;0?o63>a087g>;6i90?o63>9g87g>;61l0?o63>9e87g>;61j0?o63>9787g>;61<0?o63=0c87g>;58h0?o63=0887g>;59:0?o63=1387g>;5980?o63=1187g>;58o0?o63=0d87g>;58m0?o63=0b87g>;5810?o63=0687g>{t9h21<7;t=06;>06<58h>6<>?;<366?0b34;>878k;<362?173ty:?o4?:5y>51>=99:01>86:7g8962b2?o01><>:7g8yv7293:1>v3>46864>;6=;0m56s|12c94?2|58><6<>?;<15<?0c349?h78k;<114?0b3ty:9>4?:3y>510==916=8:5f89~w45>290?w0?;6;334>;4>10=j63<4e85b>;49o0=i6s|14794?0|58>>68>4=075>c?<58?36;k4=07b>3b<58?h6;h4=07f>26<uz;847>54z?200<68916?;956e9>71e=>m16?<k56d9~w4302909w0?;4;73?87203l27p}>3683>1}:9=>1==>4=244>3`<5:>h6;h4=20b>3c<uz;>57>52z?215<2827:9l4i9:p515=83>p1<;?:023?851>3<o70=;b;4g?85513<n7p}>5c83>7}:9=l19=5214a9b<=z{8>96=4;{<37b?778278:;49f:?00g<1n278>549e:p50b=838p1<:j:428943a2o30q~?;1;290~;6<l0:<=5237792a=:;=k1:i5233592`=z{8<:6=4={<37`?3734;=>7h6;|q205<72=q6=9j5112896022?l01>:n:7d896412?o0q~?93;296~;6<j0><63>668e=>{t9:l1<7:t=06`>467349=878k;<17=?0c3499978j;|q2`0<72;q6=9l5519>5a0=n01v<=j:187873j3;;<63<6585b>;4<00=j63<2585a>{t9m91<7<t=06b>06<58n?6k74}r30`?6=<r7:8l4>019>735=>m16?9656e9>775=>l1v<j>:18187313?;70?k1;d:?xu6;j0;69u215;9556<5:<86;h4=26;>3`<5:896;k4}r005?6==r7:i54:0:?17c<68916=?<56d9>572=?916=?=56d9~w4bf2908w0?j8;334>;5180=h63=7385`>{t9o;1<7;t=0g4>06<58;i6;j4=001>c?<58;j6;h4=03:>3`<uz;o57>53z?2a2<68916>4>56d9>627=>l1v<h=:18187b>3?;70?=3;d:?xu6l10;6>u21d49556<5;3;6;j4=352>3b<uz;m?7>56z?2b5<2827:>849d:?261<a127:>;49f:?26=<1l27:>:49d:p5`5=839p1<h?:023?84?n3<n70<80;4f?xu6n=0;6?u21dd915=:9;?1j45rs0g1>5<4s4;nj7??0:?1<c<1l279;=49d:p5c3=83>p1<kj:428944f2>:01<<9:g;8944>2>:0q~?j1;297~;6ml0:<=5229g92`=::?l1:h5rs0d5>5<5s4;nh7;?;<313?`>3ty:i=4?:2y>5`b=99:01?6j:7f8970a2?n0q~?i7;296~;6mj0><63>298e=>{t9ml1<7=t=0g`>4673483h78j;<05a?0b3ty:j54?:3y>5`d==916=?75f89~w4bb2908w0?jb;334>;50m0=h63=6d85`>{t9o31<7<t=0gb>06<588j6k74}r3g`?6=;r7:il4>019>6=e=>l16>;j56d9~w4eb2909w0?j9;73?876j3l27p}>db83>6}:9l31==>4=3:`>3b<5;<o6;j4}r3``?6=:r7:i84:0:?25d<a12wx=il50;1x94c228:;70<7b;4f?841k3<n7p}>cb83>7}:9l>19=5210;9b<=z{8n<6=4<{<3f0?7782794o49d:?12f<1l2wx><950;0x975a2<:01?<::023?xu59?0;6?u222g915=::;>1==>4}r004?6=<r79?h4>019>574=>m16=?:56g9>575=>m1v??::181844l3?;70<=3;334>{t:;l1<7:t=31g>46734;9<78j;<310?0b34;9?78i;|q165<72;q6>995519>67b=99:0q~<<a;297~;5<>0:<=5213292a=:9;>1:i5rs33e>5<5s48?:7;?;<01g?7782wx>>750;4x972128:;70?=5;4f?875>3<n70?=8;4e?875?3<m70?>c;4g?xu59l0;6?u2257915=::;h1==>4}r00<?6==r79884>019>570=>m16=?656d9>571=>l16=<m56d9~w77c2909w0<;4;73?845i3;;<6s|22594?3|5;>?6<>?;<313?1734;9578i;<315?0b34;:o78i;|q15f<72;q6>9=5519>67?=99:0q~<<6;290~;5<:0:<=5210f92c=:9;31:h5213392a=z{;;i6=4={<076?37348947??0:p663=83>p1?:=:023?876l3<n70?=a;4f?87513<o7p}=1`83>7}::=;19=522359556<uz8887>53z?104<68916=<j56e9>57g=>m1v??6:18184383?;70<=6;334>{t::91<7:t=363>46734;:n78i;<32a?0c34;:j78k;|q15=<72;q6>>m5519>674=99:0q~<<2;297~;5;j0:<=5210g92`=:98l1:h5rs337>5<5s488n7;?;<015?7782wx>?k50;0x975e28:;70?>f;4e?xu60k0;6?u21c7915=:90h1==>4}r3;e?6=:r7:n94:0:?2=d<6891v<o8:18787e<3;;<63>5385`>;6==0=i63>5785b>{t9131<7<t=0`0>06<58326<>?;|q2e3<72:q6=o=5112894332?l01<;9:7g8yv7?03:1>v3>b3864>;6110:<=5rs0c6>5<5s4;i>7??0:?213<1l2wx=5950;0x94d62<:01<78:023?xu6i=0;68u21c39556<58?36;j4=07b>3c<58?h6:>4=07f>3`<uz;287>52z?2fa<2827:m>4>019~w4d7290?w0?md;334>;6=h0=j63>5b85`>;6=l0=i6s|18194?4|58hh68>4=0c1>4673ty:mk4?:2y>5ge=99:01<;l:7g8943b2?n0q~?62;296~;6jk0><63>a08245=z{8kn6=48{<3af?77827:9k49d:?227<1m27:::49f:?2`4<1l27:h;49e:?2`1<1m2wx=4?50;0x94df2<:01<o?:023?xu6im0;6;u21cc9556<58<96;j4=044>3c<58n=6;j4=0f7>3b<58<?6;j4}r3:4?6=:r7:n44:0:?2=c<6891v<ol:18687e13;;<63>6685`>;6>=0=i63>6485`>;6>?0=i6s|19d94?4|58h368>4=0;f>4673ty:mo4?:5y>5g>=99:01<8;:7d894022?o01<89:7d8yv7?m3:1>v3>b6864>;61m0:<=5rs0cb>5<4s4;i;7??0:?2`7<1l27::;49d:p5=b=838p1<l9:42894?d28:;7p}>a883>7}:9k<1==>4=0f1>3c<uz;mh7>52z?160<28279<o4>019~w4`d2909w0<=4;73?847i3;;<6s|1g`94?4|5;8868>4=32:>4673ty9<;4?:3y>67b==916><=51128yv47=3:1>v3=2b864>;59;0:<=5rs327>5<5s489n7;?;<025?7782wx>==50;0x974f2<:01???:023?xu58;0;6?u223;915=::9l1==>4}r035?6=:r79>54:0:?14`<6891v?>?:181845?3?;70<?d;334>{t9ol1<7<t=305>06<5;:h6<>?;|q2b`<72;q6>?<5519>65>=99:0q~?ia;296~;5:80><63=068245=z{8<o6=4={<3:f?3734;<h7??0:p53e=838p1<7n:428941d28:;7p}>6c83>7}:90319=5216`9556<uz;=m7>52z?2==<2827:;l4>019~w40>2909w0?67;73?87013;;<6s|16494?4|58k868>4=0:6>4673ty:;84?:3y>5d4==916=5:51128yv70<3:1>v3>a0864>;60:0:<=5rs050>5<5s4;j<7;?;<3;6?7782wx=:<50;0x94?a2<:01<6>:023?xu6?80;6?u218g915=:91:1==>4}r344?6=:r7:5i4:0:?23c<6891v<8i:18187>k3?;70?8e;334>{t9?o1<7<t=0;5>06<58=36<>?;|q2<f<728q6=4851128yv7103:1>v3>94864>;6?>0:<=5rs0:5>5<6s4;297??0:p6c1=83=p1<9k:428966028:;70:?6;73?877j3<o70<82;4f?85a03<o70=i7;4e?xu6jl0;6?u216a915=:99h1j45rs0`e>5<5s4;<n7;?;<33g?`>3ty:o=4?:3y>52g==916==j5f89~w4e62909w0?89;73?877m3l27p}>c383>7}:91?19=5211d9b<=z{8i86=4={<3;0?3734;:<7h6;|q2g1<72;q6=5=5519>547=n01v<m::18187?:3?;70?>2;d:?xu6k?0;6?u2193915=:9891j45rs0a4>5<5s4;3<7;?;<320?`>3ty:o54?:3y>52`==916=<;5f89~w4e>2909w0?8e;73?876>3l27p}>c`83>7}:9>219=521059b<=z{8ii6=4={<343?3734;:47h6;|q0`a<72<q6>=l5519>7`d=99:01<<m:7f896`22?l01>h9:7f8yv4303:1>v3=0`864>;6:k0m56s|25;94?4|5;:268>4=00`>c?<uz8?m7>52z?156<2827:>i4i9:p61d=838p1??=:428944b2o30q~<;c;296~;5980><63>2g8e=>{t:=n1<7<t=333>06<589;6k74}r07a?6=:r79<k4:0:?274<a12wx>9h50;0x976b2<:01<==:g;8yv4283:1>v3=0e864>;6;:0m56s|24394?4|5;:h68>4=017>c?<uz8>>7>52z?14=<2827:?84i9:p605=838p1?>8:42894512o30q~=>0;2965}::l218:522d5902=::l318:522d4902=::l?18:522g3902=::o:18:522dd902=::lo18:522df902=::li18:522d`902=::lk18:522d6902=::l918:52315902=:;9<18:52317902=:;9>18:52311902=:;9l18:5231g902=:;9n18:5231a902=:;9h18:5231c902=:;9318:5231:902=:;9818:52313902=::021j45228492`=z{;3n6=4={<0f<?37348h47h6;|q1`=<72=q6>h65112896612<:01?7?:62897d62?n0q~<6d;296~;5m>0><63=c68e=>{t:m=1<7:t=3g4>467349;97;?;<0:4?0a348jj78k;|q1=c<72;q6>h75519>6f?=n01v?j6:18784b13;;<63<06864>;5180=i63=c`85`>{t:0i1<7<t=3g5>06<5;i=6k74}r0g2?6=<r79i;4>019>752==916>5h5719>6db=>m1v?7m:18184b=3?;70<l5;d:?xu5l<0;69u22d79556<5::868>4=3:e>3`<5;ki6;j4}r0b3?6=:r79j<4:0:?1`6<a12wx>h<50;6x97`628:;70=?f;73?84?m3=;70<l3;4g?xu5i?0;6?u22g2915=::m81j45rs3g2>5<3s48m<7??0:?04`<282794h49f:?1g4<1l2wx>l;50;0x97ca2<:01?j>:g;8yv4b83:18v3=eg8245=:;9n19=5229f935=::kl1:i5rs3c7>5<5s48ni7;?;<0g4?`>3ty9hk4?:5y>6`c=99:01>>l:42897>c2?l01?lk:7f8yv4f;3:1>v3=ee864>;5ko0m56s|2eg94?2|5;oo6<>?;<13f?373483o79?;<0af?0c3ty9m?4?:3y>6`e==916>nk5f89~w7bc290?w0<jc;334>;48h0><63=8b85b>;5j00=h6s|2`394?4|5;oi68>4=3ag>c?<uz8oo7>54z?1ag<68916?=75519>6=d=?916>o956e9~w7g72909w0<ja;73?84dk3l27p}=dc83>1}::lk1==>4=22;>06<5;2i6;h4=3`6>3b<uz82m7>52z?1a1<28279oo4i9:p6ag=83>p1?k;:023?857:3?;70<7a;4g?84e;3<o7p}=9883>7}::l919=522b69b<=z{;n?6=4;{<0f7?778278<<4:0:?1<d<1m279m449d:p6g6=838p1?m6:5;897d72o30q~<la;296~;5k00i863=c`8e=>{t:ho1<7=t=3a;>1?<5;h;6974=3cf>c?<uz8i=7>53z?1g=<e<279n=4>029>6g7=n01v?ol:18084d?3>270<ne;6:?84fk3l27p}=ag83>6}::j=1n9522`g9555<5;km6k74}r0be?6=;r79o;4;9:?1ef<31279ml4i9:p6db=839p1?m9:c6897gd28:870<nd;d:?xu5k;0;6>u22b790<=::hk184522b09b<=z{;ki6=4<{<0`1?d3348jm7??3:?1eg<a12wx>n>50;1x97b42=301?m=:5;897e72o30q~<l3;297~;5l:0i863=c38246=::j91j45rs3`f>5<4s48o>7:6;<0`4?2>348ii7h6;|q1g4<72:q6>i<5b59>6f6=99901?m>:g;8yv4ek3:1?v3=d087=>;5jl0?563=bb8e=>{t:kl1<7=t=3f2>g2<5;hn6<><;<0ab?`>3ty9nl4?:2y>6a6=<016>om5489>6gg=n01v?lk:18084c83h?70<mc;337>;5jm0m56s|2c:94?5|5;im6974=3`b>1?<5;h36k74}r0af?6=;r79ok4m4:?1fd<68:16>ol5f89~w7d12908w0<le;6:?84e03>270<m6;d:?xu5j00;6>u22bg9f1=::k21===4=3`:>c?<uz8i87>53z?1ga<31279n;4;9:?1f1<a12wx>o950;1x97ec2k>01?l9:020?84e?3l27p}=b383>6}::ji184522c690<=::k81j45rs3`6>5<4s48ho7l;;<0a0?77;279n84i9:p6d>=839p1?mm:5;897d52=301?o7:g;8yv4e;3:1?v3=cc8a0>;5j;0:<>522c19b<=z{;k26=4<{<0`0?d3348j47??3:?1e<<a12wx>k850;37857>3;;<63>0b85`>;68k0=i63=70844>;39m09m63;1b81e>;39k09m63;1`81e>;39009m63;1981e>;3:?09m63;2481e>;3:=09m63;2281e>;3:;09m63;2081e>;3:909m63;1g81e>;39l09m63;1681e>{t:o?1<7?;{<131?77827:<i49d:?24f<1m279;<49f:?75a<5027?=n4=8:?75g<5027?=l4=8:?75<<5027?=54=8:?763<5027?>84=8:?761<5027?>>4=8:?767<5027?><4=8:?765<5027?=k4=8:?75`<5027?=:4=8:p6c2=83;?w0=?4;334>;68l0=h63>0e85a>;5?90<<63;1e813>;39j09;63;1c813>;39h09;63;18813>;39109;63;27813>;3:<09;63;25813>;3::09;63;23813>;3:809;63;21813>;39o09;63;1d813>;39>09;6s|2g194?73s49;?7??0:?24c<1l27:<h49e:?135<1n27?=i4=6:?75f<5>27?=o4=6:?75d<5>27?=44=6:?75=<5>27?>;4=6:?760<5>27?>94=6:?766<5>27?>?4=6:?764<5>27?>=4=6:?75c<5>27?=h4=6:?752<5>2wx?=>50;37857n3;;<63>1185`>;68o0=i63=6g844>;39m08?63;1b807>;39k08?63;1`807>;39008?63;19807>;3:?08?63;24807>;3:=08?63;22807>;3:;08?63;20807>;3:908?63;1g807>;39l08?63;16807>{t:ol1<7?;{<13a?77827:=<49d:?255<1m279:k49f:?75a<4:27?=n4<2:?75g<4:27?=l4<2:?75<<4:27?=54<2:?763<4:27?>84<2:?761<4:27?>>4<2:?767<4:27?><4<2:?765<4:27?=k4<2:?75`<4:27?=:4<2:p6cc=83;?w0=?d;334>;69;0=h63>1085a>;5>l0<<63;1e805>;39j08=63;1c805>;39h08=63;18805>;39108=63;27805>;3:<08=63;25805>;3::08=63;23805>;3:808=63;21805>;39o08=63;1d805>;39>08=6s|2gf94?73s49;o7??0:?256<1l27:=?49e:?12`<1n27?=i4<0:?75f<4827?=o4<0:?75d<4827?=44<0:?75=<4827?>;4<0:?760<4827?>94<0:?766<4827?>?4<0:?764<4827?>=4<0:?75c<4827?=h4<0:?752<482wx>km50;37857j3;;<63>1585`>;69:0=i63=6e844>;39m09j63;1b81b>;39k09j63;1`81b>;39009j63;1981b>;3:?09j63;2481b>;3:=09j63;2281b>;3:;09j63;2081b>;3:909j63;1g81b>;39l09j63;1681b>{t:oh1<7?;{<13e?77827:=849d:?251<1m279:i49f:?75a<5m27?=n4=e:?75g<5m27?=l4=e:?75<<5m27?=54=e:?763<5m27?>84=e:?761<5m27?>>4=e:?767<5m27?><4=e:?765<5m27?=k4=e:?75`<5m27?=:4=e:p6cg=83;?w0=?9;334>;69?0=h63>1485a>;5>j0<<63;1e81`>;39j09h63;1c81`>;39h09h63;1881`>;39109h63;2781`>;3:<09h63;2581`>;3::09h63;2381`>;3:809h63;2181`>;39o09h63;1d81`>;39>09h6s|2g;94?73s49;47??0:?252<1l27:=;49e:?12f<1n27?=i4=c:?75f<5k27?=o4=c:?75d<5k27?=44=c:?75=<5k27?>;4=c:?760<5k27?>94=c:?766<5k27?>?4=c:?764<5k27?>=4=c:?75c<5k27?=h4=c:?752<5k2wx>k650;37857:3;;<63>1985`>;69>0=i63=6c85`>;39m09n63;1b81f>;39k09n63;1`81f>;39009n63;1981f>;3:?09n63;2481f>;3:=09n63;2281f>;3:;09n63;2081f>;3:909n63;1g81f>;39l09n63;1681f>{t:o81<7?<{<135?77827:=549e:?12g<1m27?=i4=5:?75f<5=27?=o4=5:?75d<5=27?=44=5:?75=<5=27?>;4=5:?760<5=27?>94=5:?766<5=27?>?4=5:?764<5=27?>=4=5:?75c<5=27?=h4=5:?752<5=2wx?<:50;0x964e2=301>?;:g;8yv5593:1>v3<2c8a0>;4:80m56s|33g94?4|5:8i6k74=20g>06<uz9:?7>52z?051<31278=>4i9:p7f4=83?p1>?;:43896b728:;70=ja;73?853l3<n70==0;4g?xu4:90;6?u23069555<5:8;6k74}r126?6=:r78=>4;9:?057<a12wx?n?50;7x96742<;01>mi:023?85b13?;70=;d;53?856n3<o7p}<1g83>7}:;891===4=23e>c?<uz9:h7>52z?057<31278=i4i9:p7fe=83?p1>?=:43896b>28:;70=i3;73?853k3<n70=>e;4g?xu49l0;6?u23009555<5:;n6k74}r12g?6=:r78=i4;9:?05f<a12wx?nl50;7x967c2<;01>j7:023?85a:3?;70=;c;53?855i3<o7p}<2`83>7}:;8n1===4=20b>c?<uz9:n7>52z?05f<31278=o4i9:p7fg=83?p1>?l:43896b028:;70=i1;73?853j3<n70==9;4g?xu4:00;6?u230a9555<5:826k74}r12e?6=:r78=o4;9:?05d<a12wx?n750;7x967e2<;01>j9:023?85a83?;70=;b;53?85503<o7p}<2983>7}:;8h1===4=20;>c?<uz9:57>52z?05d<31278=44i9:p7f>=83?p1>?n:43896b228:;70=jf;73?853i3<n70==7;4g?xu4:>0;6?u230c9555<5:8<6k74}r12<?6=:r78=44;9:?05=<a12wx?n950;7x967>2<;01>j;:023?85bm3?;70=;a;53?855>3<o7p}<2783>7}:;831===4=205>c?<uz9:;7>52z?05=<31278=:4i9:p7f0=83?p1>?7:43896b428:;70=jd;73?85313<n70==5;4g?xu4:<0;6?u230:9555<5:8>6k74}r122?6=:r78=:4;9:?053<a12wx?n;50;7x96702<;01>j=:023?85bk3?;70=;9;53?855<3<o7p}<2583>7}:;8=1===4=207>c?<uz9:97>52z?053<31278=84i9:p7f2=83?p1>?9:43896eb28:;70=j8;73?85303<n70==3;4g?xu4::0;6?u23049555<5:886k74}r125?6=:r78=84;9:?054<a12wx?n>50;7x96722<;01>mk:023?85b?3?;70=;8;53?855:3<o7p}<2383>7}:;8?1===4=201>c?<uz9<<7>52z?054<29278;<4i9:p77e=838p1><k:023?85493<o7p}<3383>7}:;;l18:523219b<=z{:9;6=4={<11b?373498=7h6;|q13<<72;q6>5?5489>6=6=n01v?66:18184?93;;?63=908e=>{t:091<7<t=3:2>c?<5;3=6;j4}r04<?6=:r794=4;9:?13c<a12wx>5650;0x97>728:870<60;d:?xu5?>0;6?u226d90<=::>o1j45rs3:4>5<5s48<j7??3:?1<c<a12wx>:850;0x971b2=301?9k:g;8yv4?>3:1>v3=7d8246=::1o1j45rs356>5<5s48<h7:6;<04g?`>3ty9484?:3y>62b=99901?6k:g;8yv40<3:1>v3=7b87=>;5?k0m56s|29694?4|5;=h6<><;<0;g?`>3ty9;>4?:3y>62d=<016>:o5f89~w7>42909w0<8b;337>;50k0m56s|29094?4|5;=j6<><;<0;e?`>3ty99l4?:3y>634=<016>;?5f89~w70f2909w0<92;337>;5?;0m56s|28094?4|5;<96k74=3;5>3`<uz8>57>52z?124<31279:=4i9:p63?=838p1?8>:020?84093l27p}=5983>7}::?:1845224d9b<=z{;<36=4={<054?77;279;=4i9:p601=838p1?;i:5;8973b2o30q~<97;296~;5=o0:<>5227d9b<=z{;?=6=4={<06a?2>348>h7h6;|q123<72;q6>8k51118970b2o30q~<:5;296~;5=m0?563=5b8e=>{t:??1<7<t=37g>464348=h7h6;|q111<72;q6>8m5489>60d=n01v?8;:181842k3;;?63=6b8e=>{t:?91<7<t=37a>464348=n7h6;|q011<72;q6?8l5489>70g=n01v>8=:181852j3;;?63<688e=>{t;?h1<7<t=27a>c?<5:<m6:>4}r167?6=:r789l4;9:?01<<a12wx?;?50;0x963f28:870=98;d:?xu4=;0;6?u234;90<=:;<21j45rs243>5<5s49>57??3:?022<a12wx?8?50;0x963?2=301>;8:g;8yv52n3:1>v3<598246=:;?<1j45rs273>5<5s49>;7:6;<162?`>3ty89h4?:3y>701=99901>8::g;8yv53n3:1>v3<5787=>;4=<0m56s|34f94?4|5:?=6<><;<150?`>3ty89n4?:3y>703=99901>8<:g;8yv5413:1>v3<4187=>;4;o0m56s|35594?4|5:>;6<><;<17a?`>3ty8:l4?:3y>716=n016?;h56g9~w65?2909w0=<f;6:?854m3l27p}<4783>7}:;:l1===4=26g>c?<uz98;7>52z?07`<31278?i4i9:p713=838p1>=j:020?853k3l27p}<3783>7}:;:n1845232a9b<=z{:>?6=4={<10`?77;2788o4i9:p763=838p1>=l:5;8965e2o30q~=;3;296~;4;j0:<>5235c9b<=z{:9?6=4={<10f?2>3498m7h6;|q007<72;q6?>l51118962>2o30q~=;1;296~;4;h0:<>5235:9b<=z{:=:6=4=8z?0ga<3?278oh4;7:?0`7<3?278h>4;7:?0`3<3?278h94;7:?0`0<3?278h44;7:?0`2<3?278h54;7:?0`4<3?278ok4;7:?0`5<3?278n;4;7:?0f0<3?278n:4;7:?0fc<3?278nh4;7:?0fa<3?278nn4;7:?0fd<3?278n44;7:?0fg<3?278n54;7:?0f1<3?278n>4;7:?0ag<3?278il4;7:?0a<<3?278j>4;7:?0b7<3?278j<4;7:?0b5<3?278ik4;7:?0a`<3?278ii4;7:?0af<3?278i54;7:?0a2<3?278;?4i9:p7d0=83>p1>mk:42896d428:;70=93;53?85?93<o7p}<a`83>1}:;jo19=523c69556<5:<86;k4=2:4>3b<uz9jn7>54z?0`7<28278n54>019>732=?916?5756e9~w6gd290?w0=k3;73?85e13;;<63<6585a>;40k0=h6s|3`d94?2|5:n=68>4=2``>467349=:79?;<1:5?0c3ty8mi4?:5y>7a2==916?oo5112896022>:01>6k:7f8yv5fm3:18v3<d4864>;4jk0:<=5237792`=:;1l1:i5rs2`1>5<3s49o57;?;<1ab?778278::49e:?0=2<1l2wx?o>50;6x96b02<:01>lk:023?851>3<n70=63;4g?xu4j80;69u23e:915=:;ko1==>4=244>26<5:3>6;j4}r1b=?6=<r78h<4:0:?0f2<68916?;756e9>7<e=>m1v>m<:18785c93;;<63<ec864>;4<l0=h63<2085`>{t;h=1<7:t=2ae>06<5:h>6<>?;<15<?173493?78k;|q0e=<72=q6?i>5519>7g0=99:01>87:7g896>22?n0q~=86;296~;4j?0><63<9`8e=>{t;>?1<7<t=2`6>06<5:326k74}r143?6=:r78n:4:0:?0=g<a12wx?:h50;0x96da2<:01>o::g;8yv50m3:1>v3<bd864>;4i=0m56s|36f94?4|5:ho68>4=2c0>c?<uz9<o7>52z?0ff<28278m?4i9:p72g=838p1>ln:42896g72o30q~=89;296~;4j00><63<9g8e=>{t;>h1<7<t=2`a>06<5:k:6k74}r14<?6=:r78n54:0:?0=`<a12wx?::50;0x96d32<:01>7k:g;8yv50;3:1>v3<b2864>;4110m56s|39694?4|5:3i6974=2:7>c?<uz92o7>52z?0=g<e<2785n4i9:p7=4=839p1>7n:5;896>32=301>6=:g;8yv5?=3:1?v3<9`8a0>;40=0:<>523979b<=z{:3=6=4<{<1:=?2>3493>7:6;<1:2?`>3ty84>4?:2y>7<?=j=16?5<5111896>42o30q~=64;297~;4i<0?563<9787=>;41=0m56s|38594?5|5:k>6o:4=2;5>4643492;7h6;|q0=7<72:q6?l:5489>7<2=<016?4<5f89~w6?22908w0=n4;`7?85><3;;?63<948e=>{t;0:1<7=t=2c0>1?<5:396974=2;3>c?<uz92?7>53z?0e6<e<2785?4>029>7<5=n01v>6j:18085f:3>270=60;6:?85?m3l27p}<9083>6}:;h81n9523829555<5:3:6k74}r1;g?6=;r78m<4;9:?0<`<312784n4i9:p7=`=839p1>o>:c6896>b28:870=7f;d:?xu40h0;6>u23`290<=:;1i1845239c9b<=z{:2o6=4<{<1b4?d33493o7??3:?0<a<a12wx?5650;1x96?a2=301>6n:5;896>?2o30q~=7b;297~;41o0i863<8`8246=:;1h1j45rs2:5>5<4s492i7:6;<1;<?2>3493:7h6;|q0<<<72:q6?4k5b59>7=>=99901>66:g;8yv5?83:1?v3<9e87=>;40?0?563<818e=>{t;1=1<7=t=2;g>g2<5:2=6<><;<1;3?`>3ty84<4?:2y>7<>=j=16?5>5111896>62o30q~=kc;2956}:;lk1==>4=00`>3b<588i6;k4=53g>61<5=;h6>94=53a>61<5=;j6>94=53:>61<5=;36>94=505>61<5=8>6>94=507>61<5=886>94=501>61<5=8:6>94=503>61<5=;m6>94=53f>61<5=;<6>94}r1gf?6=9:q6?h751128944c2?n01<<l:7g8917c2:?019?l:278917e2:?019?n:278917>2:?019?7:27891412:?019<::27891432:?019<<:27891452:?019<>:27891472:?019?i:278917b2:?019?8:278yv5b>3:1=>u23g19556<588n6;j4=00g>3c<5=;o69>4=53`>16<5=;i69>4=53b>16<5=;269>4=53;>16<5=8=69>4=506>16<5=8?69>4=500>16<5=8969>4=502>16<5=8;69>4=53e>16<5=;n69>4=534>16<uz9n97>512y>7c4=99:01<<i:7f8944b2?o019?k:2d8917d2:l019?m:2d8917f2:l019?6:2d8917?2:l019<9:2d891422:l019<;:2d891442:l019<=:2d891462:l019<?:2d8917a2:l019?j:2d891702:l0q~=j4;2956}:;o;1==>4=013>3b<588m6;k4=53g>6c<5=;h6>k4=53a>6c<5=;j6>k4=53:>6c<5=;36>k4=505>6c<5=8>6>k4=507>6c<5=886>k4=501>6c<5=8:6>k4=503>6c<5=;m6>k4=53f>6c<5=;<6>k4}r1f7?6=9:q6?k>5112894562?n01<=?:7g8917c2:n019?l:2f8917e2:n019?n:2f8917>2:n019?7:2f891412:n019<::2f891432:n019<<:2f891452:n019<>:2f891472:n019?i:2f8917b2:n019?8:2f8yv5b:3:1=>u23dd9556<58996;j4=012>3c<5=;o6>m4=53`>6e<5=;i6>m4=53b>6e<5=;26>m4=53;>6e<5=8=6>m4=506>6e<5=8?6>m4=500>6e<5=896>m4=502>6e<5=8;6>m4=53e>6e<5=;n6>m4=534>6e<uz9n=7>512y>7`c=99:01<=<:7f894552?o019?k:2`8917d2:h019?m:2`8917f2:h019?6:2`8917?2:h019<9:2`891422:h019<;:2`891442:h019<=:2`891462:h019<?:2`8917a2:h019?j:2`891702:h0q~=j0;2956}:;ln1==>4=017>3b<58986;k4=53g>6g<5=;h6>o4=53a>6g<5=;j6>o4=53:>6g<5=;36>o4=505>6g<5=8>6>o4=507>6g<5=886>o4=501>6g<5=8:6>o4=503>6g<5=;m6>o4=53f>6g<5=;<6>o4}r1gb?6=9:q6?hm5112894522?n01<=;:7g8917c2:3019?l:2;8917e2:3019?n:2;8917>2:3019?7:2;891412:3019<::2;891432:3019<<:2;891452:3019<>:2;891472:3019?i:2;8917b2:3019?8:2;8yv5cm3:1=>u23d:9556<589=6;j4=016>3c<5=;o6>64=53`>6><5=;i6>64=53b>6><5=;26>64=53;>6><5=8=6>64=506>6><5=8?6>64=500>6><5=896>64=502>6><5=8;6>64=53e>6><5=;n6>64=534>6><uz9om7>513y>7`1=99:01<=9:7g8917c2:>019?l:268917e2:>019?n:268917>2:>019?7:26891412:>019<::26891432:>019<<:26891452:>019<>:26891472:>019?i:268917b2:>019?8:268yv25?3:1>v3;07873>;3:10m56s|41794??|5=:=6<>?;<630?0c34>;?78k;<636?0c34>;=78k;<634?0c349mj78k;<1ea?0c349mh78k;|q0b1<7288p1>8i:7g896172o3019?k:565?826k3>?:63;1c8703=:<8k18984=53:>12134>:47:;6:?763<3<?168?;5454891432=>=70:=3;672>;3:;0?8;524339010<5=8;69:9;<62b?23>27?=h4;479>041=<=<0q~j9:181872n3<n70?:e;`6?xu6>90;6;u217092c=:9?=1;=521e3935=:9m<1;=521e6935=:9<o1j45rs52g>5<5s4>;878j;<62g?3f3ty?<h4?:3y>052=>o168<j55`9~w16e2909w0:?3;4f?826i3?j7p};0b83>7}:<991:k5240`91d=z{=;=6=4={<636?0b34>:47;n;|q74d<72;q68=<56g9>04?==h1v9?;:18182793<n70:=5;7b?xu39<0;6?u241392c=:<;<19l5rs531>5<5s4>;<78j;<617?3f3ty?=>4?:3y>056=>o168?:55`9~w1772909w0=if;4f?82593?j7p};1083>7}:;ol1:k5243091d=z{=:26=4={<1ea?0b34>:j7;n;|q74c<72;q6?kk56g9>076==h1v9>8:18185al3<n70:>7;7b?xu3810;6?u23gf92c=:<8o19l5rsb794?4|58n96k74=0f2>3c<uz;hj7>54z?25g<1m27:>=4i9:?25d<1m27:=449e:p`<<72;q6=<l5719>54e=j<1vk:50;0x947b2o301<?n:7f8yvc32908w0?>a;53?87613=;70?>c;d:?xua=3:1>v3>1885`>;69o0i96s|f783>7}:9m;1:k521769f0=z{j<1<7<t=0f5>3`<58<>6o;4}ra;>5<5s4;o878i;<352?d23tyo87>52z?25a<a127:=n480:p5a6=838p1<<n:7d894462o30q~j8:18187503=;70?=1;`6?xu4n00;64u23g79b<=:<8i1:?5240c927=:<821:?52437927=:<;91:?52433927=:<8l1:?52405927=z{:lh6=46{<1e<?`>34>:h78>;<62f?0634>:578>;<612?0634>9878>;<616?0634>9<78>;<62a?063ty8jo4?:8y>7c1=n0168<m5609>04g=>8168<65609>073=>8168?=5609>077=>8168<h5609>041=>81v>hn:18:85a>3l270:>d;41?826j3<970:>9;41?825>3<970:=4;41?825:3<970:=0;41?826m3<97ps|52494?4|V<9=70:;:415?!2393l?7p}:3d83>7}Y=:o019:552g8 1262o?0q~;=2;296~X2:;16894:239'017=n?1v9o?:181[2?827?87:70:&704<d=2wx84k50;0xZ11a34>?699i;%675?e03ty?5n4?:3y]02b<5=>18:j4$562>f><uz>2n7>52z\73f=:<=0?;n5+4539`4=z{=3j6=4={_64f>;3<3><n6*;408g0>{t<031<7<t^55b?8232==j7):;1;f6?xu3110;6?uQ46;8912=<>30(9:>:e48yv2>?3:1>vP;799>01<3?11/89?5d69~w1?12909wS:87:?70?20?2.?8<4k9:p0<3=838pR999;<67>1113->?=7jn;|q7=1<72;qU8:;4=569023<,=>:6il4}r6:7?6=:rT?;952458731=#<=;1hn5rs5;2>5<5sW><>63;4;646>"3<80oh6s|48294?4|V==:70:;:552?!2393nn7p};8g83>7}Y<>:019:54628 1262ml0q~:7e;296~X3>o16894;6g9'017=m91v96k:181[21m27?87:9e:&704<b92wx85m50;0xZ10c34>?698k;%675?c53ty?4o4?:3y]03e<5=>18;m4$562>`5<uz>3m7>52z\72g=:<=0?:o5+4539a0=z{=226=4={_65e>;3<3>=m6*;408f2>{t<121<7<t^54:?8232=<27):;1;g4?xu3i>0;6?uQ4948912=<1<0(9:>:d:8yv2f>3:1>vP;849>01<30<1/89?5e89~w1g22909wS:74:?70?2?<2.?8<4ja:p0d2=838pR96<;<67>1>43->?=7km;|q7e6<72;qU85<4=5690=4<,=>:6hm4}r6b6?6=:rT?4<524587<4=#<=;1ii5rs5c2>5<5sW><i63;4;64a>"3<80ni6s|48f94?4|V==870:;:550?!2393om7p};9383>7}Y<?2019:547:8 1262o:0q~:77;296~X3>>16894;669'017=n81v8:k:181[33l27?87;;d:&704<a:2wx9>:50;0xZ05334>?68=;;%675?`43ty?n54?:3y]0d`<5=>18lh4$562>f?<uz>i:7>52z\7e`=:<=0?mh5+4539gd=z{=h>6=4={_6b`>;3<3>jh6*;408`f>{t<k>1<7<t^5c`?8232=kh7):;1;a`?xu3j:0;6?uQ4``8912=<hh0(9:>:bf8yv2e:3:1>vP;a`9>01<3ih1/89?5cd9~w1d62909wS:n9:?70?2f12.?8<4lf:p0g6=838pR9o7;<67>1g?3->?=7j?;|q7g5<72;qU8n>4=5690f6<,=>:6i<4}r6ae?6=:rT?nl524587fd=#<=;1h>5rs5d4>5<5sW>m;63;4;6e3>"3<80o46srnd:0>5<5sA>?>6sae9694?4|@=>97p`j8483>7}O<=80qck76;296~N3<;1vbh68:181M23:2wei5650;0xL1253tdn444?:3yK014<ugo3m7>52zJ707=zfl2i6=4={I676>{im1i1<7<tH561?xhb0m0;6?uG4508ykc?m3:1>vF;439~j`>a2909wE:;2:ma<6=838pD9:=;|lf=4<72;qC89<4}og:6?6=:rB?8?5rnd;0>5<5sA>?>6sae8694?4|@=>97p`j9483>7}O<=80qck66;296~N3<;1vbh78:181M23:2wei4650;0xL1253tdn544?:3yK014<ugo2m7>52zJ707=zfl3i6=4={I676>{im0i1<7<tH561?xhb1m0;6?uG4508ykc>m3:1>vF;439~j`?a2909wE:;2:mad6=838pD9:=;|lfe4<72;qC89<4}ogb6?6=:rB?8?5rndc0>5<5sA>?>6sae`694?4|@=>97p`ja483>7}O<=80qckn6;296~N3<;1vbho8:181M23:2weil650;0xL1253tdnm44?:3yK014<ugojm7>52zJ707=zflki6=4={I676>{imhi1<7<tH561?xhbim0;6?uG4508ykcfm3:1>vF;439~j`ga2909wE:;2:mag6=838pD9:=;|lff4<72;qC89<4}oga6?6=:rB?8?5rnb:5>5<6sA>?>6sacc494?7|@=>97p`lb683>4}O<=80qcmm8;295~N3<;1vbnl6:182M23:2weooo50;3xL1253tdhno4?:0yK014<ugiio7>51zJ707=zfjho6=4>{I676>{ikko1<7?tH561?xhdjo0;6<uG4508yked83:1=vF;439~jfe6290:wE:;2:mgf4=83;pD9:=;|l`g6<728qC89<4}oa`0?6=9rB?8?5rnba6>5<6sA>?>6sacb494?7|@=>97p`lc683>4}O<=80qcml8;295~N3<;1vbnm6:182M23:2weono50;3xL1253tdhoo4?:0yK014<ugiho7>51zJ707=zfjio6=4>{I676>{ikjo1<7?tH561?xhdko0;6<uG4508ykec83:1=vF;439~jfb6290:wE:;2:mga4=83;pD9:=;|l``6<728qC89<4}oag0?6=9rB?8?5rnbf6>5<6sA>?>6sace494?7|@=>97p`ld683>4}O<=80qcmk8;295~N3<;1vbnj6:182M23:2weoio50;3xL1253tdhho4?:0yK014<ugioo7>51zJ707=zfjno6=4>{I676>{ikmo1<7?tH561?xhdlo0;6<uG4508ykeb83:1=vF;439~jfc6290:wE:;2:mg`4=83;pD9:=;|l`a6<728qC89<4}oaf0?6=9rB?8?5rnbg6>5<6sA>?>6sacd494?7|@=>97p`le683>4}O<=80qcmj8;295~N3<;1vbnk6:182M23:2weoho50;3xL1253tdhio4?:0yK014<ugino7>51zJ707=zfjoo6=4>{I676>{iklo1<7?tH561?xhdmo0;6<uG4508ykea83:1=vF;439~jf`6290:wE:;2:mgc4=83;pD9:=;|l`b6<728qC89<4}oae0?6=9rB?8?5rnbd6>5<6sA>?>6sacg494?7|@=>97p`lf683>4}O<=80qcmi8;295~N3<;1vbnh6:182M23:2weoko50;3xL1253tdhjo4?:0yK014<ugimo7>51zJ707=zfjlo6=4>{I676>{ikoo1<7?tH561?xhdno0;6<uG4508ykb783:1=vF;439~ja66290:wE:;2:m`54=83;pD9:=;|lg46<728qC89<4}of30?6=9rB?8?5rne26>5<6sA>?>6sad1494?7|@=>97p`k0683>4}O<=80qcj?8;295~N3<;1vbi>6:182M23:2weh=o50;3xL1253tdo<o4?:0yK014<ugn;o7>51zJ707=zfm:o6=4>{I676>{il9o1<7?tH561?xhc8o0;6<uG4508ykb683:1=vF;439~ja76290:wE:;2:m`44=83;pD9:=;|lg56<728qC89<4}of20?6=9rB?8?5rne36>5<6sA>?>6sad0494?7|@=>97p`k1683>4}O<=80qcj>8;295~N3<;1vbi?6:182M23:2weh<o50;3xL1253tdo=o4?:0yK014<ugn:o7>51zJ707=zfm;o6=4>{I676>{il8o1<7?tH561?xhc9o0;6<uG4508ykb583:1=vF;439~ja46290:wE:;2:m`74=83;pD9:=;|lg66<728qC89<4}of10?6=9rB?8?5rne06>5<6sA>?>6sad3494?7|@=>97p`k2683>4}O<=80qcj=8;295~N3<;1vbi<6:182M23:2weh?o50;3xL1253tdo>o4?:0yK014<ugn9o7>51zJ707=zfm8o6=4>{I676>{il;o1<7?tH561?xhc:o0;6<uG4508ykb483:1=vF;439~ja56290:wE:;2:m`64=83;pD9:=;|lg76<728qC89<4}of00?6=9rB?8?5rne16>5<6sA>?>6sad2494?7|@=>97p`k3683>4}O<=80qcj<8;295~N3<;1vbi=6:182M23:2weh>o50;3xL1253tdo?o4?:0yK014<ugn8o7>51zJ707=zfm9o6=4>{I676>{il:o1<7?tH561?xhc;o0;6<uG4508ykb383:1=vF;439~ja26290:wE:;2:m`14=83;pD9:=;|lg06<728qC89<4}of70?6=9rB?8?5rne66>5<6sA>?>6sad5494?7|@=>97p`k4683>4}O<=80qcj;8;295~N3<;1vbi:6:182M23:2weh9o50;3xL1253tdo8o4?:0yK014<ugn?o7>51zJ707=zfm>o6=4>{I676>{il=o1<7?tH561?xhc<o0;6<uG4508ykb283:1=vF;439~ja36290:wE:;2:m`04=83;pD9:=;|lg16<728qC89<4}of60?6=9rB?8?5rne76>5<6sA>?>6sad4494?7|@=>97p`k5683>4}O<=80qcj:8;295~N3<;1vbi;6:182M23:2weh8o50;3xL1253tdo9o4?:0yK014<ugn>o7>51zJ707=zfm?o6=4>{I676>{il<o1<7?tH561?xhc=o0;6<uG4508ykb183:1=vF;439~ja06290:wE:;2:m`34=83;pD9:=;|lg26<728qC89<4}of50?6=9rB?8?5rne46>5<6sA>?>6sad7494?7|@=>97p`k6683>4}O<=80qcj98;295~N3<;1vbi86:182M23:2weh;o50;3xL1253tdo:o4?:0yK014<ugn=o7>51zJ707=zfm<o6=4>{I676>{il?o1<7?tH561?xhc>o0;6<uG4508ykb083:1=vF;439~ja16290:wE:;2:m`24=83;pD9:=;|lg36<728qC89<4}of40?6=9rB?8?5rne56>5<6sA>?>6sad6494?7|@=>97p`k7683>4}O<=80qcj88;295~N3<;1vbi96:182M23:2weh:o50;3xL1253tdo;o4?:0yK014<ugn<o7>51zJ707=zfm=o6=4>{I676>{il>o1<7?tH561?xhc?o0;6<uG4508ykb?83:1=vF;439~ja>6290:wE:;2:m`=4=83;pD9:=;|lg<6<728qC89<4}of;0?6=9rB?8?5rne:6>5<6sA>?>6sad9494?7|@=>97p`k8683>4}O<=80qcj78;295~N3<;1vbi66:182M23:2weh5o50;3xL1253tdo4o4?:0yK014<ugn3o7>51zJ707=zfm2o6=4>{I676>{il1o1<7?tH561?xhc0o0;6<uG4508ykb>83:1=vF;439~ja?6290:wE:;2:m`<4=83;pD9:=;|lg=6<728qC89<4}of:0?6=9rB?8?5rne;6>5<6sA>?>6sad8494?7|@=>97p`k9683>4}O<=80qcj68;295~N3<;1vbi76:182M23:2weh4o50;3xL1253tdo5o4?:0yK014<ugn2o7>51zJ707=zfm3o6=4>{I676>{il0o1<7?tH561?xhc1o0;6<uG4508ykbf83:1=vF;439~jag6290:wE:;2:m`d4=83;pD9:=;|lge6<728qC89<4}ofb0?6=9rB?8?5rnec6>5<6sA>?>6sad`494?7|@=>97p`ka683>4}O<=80qcjn8;295~N3<;1vbio6:182M23:2wehlo50;3xL1253tdomo4?:0yK014<ugnjo7>51zJ707=zfmko6=4>{I676>{ilho1<7?tH561?xhcio0;6<uG4508ykbe83:1=vF;439~jad6290:wE:;2:m`g4=83;pD9:=;|lgf6<728qC89<4}ofa0?6=9rB?8?5rne`6>5<6sA>?>6sadc494?7|@=>97p`kb683>4}O<=80qcjm8;295~N3<;1vbil6:182M23:2wehoo50;3xL1253tdono4?:0yK014<ugnio7>51zJ707=zfmho6=4>{I676>{ilko1<7?tH561?xhcjo0;6<uG4508ykbd83:1=vF;439~jae6290:wE:;2:m`f4=83;pD9:=;|lgg6<728qC89<4}of`0?6=9rB?8?5rnea6>5<6sA>?>6sadb494?7|@=>97p`kc683>4}O<=80qcjl8;295~N3<;1vbim6:182M23:2wehno50;3xL1253tdooo4?:0yK014<ugnho7>51zJ707=zfmio6=4>{I676>{iljo1<7?tH561?xhcko0;6<uG4508ykbc83:1=vF;439~jab6290:wE:;2:m`a4=83;pD9:=;|lg`6<728qC89<4}ofg0?6=9rB?8?5rnef6>5<6sA>?>6sade494?7|@=>97p`kd683>4}O<=80qcjk8;295~N3<;1vbij6:182M23:2wehio50;3xL1253tdoho4?:0yK014<ugnoo7>51zJ707=zfmno6=4>{I676>{ilmo1<7?tH561?xhclo0;6<uG4508ykbb83:1=vF;439~jac6290:wE:;2:m``4=83;pD9:=;|lga6<728qC89<4}off0?6=9rB?8?5rneg6>5<6sA>?>6sadd494?7|@=>97p`ke683>4}O<=80qcjj8;295~N3<;1vbik6:182M23:2wehho50;3xL1253tdoio4?:0yK014<ugnno7>51zJ707=zfmoo6=4>{I676>{illo1<7?tH561?xhcmo0;6<uG4508ykba83:1=vF;439~ja`6290:wE:;2:m`c4=83;pD9:=;|lgb6<728qC89<4}ofe0?6=9rB?8?5rned6>5<6sA>?>6sadg494?7|@=>97p`kf683>4}O<=80qcji8;295~N3<;1vbih6:182M23:2wehko50;3xL1253tdojo4?:0yK014<ugnmo7>51zJ707=zfmlo6=4>{I676>{iloo1<7?tH561?xhcno0;6<uG4508ykc783:1=vF;439~j`66290:wE:;2:ma54=83;pD9:=;|lf46<728qC89<4}og30?6=9rB?8?5rnd26>5<6sA>?>6sae1494?7|@=>97p`j0683>4}O<=80qck?8;295~N3<;1vbh>6:182M23:2wei=o50;3xL1253tdn<o4?:0yK014<ugo;o7>51zJ707=zfl:o6=4>{I676>{im9o1<7?tH561?xhb8o0;6<uG4508ykc683:1=vF;439~j`76290:wE:;2:ma44=83;pD9:=;|lf56<728qC89<4}og20?6=9rB?8?5rnd36>5<6sA>?>6sae0494?7|@=>97p`j1683>4}O<=80qck>8;295~N3<;1vbh?6:182M23:2wei<o50;3xL1253tdn=o4?:0yK014<ugo:o7>51zJ707=zfl;o6=4>{I676>{im8o1<7?tH561?xhb9o0;6<uG4508ykc583:1=vF;439~j`46290:wE:;2:ma74=83;pD9:=;|lf66<728qC89<4}og10?6=9rB?8?5rnd06>5<6sA>?>6sae3494?7|@=>97p`j2683>4}O<=80qck=8;295~N3<;1vbh<6:182M23:2wei?o50;3xL1253tdn>o4?:0yK014<ugo9o7>51zJ707=zfl8o6=4>{I676>{im;o1<7?tH561?xhb:o0;6<uG4508ykc483:1=vF;439~j`56290:wE:;2:ma64=83;pD9:=;|lf76<728qC89<4}og00?6=9rB?8?5rnd16>5<6sA>?>6sae2494?7|@=>97p`j3683>4}O<=80qck<8;295~N3<;1vbh=6:182M23:2wei>o50;3xL1253tdn?o4?:0yK014<ugo8o7>51zJ707=zfl9o6=4>{I676>{im:o1<7?tH561?xhb;o0;6<uG4508ykc383:1=vF;439~j`26290:wE:;2:ma14=83;pD9:=;|lf06<728qC89<4}og70?6=9rB?8?5rnd66>5<6sA>?>6sae5494?7|@=>97p`j4683>4}O<=80qck;8;295~N3<;1vbh:6:182M23:2wei9o50;3xL1253tdn8o4?:0yK014<ugo?o7>51zJ707=zfl>o6=4>{I676>{im=o1<7?tH561?xhb<o0;6<uG4508ykc283:1=vF;439~j`36290:wE:;2:ma04=83;pD9:=;|lf16<728qC89<4}og60?6=9rB?8?5rnd76>5<6sA>?>6sae4494?7|@=>97p`j5683>4}O<=80qck:8;295~N3<;1vbh;6:182M23:2wei8o50;3xL1253tdn9o4?:0yK014<ugo>o7>51zJ707=zfl?o6=4>{I676>{im<o1<7?tH561?xhb=o0;6<uG4508ykc183:1=vF;439~j`06290:wE:;2:ma34=83;pD9:=;|lf26<728qC89<4}og50?6=9rB?8?5rnd46>5<6sA>?>6sae7494?7|@=>97p`j6683>4}O<=80qck98;295~N3<;1vbh86:182M23:2wei;o50;3xL1253tdn:o4?:0yK014<ugo=o7>51zJ707=zfl<o6=4>{I676>{im?o1<7?tH561?xhb>o0;6<uG4508ykc083:1=vF;439~j`16290:wE:;2:ma24=83;pD9:=;|lf36<728qC89<4}og40?6=9rB?8?5rnd56>5<6sA>?>6sae6494?7|@=>97p`j7683>4}O<=80qck88;295~N3<;1vbh96:182M23:2wei:o50;3xL1253tdn;o4?:0yK014<ugo<o7>51zJ707=zfl=o6=4>{I676>{im>o1<7?tH561?xhb?o0;6<uG4508ykc?83:1=vF;439~j`>6290:wE:;2:ma=4=83;pD9:=;|~yEFDs8:i=7k<10;e7g{GHKq;qMN_{|BC \ No newline at end of file diff --git a/ipcore_dir/fifo.sym b/ipcore_dir/fifo.sym new file mode 100644 index 0000000000000000000000000000000000000000..410396c8d8a62e2c1a66dd9b328413cfc94fd330 --- /dev/null +++ b/ipcore_dir/fifo.sym @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<symbol version="7" name="fifo"> + <symboltype>BLOCK</symboltype> + <timestamp>2013-11-14T16:1:28</timestamp> + <pin polarity="Input" x="0" y="80" name="din[31:0]" /> + <pin polarity="Input" x="0" y="144" name="wr_en" /> + <pin polarity="Input" x="0" y="176" name="wr_clk" /> + <pin polarity="Input" x="0" y="240" name="rd_en" /> + <pin polarity="Input" x="0" y="272" name="rd_clk" /> + <pin polarity="Input" x="144" y="800" name="rst" /> + <pin polarity="Output" x="576" y="80" name="dout[7:0]" /> + <pin polarity="Output" x="576" y="208" name="full" /> + <pin polarity="Output" x="576" y="272" name="prog_full" /> + <pin polarity="Output" x="576" y="432" name="empty" /> + <graph> + <text style="fontsize:40;fontname:Arial" x="32" y="32">fifo</text> + <rect width="512" x="32" y="32" height="736" /> + <line x2="32" y1="80" y2="80" style="linewidth:W" x1="0" /> + <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="80" type="pin din[31:0]" /> + <line x2="32" y1="144" y2="144" x1="0" /> + <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="144" type="pin wr_en" /> + <line x2="32" y1="176" y2="176" x1="0" /> + <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="176" type="pin wr_clk" /> + <line x2="32" y1="240" y2="240" x1="0" /> + <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="240" type="pin rd_en" /> + <line x2="32" y1="272" y2="272" x1="0" /> + <attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="272" type="pin rd_clk" /> + <line x2="144" y1="800" y2="768" x1="144" /> + <attrtext style="alignment:BCENTER;fontsize:24;fontname:Arial" attrname="PinName" x="144" y="764" type="pin rst" /> + <line x2="544" y1="80" y2="80" style="linewidth:W" x1="576" /> + <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="80" type="pin dout[7:0]" /> + <line x2="544" y1="208" y2="208" x1="576" /> + <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="208" type="pin full" /> + <line x2="544" y1="272" y2="272" x1="576" /> + <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="272" type="pin prog_full" /> + <line x2="544" y1="432" y2="432" x1="576" /> + <attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="432" type="pin empty" /> + </graph> +</symbol> diff --git a/ipcore_dir/fifo.v b/ipcore_dir/fifo.v new file mode 100644 index 0000000000000000000000000000000000000000..61e7146f54dd1322a43130f17bb0c6a1620d3f81 --- /dev/null +++ b/ipcore_dir/fifo.v @@ -0,0 +1,175 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used * +* solely for design, simulation, implementation and creation of * +* design files limited to Xilinx devices or technologies. Use * +* with non-Xilinx devices or technologies is expressly prohibited * +* and immediately terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" * +* SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR * +* XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION * +* AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION * +* OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS * +* IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, * +* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE * +* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY * +* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * +* FOR A PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support * +* appliances, devices, or systems. Use in such applications are * +* expressly prohibited. * +* * +* (c) Copyright 1995-2009 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// The synthesis directives "translate_off/translate_on" specified below are +// supported by Xilinx, Mentor Graphics and Synplicity synthesis +// tools. Ensure they are correct for your synthesis tool(s). + +// You must compile the wrapper file fifo.v when simulating +// the core, fifo. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + +`timescale 1ns/1ps + +module fifo( + rst, + wr_clk, + rd_clk, + din, + wr_en, + rd_en, + dout, + full, + empty, + prog_full); + + +input rst; +input wr_clk; +input rd_clk; +input [31 : 0] din; +input wr_en; +input rd_en; +output [7 : 0] dout; +output full; +output empty; +output prog_full; + +// synthesis translate_off + + FIFO_GENERATOR_V6_2 #( + .C_COMMON_CLOCK(0), + .C_COUNT_TYPE(0), + .C_DATA_COUNT_WIDTH(13), + .C_DEFAULT_VALUE("BlankString"), + .C_DIN_WIDTH(32), + .C_DOUT_RST_VAL("0"), + .C_DOUT_WIDTH(8), + .C_ENABLE_RLOCS(0), + .C_ENABLE_RST_SYNC(1), + .C_ERROR_INJECTION_TYPE(0), + .C_FAMILY("spartan3"), + .C_FULL_FLAGS_RST_VAL(1), + .C_HAS_ALMOST_EMPTY(0), + .C_HAS_ALMOST_FULL(0), + .C_HAS_BACKUP(0), + .C_HAS_DATA_COUNT(0), + .C_HAS_INT_CLK(0), + .C_HAS_MEMINIT_FILE(0), + .C_HAS_OVERFLOW(0), + .C_HAS_RD_DATA_COUNT(0), + .C_HAS_RD_RST(0), + .C_HAS_RST(1), + .C_HAS_SRST(0), + .C_HAS_UNDERFLOW(0), + .C_HAS_VALID(0), + .C_HAS_WR_ACK(0), + .C_HAS_WR_DATA_COUNT(0), + .C_HAS_WR_RST(0), + .C_IMPLEMENTATION_TYPE(2), + .C_INIT_WR_PNTR_VAL(0), + .C_MEMORY_TYPE(1), + .C_MIF_FILE_NAME("BlankString"), + .C_MSGON_VAL(1), + .C_OPTIMIZATION_MODE(0), + .C_OVERFLOW_LOW(0), + .C_PRELOAD_LATENCY(1), + .C_PRELOAD_REGS(0), + .C_PRIM_FIFO_TYPE("8kx4"), + .C_PROG_EMPTY_THRESH_ASSERT_VAL(2), + .C_PROG_EMPTY_THRESH_NEGATE_VAL(3), + .C_PROG_EMPTY_TYPE(0), + .C_PROG_FULL_THRESH_ASSERT_VAL(4096), + .C_PROG_FULL_THRESH_NEGATE_VAL(4095), + .C_PROG_FULL_TYPE(1), + .C_RD_DATA_COUNT_WIDTH(15), + .C_RD_DEPTH(32768), + .C_RD_FREQ(1), + .C_RD_PNTR_WIDTH(15), + .C_UNDERFLOW_LOW(0), + .C_USE_DOUT_RST(1), + .C_USE_ECC(0), + .C_USE_EMBEDDED_REG(0), + .C_USE_FIFO16_FLAGS(0), + .C_USE_FWFT_DATA_COUNT(0), + .C_VALID_LOW(0), + .C_WR_ACK_LOW(0), + .C_WR_DATA_COUNT_WIDTH(13), + .C_WR_DEPTH(8192), + .C_WR_FREQ(1), + .C_WR_PNTR_WIDTH(13), + .C_WR_RESPONSE_LATENCY(1)) + inst ( + .RST(rst), + .WR_CLK(wr_clk), + .RD_CLK(rd_clk), + .DIN(din), + .WR_EN(wr_en), + .RD_EN(rd_en), + .DOUT(dout), + .FULL(full), + .EMPTY(empty), + .PROG_FULL(prog_full), + .BACKUP(), + .BACKUP_MARKER(), + .CLK(), + .SRST(), + .WR_RST(), + .RD_RST(), + .PROG_EMPTY_THRESH(), + .PROG_EMPTY_THRESH_ASSERT(), + .PROG_EMPTY_THRESH_NEGATE(), + .PROG_FULL_THRESH(), + .PROG_FULL_THRESH_ASSERT(), + .PROG_FULL_THRESH_NEGATE(), + .INT_CLK(), + .INJECTDBITERR(), + .INJECTSBITERR(), + .ALMOST_FULL(), + .WR_ACK(), + .OVERFLOW(), + .ALMOST_EMPTY(), + .VALID(), + .UNDERFLOW(), + .DATA_COUNT(), + .RD_DATA_COUNT(), + .WR_DATA_COUNT(), + .PROG_EMPTY(), + .SBITERR(), + .DBITERR()); + + +// synthesis translate_on + +// XST black box declaration +// box_type "black_box" +// synthesis attribute box_type of fifo is "black_box" + +endmodule + diff --git a/ipcore_dir/fifo.veo b/ipcore_dir/fifo.veo new file mode 100644 index 0000000000000000000000000000000000000000..11483c5704f14d799d931b00aa762f716872f3b8 --- /dev/null +++ b/ipcore_dir/fifo.veo @@ -0,0 +1,52 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used * +* solely for design, simulation, implementation and creation of * +* design files limited to Xilinx devices or technologies. Use * +* with non-Xilinx devices or technologies is expressly prohibited * +* and immediately terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" * +* SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR * +* XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION * +* AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION * +* OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS * +* IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, * +* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE * +* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY * +* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * +* FOR A PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support * +* appliances, devices, or systems. Use in such applications are * +* expressly prohibited. * +* * +* (c) Copyright 1995-2009 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +fifo YourInstanceName ( + .rst(rst), + .wr_clk(wr_clk), + .rd_clk(rd_clk), + .din(din), // Bus [31 : 0] + .wr_en(wr_en), + .rd_en(rd_en), + .dout(dout), // Bus [7 : 0] + .full(full), + .empty(empty), + .prog_full(prog_full)); + +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file fifo.v when simulating +// the core, fifo. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + diff --git a/ipcore_dir/fifo.vhd b/ipcore_dir/fifo.vhd new file mode 100644 index 0000000000000000000000000000000000000000..5826686f5e8d1ada2c9bf3aee12206902aa0da68 --- /dev/null +++ b/ipcore_dir/fifo.vhd @@ -0,0 +1,178 @@ +-------------------------------------------------------------------------------- +-- (c) Copyright 1995 - 2010 Xilinx, Inc. All rights reserved. -- +-- -- +-- This file contains confidential and proprietary information -- +-- of Xilinx, Inc. and is protected under U.S. and -- +-- international copyright and other intellectual property -- +-- laws. -- +-- -- +-- DISCLAIMER -- +-- This disclaimer is not a license and does not grant any -- +-- rights to the materials distributed herewith. Except as -- +-- otherwise provided in a valid license issued to you by -- +-- Xilinx, and to the maximum extent permitted by applicable -- +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND -- +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES -- +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING -- +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- -- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and -- +-- (2) Xilinx shall not be liable (whether in contract or tort, -- +-- including negligence, or under any other theory of -- +-- liability) for any loss or damage of any kind or nature -- +-- related to, arising under or in connection with these -- +-- materials, including for any direct, or any indirect, -- +-- special, incidental, or consequential loss or damage -- +-- (including loss of data, profits, goodwill, or any type of -- +-- loss or damage suffered as a result of any action brought -- +-- by a third party) even if such damage or loss was -- +-- reasonably foreseeable or Xilinx had been advised of the -- +-- possibility of the same. -- +-- -- +-- CRITICAL APPLICATIONS -- +-- Xilinx products are not designed or intended to be fail- -- +-- safe, or for use in any application requiring fail-safe -- +-- performance, such as life-support or safety devices or -- +-- systems, Class III medical devices, nuclear facilities, -- +-- applications related to the deployment of airbags, or any -- +-- other applications that could lead to death, personal -- +-- injury, or severe property or environmental damage -- +-- (individually and collectively, "Critical -- +-- Applications"). Customer assumes the sole risk and -- +-- liability of any use of Xilinx products in Critical -- +-- Applications, subject only to applicable laws and -- +-- regulations governing limitations on product liability. -- +-- -- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS -- +-- PART OF THIS FILE AT ALL TIMES. -- +-------------------------------------------------------------------------------- + +-- Generated from component ID: xilinx.com:ip:fifo_generator:6.2 + + +-- You must compile the wrapper file fifo.vhd when simulating +-- the core, fifo. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY fifo IS + port ( + rst: in std_logic; + wr_clk: in std_logic; + rd_clk: in std_logic; + din: in std_logic_vector(31 downto 0); + wr_en: in std_logic; + rd_en: in std_logic; + dout: out std_logic_vector(7 downto 0); + full: out std_logic; + empty: out std_logic; + prog_full: out std_logic); +END fifo; + +ARCHITECTURE fifo_a OF fifo IS +-- synthesis translate_off +component wrapped_fifo + port ( + rst: in std_logic; + wr_clk: in std_logic; + rd_clk: in std_logic; + din: in std_logic_vector(31 downto 0); + wr_en: in std_logic; + rd_en: in std_logic; + dout: out std_logic_vector(7 downto 0); + full: out std_logic; + empty: out std_logic; + prog_full: out std_logic); +end component; + +-- Configuration specification + for all : wrapped_fifo use entity XilinxCoreLib.fifo_generator_v6_2(behavioral) + generic map( + c_has_int_clk => 0, + c_wr_response_latency => 1, + c_rd_freq => 1, + c_has_srst => 0, + c_enable_rst_sync => 1, + c_has_rd_data_count => 0, + c_din_width => 32, + c_has_wr_data_count => 0, + c_full_flags_rst_val => 1, + c_implementation_type => 2, + c_family => "spartan3", + c_use_embedded_reg => 0, + c_has_wr_rst => 0, + c_wr_freq => 1, + c_use_dout_rst => 1, + c_underflow_low => 0, + c_has_meminit_file => 0, + c_has_overflow => 0, + c_preload_latency => 1, + c_dout_width => 8, + c_msgon_val => 1, + c_rd_depth => 32768, + c_default_value => "BlankString", + c_mif_file_name => "BlankString", + c_error_injection_type => 0, + c_has_underflow => 0, + c_has_rd_rst => 0, + c_has_almost_full => 0, + c_has_rst => 1, + c_data_count_width => 13, + c_has_wr_ack => 0, + c_use_ecc => 0, + c_wr_ack_low => 0, + c_common_clock => 0, + c_rd_pntr_width => 15, + c_use_fwft_data_count => 0, + c_has_almost_empty => 0, + c_rd_data_count_width => 15, + c_enable_rlocs => 0, + c_wr_pntr_width => 13, + c_overflow_low => 0, + c_prog_empty_type => 0, + c_optimization_mode => 0, + c_wr_data_count_width => 13, + c_preload_regs => 0, + c_dout_rst_val => "0", + c_has_data_count => 0, + c_prog_full_thresh_negate_val => 4095, + c_wr_depth => 8192, + c_prog_empty_thresh_negate_val => 3, + c_prog_empty_thresh_assert_val => 2, + c_has_valid => 0, + c_init_wr_pntr_val => 0, + c_prog_full_thresh_assert_val => 4096, + c_use_fifo16_flags => 0, + c_has_backup => 0, + c_valid_low => 0, + c_prim_fifo_type => "8kx4", + c_count_type => 0, + c_prog_full_type => 1, + c_memory_type => 1); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_fifo + port map ( + rst => rst, + wr_clk => wr_clk, + rd_clk => rd_clk, + din => din, + wr_en => wr_en, + rd_en => rd_en, + dout => dout, + full => full, + empty => empty, + prog_full => prog_full); +-- synthesis translate_on + +END fifo_a; + diff --git a/ipcore_dir/fifo.vho b/ipcore_dir/fifo.vho new file mode 100644 index 0000000000000000000000000000000000000000..218266f6dc11d377dad213f206430be9d375e0e0 --- /dev/null +++ b/ipcore_dir/fifo.vho @@ -0,0 +1,97 @@ +-------------------------------------------------------------------------------- +-- (c) Copyright 1995 - 2010 Xilinx, Inc. All rights reserved. -- +-- -- +-- This file contains confidential and proprietary information -- +-- of Xilinx, Inc. and is protected under U.S. and -- +-- international copyright and other intellectual property -- +-- laws. -- +-- -- +-- DISCLAIMER -- +-- This disclaimer is not a license and does not grant any -- +-- rights to the materials distributed herewith. Except as -- +-- otherwise provided in a valid license issued to you by -- +-- Xilinx, and to the maximum extent permitted by applicable -- +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND -- +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES -- +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING -- +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- -- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and -- +-- (2) Xilinx shall not be liable (whether in contract or tort, -- +-- including negligence, or under any other theory of -- +-- liability) for any loss or damage of any kind or nature -- +-- related to, arising under or in connection with these -- +-- materials, including for any direct, or any indirect, -- +-- special, incidental, or consequential loss or damage -- +-- (including loss of data, profits, goodwill, or any type of -- +-- loss or damage suffered as a result of any action brought -- +-- by a third party) even if such damage or loss was -- +-- reasonably foreseeable or Xilinx had been advised of the -- +-- possibility of the same. -- +-- -- +-- CRITICAL APPLICATIONS -- +-- Xilinx products are not designed or intended to be fail- -- +-- safe, or for use in any application requiring fail-safe -- +-- performance, such as life-support or safety devices or -- +-- systems, Class III medical devices, nuclear facilities, -- +-- applications related to the deployment of airbags, or any -- +-- other applications that could lead to death, personal -- +-- injury, or severe property or environmental damage -- +-- (individually and collectively, "Critical -- +-- Applications"). Customer assumes the sole risk and -- +-- liability of any use of Xilinx products in Critical -- +-- Applications, subject only to applicable laws and -- +-- regulations governing limitations on product liability. -- +-- -- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS -- +-- PART OF THIS FILE AT ALL TIMES. -- +-------------------------------------------------------------------------------- + +-- Generated from component ID: xilinx.com:ip:fifo_generator:6.2 + + +-- The following code must appear in the VHDL architecture header: + +------------- Begin Cut here for COMPONENT Declaration ------ COMP_TAG +component fifo + port ( + rst: in std_logic; + wr_clk: in std_logic; + rd_clk: in std_logic; + din: in std_logic_vector(31 downto 0); + wr_en: in std_logic; + rd_en: in std_logic; + dout: out std_logic_vector(7 downto 0); + full: out std_logic; + empty: out std_logic; + prog_full: out std_logic); +end component; + +-- Synplicity black box declaration +attribute syn_black_box : boolean; +attribute syn_black_box of fifo: component is true; + +-- COMP_TAG_END ------ End COMPONENT Declaration ------------ + +-- The following code must appear in the VHDL architecture +-- body. Substitute your own instance name and net names. + +------------- Begin Cut here for INSTANTIATION Template ----- INST_TAG +your_instance_name : fifo + port map ( + rst => rst, + wr_clk => wr_clk, + rd_clk => rd_clk, + din => din, + wr_en => wr_en, + rd_en => rd_en, + dout => dout, + full => full, + empty => empty, + prog_full => prog_full); +-- INST_TAG_END ------ End INSTANTIATION Template ------------ + +-- You must compile the wrapper file fifo.vhd when simulating +-- the core, fifo. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + diff --git a/ipcore_dir/fifo.xco b/ipcore_dir/fifo.xco new file mode 100644 index 0000000000000000000000000000000000000000..fde520ffab3678887a154c32027de909571c563f --- /dev/null +++ b/ipcore_dir/fifo.xco @@ -0,0 +1,91 @@ +############################################################## +# +# Xilinx Core Generator version 14.3 +# Date: Thu Nov 14 16:00:10 2013 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:fifo_generator:6.2 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -4 +SET verilogsim = false +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 6.2 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=false +CSET component_name=fifo +CSET data_count=false +CSET data_count_width=13 +CSET disable_timing_violations=false +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_negate_value=3 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET enable_reset_synchronization=true +CSET fifo_implementation=Independent_Clocks_Block_RAM +CSET full_flags_reset_value=1 +CSET full_threshold_assert_value=4096 +CSET full_threshold_negate_value=4095 +CSET inject_dbit_error=false +CSET inject_sbit_error=false +CSET input_data_width=32 +CSET input_depth=8192 +CSET output_data_width=8 +CSET output_depth=32768 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=Single_Programmable_Full_Threshold_Constant +CSET read_clock_frequency=1 +CSET read_data_count=false +CSET read_data_count_width=15 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=false +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=false +CSET write_data_count_width=13 +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-10-13T03:35:42Z +# END Extra information +GENERATE +# CRC: 90d0bfa6 diff --git a/ipcore_dir/fifo.xco.bak b/ipcore_dir/fifo.xco.bak new file mode 100644 index 0000000000000000000000000000000000000000..9c23d2fb0345a6952bad34ad7dbb13ca55e53cd3 --- /dev/null +++ b/ipcore_dir/fifo.xco.bak @@ -0,0 +1,84 @@ +############################################################## +# +# Xilinx Core Generator version 12.2 +# Date: Mon May 28 18:27:00 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = VHDL +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Foundation_ISE +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = fg320 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -4 +SET verilogsim = true +SET vhdlsim = true +# END Project Options +# BEGIN Select +SELECT Fifo_Generator family Xilinx,_Inc. 6.2 +# END Select +# BEGIN Parameters +CSET almost_empty_flag=false +CSET almost_full_flag=true +CSET component_name=fifo +CSET data_count=false +CSET data_count_width=12 +CSET disable_timing_violations=false +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_negate_value=3 +CSET enable_ecc=false +CSET enable_int_clk=false +CSET enable_reset_synchronization=true +CSET fifo_implementation=Independent_Clocks_Block_RAM +CSET full_flags_reset_value=1 +CSET full_threshold_assert_value=2048 +CSET full_threshold_negate_value=2047 +CSET inject_dbit_error=false +CSET inject_sbit_error=false +CSET input_data_width=32 +CSET input_depth=4096 +CSET output_data_width=8 +CSET output_depth=16384 +CSET overflow_flag=false +CSET overflow_sense=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_full_type=Single_Programmable_Full_Threshold_Constant +CSET read_clock_frequency=1 +CSET read_data_count=true +CSET read_data_count_width=14 +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET underflow_flag=false +CSET underflow_sense=Active_High +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=false +CSET valid_sense=Active_High +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=true +CSET write_data_count_width=12 +# END Parameters +GENERATE +# CRC: 9f6cdb39 diff --git a/ipcore_dir/fifo.xise b/ipcore_dir/fifo.xise new file mode 100644 index 0000000000000000000000000000000000000000..6b3fea56882739160672a8f1577cd36562834cfa --- /dev/null +++ b/ipcore_dir/fifo.xise @@ -0,0 +1,386 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema"> + + <header> + <!-- ISE source project file created by Project Navigator. --> + <!-- --> + <!-- This file contains project source information including a list of --> + <!-- project source files, project and process properties. This file, --> + <!-- along with the project source files, is sufficient to open and --> + <!-- implement in ISE Project Navigator. --> + <!-- --> + <!-- Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. --> + </header> + + <version xil_pn:ise_version="14.3" xil_pn:schema_version="2"/> + + <files> + <file xil_pn:name="fifo.ngc" xil_pn:type="FILE_NGC"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="2"/> + <association xil_pn:name="Implementation" xil_pn:seqID="2"/> + </file> + <file xil_pn:name="fifo.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="4"/> + <association xil_pn:name="Implementation" xil_pn:seqID="4"/> + <association xil_pn:name="PostMapSimulation" xil_pn:seqID="4"/> + <association xil_pn:name="PostRouteSimulation" xil_pn:seqID="4"/> + <association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="4"/> + </file> + </files> + + <properties> + <property xil_pn:name="AES Initial Vector virtex6" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="AES Key (Hex String) virtex6" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Add I/O Buffers" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Logic Optimization Across Hierarchy" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow SelectMAP Pins to Persist" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Unexpanded Blocks" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Unmatched LOC Constraints" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Unmatched Timing Group Constraints" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Analysis Effort Level" xil_pn:value="Standard" xil_pn:valueState="default"/> + <property xil_pn:name="Asynchronous To Synchronous" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Auto Implementation Compile Order" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Auto Implementation Top" xil_pn:value="false" xil_pn:valueState="non-default"/> + <property xil_pn:name="Automatic BRAM Packing" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Automatically Insert glbl Module in the Netlist" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Automatically Run Generate Target PROM/ACE File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="BPI Reads Per Page" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="BPI Sync Mode" xil_pn:value="Disable" xil_pn:valueState="default"/> + <property xil_pn:name="BRAM Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Bring Out Global Set/Reset Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Bring Out Global Tristate Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Bus Delimiter" xil_pn:value="<>" xil_pn:valueState="default"/> + <property xil_pn:name="CLB Pack Factor Percentage" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Case" xil_pn:value="Maintain" xil_pn:valueState="default"/> + <property xil_pn:name="Case Implementation Style" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Change Device Speed To" xil_pn:value="-4" xil_pn:valueState="default"/> + <property xil_pn:name="Change Device Speed To Post Trace" xil_pn:value="-4" xil_pn:valueState="default"/> + <property xil_pn:name="Combinatorial Logic Optimization" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Compile EDK Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile SIMPRIM (Timing) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile UNISIM (Functional) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile XilinxCoreLib (CORE Generator) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile for HDL Debugging" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Clk (Configuration Pins)" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin Done" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin Init" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin M0" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin M1" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin M2" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin Program" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Rate" xil_pn:value="Default (1)" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Rate virtex5" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Correlate Output to Input Design" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create ASCII Configuration File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Binary Configuration File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Bit File" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Create I/O Pads from Ports" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create IEEE 1532 Configuration File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Logic Allocation File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Mask File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create ReadBack Data Files" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Cross Clock Analysis" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Cycles for First BPI Page Read" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="DCI Update Mode" xil_pn:value="As Required" xil_pn:valueState="default"/> + <property xil_pn:name="DSP Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Decoder Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Delay Values To Be Read from SDF" xil_pn:value="Setup Time" xil_pn:valueState="default"/> + <property xil_pn:name="Device" xil_pn:value="xc3s500e" xil_pn:valueState="non-default"/> + <property xil_pn:name="Device Family" xil_pn:value="Spartan3E" xil_pn:valueState="non-default"/> + <property xil_pn:name="Device Speed Grade/Select ABS Minimum" xil_pn:value="-4" xil_pn:valueState="default"/> + <property xil_pn:name="Disable Detailed Package Model Insertion" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Disable JTAG Connection" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Do Not Escape Signal and Instance Names in Netlist" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Done (Output Events)" xil_pn:value="Default (4)" xil_pn:valueState="default"/> + <property xil_pn:name="Drive Done Pin High" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable BitStream Compression" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Cyclic Redundancy Checking (CRC)" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Debugging of Serial Mode BitStream" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable External Master Clock" xil_pn:value="Disable" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Internal Done Pipe" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Message Filtering" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Multi-Threading" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Multi-Threading par virtex5" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Outputs (Output Events)" xil_pn:value="Default (5)" xil_pn:valueState="default"/> + <property xil_pn:name="Encrypt Bitstream virtex6" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Encrypt Key Select virtex6" xil_pn:value="BBRAM" xil_pn:valueState="default"/> + <property xil_pn:name="Equivalent Register Removal XST" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Evaluation Development Board" xil_pn:value="None Specified" xil_pn:valueState="default"/> + <property xil_pn:name="Exclude Compilation of Deprecated EDK Cores" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Exclude Compilation of EDK Sub-Libraries" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Extra Cost Tables Map virtex6" xil_pn:value="0" xil_pn:valueState="default"/> + <property xil_pn:name="Extra Effort" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Extra Effort (Highest PAR level only)" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="FPGA Start-Up Clock" xil_pn:value="CCLK" xil_pn:valueState="default"/> + <property xil_pn:name="FSM Encoding Algorithm" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="FSM Style" xil_pn:value="LUT" xil_pn:valueState="default"/> + <property xil_pn:name="Fallback Reconfiguration virtex7" xil_pn:value="Disable" xil_pn:valueState="default"/> + <property xil_pn:name="Filter Files From Compile Order" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Flatten Output Netlist" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Functional Model Target Language ArchWiz" xil_pn:value="Verilog" xil_pn:valueState="default"/> + <property xil_pn:name="Functional Model Target Language Coregen" xil_pn:value="Verilog" xil_pn:valueState="default"/> + <property xil_pn:name="Functional Model Target Language Schematic" xil_pn:value="Verilog" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Architecture Only (No Entity Declaration)" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Asynchronous Delay Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Clock Region Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Constraints Interaction Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Constraints Interaction Report Post Trace" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Datasheet Section" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Datasheet Section Post Trace" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Detailed MAP Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Multiple Hierarchical Netlist Files" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Post-Place & Route Power Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Post-Place & Route Simulation Model" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate RTL Schematic" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Generate SAIF File for Power Optimization/Estimation Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Testbench File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Timegroups Section" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Timegroups Section Post Trace" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generics, Parameters" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Global Optimization Goal" xil_pn:value="AllClockNets" xil_pn:valueState="default"/> + <property xil_pn:name="Global Optimization map virtex5" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Global Set/Reset Port Name" xil_pn:value="GSR_PORT" xil_pn:valueState="default"/> + <property xil_pn:name="Global Tristate Port Name" xil_pn:value="GTS_PORT" xil_pn:valueState="default"/> + <property xil_pn:name="HMAC Key (Hex String)" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Hierarchy Separator" xil_pn:value="/" xil_pn:valueState="default"/> + <property xil_pn:name="ICAP Select" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="ISim UUT Instance Name" xil_pn:value="UUT" xil_pn:valueState="default"/> + <property xil_pn:name="Ignore User Timing Constraints Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Ignore User Timing Constraints Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Implementation Stop View" xil_pn:value="Structural" xil_pn:valueState="non-default"/> + <property xil_pn:name="Implementation Top" xil_pn:value="Architecture|fifo|fifo_a" xil_pn:valueState="non-default"/> + <property xil_pn:name="Implementation Top File" xil_pn:value="fifo.vhd" xil_pn:valueState="non-default"/> + <property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/fifo" xil_pn:valueState="non-default"/> + <property xil_pn:name="Include 'uselib Directive in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Include SIMPRIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Include UNISIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Include sdf_annotate task in Verilog File" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Incremental Compilation" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Insert Buffers to Prevent Pulse Swallowing" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Instantiation Template Target Language Xps" xil_pn:value="Verilog" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TCK" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TDI" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TDO" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TMS" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG to XADC Connection" xil_pn:value="Enable" xil_pn:valueState="default"/> + <property xil_pn:name="Keep Hierarchy" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="LUT Combining Map" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="LUT Combining Xst" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Language" xil_pn:value="VHDL" xil_pn:valueState="default"/> + <property xil_pn:name="Launch SDK after Export" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Library for Verilog Sources" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Load glbl" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Logical Shifter Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Manual Implementation Compile Order" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Map Effort Level" xil_pn:value="High" xil_pn:valueState="default"/> + <property xil_pn:name="Map Slice Logic into Unused Block RAMs" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Max Fanout" xil_pn:value="100000" xil_pn:valueState="default"/> + <property xil_pn:name="Maximum Compression" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Maximum Number of Lines in Report" xil_pn:value="1000" xil_pn:valueState="default"/> + <property xil_pn:name="Maximum Signal Name Length" xil_pn:value="20" xil_pn:valueState="default"/> + <property xil_pn:name="Move First Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Move Last Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="MultiBoot: Insert IPROG CMD in the Bitfile virtex7" xil_pn:value="Enable" xil_pn:valueState="default"/> + <property xil_pn:name="Multiplier Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Mux Extraction" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Mux Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Netlist Hierarchy" xil_pn:value="As Optimized" xil_pn:valueState="default"/> + <property xil_pn:name="Netlist Translation Type" xil_pn:value="Timestamp" xil_pn:valueState="default"/> + <property xil_pn:name="Number of Clock Buffers" xil_pn:value="32" xil_pn:valueState="default"/> + <property xil_pn:name="Number of Paths in Error/Verbose Report" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Number of Paths in Error/Verbose Report Post Trace" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Optimization Effort" xil_pn:value="Normal" xil_pn:valueState="default"/> + <property xil_pn:name="Optimization Effort virtex6" xil_pn:value="Normal" xil_pn:valueState="default"/> + <property xil_pn:name="Optimization Goal" xil_pn:value="Speed" xil_pn:valueState="default"/> + <property xil_pn:name="Optimization Strategy (Cover Mode)" xil_pn:value="Area" xil_pn:valueState="default"/> + <property xil_pn:name="Optimize Instantiated Primitives" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Other Bitgen Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options Map" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options Par" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options Translate" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compxlib Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Map Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other NETGEN Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Ngdbuild Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Place & Route Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Behavioral" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Post-Map" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Post-Route" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Post-Translate" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other XPWR Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other XST Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Output Extended Identifiers" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Output File Name" xil_pn:value="fifo" xil_pn:valueState="default"/> + <property xil_pn:name="Overwrite Compiled Libraries" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Pack I/O Registers into IOBs" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Pack I/O Registers/Latches into IOBs" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Package" xil_pn:value="fg320" xil_pn:valueState="non-default"/> + <property xil_pn:name="Perform Advanced Analysis" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Perform Advanced Analysis Post Trace" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Perform Timing-Driven Packing and Placement" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Place & Route Effort Level (Overall)" xil_pn:value="High" xil_pn:valueState="default"/> + <property xil_pn:name="Place And Route Mode" xil_pn:value="Normal Place and Route" xil_pn:valueState="default"/> + <property xil_pn:name="Place MultiBoot Settings into Bitstream virtex7" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Placer Effort Level (Overrides Overall Level)" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Placer Effort Level Map" xil_pn:value="High" xil_pn:valueState="default"/> + <property xil_pn:name="Placer Extra Effort Map" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Port to be used" xil_pn:value="Auto - default" xil_pn:valueState="default"/> + <property xil_pn:name="Post Map Simulation Model Name" xil_pn:value="fifo_map.v" xil_pn:valueState="default"/> + <property xil_pn:name="Post Place & Route Simulation Model Name" xil_pn:value="fifo_timesim.v" xil_pn:valueState="default"/> + <property xil_pn:name="Post Synthesis Simulation Model Name" xil_pn:value="fifo_synthesis.v" xil_pn:valueState="default"/> + <property xil_pn:name="Post Translate Simulation Model Name" xil_pn:value="fifo_translate.v" xil_pn:valueState="default"/> + <property xil_pn:name="Power Down Device if Over Safe Temperature" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Power Reduction Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Power Reduction Map virtex6" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Power Reduction Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Power Reduction Xst" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Preferred Language" xil_pn:value="Verilog" xil_pn:valueState="default"/> + <property xil_pn:name="Priority Encoder Extraction" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Produce Verbose Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Project Generator" xil_pn:value="CoreGen" xil_pn:valueState="non-default"/> + <property xil_pn:name="Property Specification in Project File" xil_pn:value="Store all values" xil_pn:valueState="default"/> + <property xil_pn:name="RAM Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="RAM Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="ROM Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="ROM Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Read Cores" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Reduce Control Sets" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Regenerate Core" xil_pn:value="Under Current Project Setting" xil_pn:valueState="default"/> + <property xil_pn:name="Register Balancing" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="Register Duplication" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Register Duplication Map" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Register Duplication Xst" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Register Ordering virtex6" xil_pn:value="4" xil_pn:valueState="default"/> + <property xil_pn:name="Release Write Enable (Output Events)" xil_pn:value="Default (6)" xil_pn:valueState="default"/> + <property xil_pn:name="Rename Design Instance in Testbench File to" xil_pn:value="UUT" xil_pn:valueState="default"/> + <property xil_pn:name="Rename Top Level Architecture To" xil_pn:value="Structure" xil_pn:valueState="default"/> + <property xil_pn:name="Rename Top Level Entity to" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Rename Top Level Module To" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Report Fastest Path(s) in Each Constraint" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Report Fastest Path(s) in Each Constraint Post Trace" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Report Paths by Endpoint" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Report Paths by Endpoint Post Trace" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Report Type" xil_pn:value="Verbose Report" xil_pn:valueState="default"/> + <property xil_pn:name="Report Type Post Trace" xil_pn:value="Verbose Report" xil_pn:valueState="default"/> + <property xil_pn:name="Report Unconstrained Paths" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Report Unconstrained Paths Post Trace" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Reset DCM if SHUTDOWN & AGHIGH performed" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Reset On Configuration Pulse Width" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Resource Sharing" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Retain Hierarchy" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Revision Select" xil_pn:value="00" xil_pn:valueState="default"/> + <property xil_pn:name="Revision Select Tristate" xil_pn:value="Disable" xil_pn:valueState="default"/> + <property xil_pn:name="Router Effort Level (Overrides Overall Level)" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Run Design Rules Checker (DRC)" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time Map" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time Par" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time Translate" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="SPI 32-bit Addressing" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="Safe Implementation" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="Security" xil_pn:value="Enable Readback and Reconfiguration" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Behavioral" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Post-Map" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Post-Route" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Post-Translate" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Source Node" xil_pn:value="UUT" xil_pn:valueState="default"/> + <property xil_pn:name="Set SPI Configuration Bus Width" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="Shift Register Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Shift Register Minimum Size virtex6" xil_pn:value="2" xil_pn:valueState="default"/> + <property xil_pn:name="Show All Models" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Model Target" xil_pn:value="Verilog" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time ISim" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time Map" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time Par" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time Translate" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)" xil_pn:valueState="default"/> + <property xil_pn:name="Slice Packing" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Slice Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Specify 'define Macro Name and Value" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Behavioral" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Post-Map" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Post-Route" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Post-Translate" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Speed Grade" xil_pn:value="-4" xil_pn:valueState="non-default"/> + <property xil_pn:name="Starting Address for Fallback Configuration virtex7" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Starting Placer Cost Table (1-100)" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="Starting Placer Cost Table (1-100) Map" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="Starting Placer Cost Table (1-100) Par" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)" xil_pn:valueState="default"/> + <property xil_pn:name="Target Simulator" xil_pn:value="Please Specify" xil_pn:valueState="default"/> + <property xil_pn:name="Timing Mode Map" xil_pn:value="Non Timing Driven" xil_pn:valueState="default"/> + <property xil_pn:name="Timing Mode Par" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/> + <property xil_pn:name="Top-Level Module Name in Output Netlist" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL" xil_pn:valueState="default"/> + <property xil_pn:name="Trim Unconnected Signals" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Tristate On Configuration Pulse Width" xil_pn:value="0" xil_pn:valueState="default"/> + <property xil_pn:name="Unused IOB Pins" xil_pn:value="Pull Down" xil_pn:valueState="default"/> + <property xil_pn:name="Use 64-bit PlanAhead on 64-bit Systems" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Use Clock Enable" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Post-Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Post-Route" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Post-Translate" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Translate" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Behav" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Translate" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use DSP Block" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Use LOC Constraints" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Use RLOC Constraints" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use SPI Falling Edge" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="Use Smart Guide" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Synchronous Reset" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use Synchronous Set" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use Synthesis Constraints File" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="User Access Register Value" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="UserID Code (8 Digit Hexadecimal)" xil_pn:value="0xFFFFFFFF" xil_pn:valueState="default"/> + <property xil_pn:name="VHDL Source Analysis Standard" xil_pn:value="VHDL-93" xil_pn:valueState="default"/> + <property xil_pn:name="Value Range Check" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Verilog 2001 Xst" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Verilog Macros" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Wait for DCI Match (Output Events) virtex5" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Wait for DLL Lock (Output Events)" xil_pn:value="Default (NoWait)" xil_pn:valueState="default"/> + <property xil_pn:name="Wait for PLL Lock (Output Events) virtex6" xil_pn:value="No Wait" xil_pn:valueState="default"/> + <property xil_pn:name="Watchdog Timer Mode 7-series" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Watchdog Timer Value 7-series" xil_pn:value="0x00000000" xil_pn:valueState="default"/> + <property xil_pn:name="Working Directory" xil_pn:value="." xil_pn:valueState="default"/> + <property xil_pn:name="Write Timing Constraints" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="XOR Collapsing" xil_pn:value="true" xil_pn:valueState="default"/> + <!-- --> + <!-- The following properties are for internal use only. These should not be modified.--> + <!-- --> + <property xil_pn:name="PROP_BehavioralSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_DesignName" xil_pn:value="fifo" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan3e" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_FPGAConfiguration" xil_pn:value="FPGAConfiguration" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostMapSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostParSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostSynthSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostXlateSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PreSynthesis" xil_pn:value="PreSynthesis" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2013-11-14T13:01:32" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="53468C5E4BE340C8CFB2C65918BD7686" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/> + </properties> + + <bindings/> + + <libraries/> + + <autoManagedFiles> + <!-- The following files are identified by `include statements in verilog --> + <!-- source files and are automatically managed by Project Navigator. --> + <!-- --> + <!-- Do not hand-edit this section, as it will be overwritten when the --> + <!-- project is analyzed based on files automatically identified as --> + <!-- include files. --> + </autoManagedFiles> + +</project> diff --git a/ipcore_dir/fifo_flist.txt b/ipcore_dir/fifo_flist.txt new file mode 100644 index 0000000000000000000000000000000000000000..9434e50ce3b59c87e19edd71fea444c3421181d2 --- /dev/null +++ b/ipcore_dir/fifo_flist.txt @@ -0,0 +1,14 @@ +# Output products list for <fifo> +_xmsgs/pn_parser.xmsgs +fifo.asy +fifo.gise +fifo.ngc +fifo.sym +fifo.vhd +fifo.vho +fifo.xco +fifo.xise +fifo_flist.txt +fifo_generator_readme.txt +fifo_generator_ug175.pdf +fifo_xmdf.tcl diff --git a/ipcore_dir/fifo_generator_readme.txt b/ipcore_dir/fifo_generator_readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..2673d68cf726dbf19b25910720782e7d12bff3c6 --- /dev/null +++ b/ipcore_dir/fifo_generator_readme.txt @@ -0,0 +1,165 @@ + Core Name: Xilinx LogiCORE FIFO Generator + Version: 6.2 + Release Date: July 23, 2010 + + +================================================================================ + +This document contains the following sections: + +1. Introduction +2. New Features +3. Supported Devices +4. Resolved Issues +5. Known Issues +6. Technical Support +7. Core Release History +8. Legal Disclaimer + +================================================================================ + +1. INTRODUCTION + +For the most recent updates to the IP installation instructions for this core, +please go to: + + http://www.xilinx.com/products/ipcenter/FIFO_Generator.htm + + +For system requirements: + + http://www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm + + +This file contains release notes for the Xilinx LogiCORE IP FIFO Generator v6.2 +solution. For the latest core updates, see the product page at: + + http://www.xilinx.com/products/ipcenter/FIFO_Generator.htm + + +2. NEW FEATURES + + - ISE 12.2 software support + +3. SUPPORTED DEVICES + + - SPARTAN-3, SPARTAN-3 XA, SPARTAN-3E SPARTAN-3E XA, SPARTAN-3A, SPARTAN-3A XA, SPARTAN-3ADSP, SPARTAN-3ADSP XA + - SPARTAN-6, SPARTAN-6 XA, SPARTAN-6L and QSPARTAN-6 + - VIRTEX-4 + - VIRTEX-5 and QVIRTEX-5 + - VIRTEX-6, VIRTEX-6L and QVIRTEX-6 + +4. RESOLVED ISSUES + + - In the FIFO Generator core, PROG_FULL does not assert when set to maximum threshold value. + - Version fixed: v6.2 + - CR 553279 + + - In the FIFO Generator verilog behavioral model, PROG_EMPTY does not assert/de-assert when the threshold + value is passed through parameter. + - Version fixed: v6.2 + - CR 549673 + + - In the FIFO Generator GUI, read width is reset to write width when the component name is change. + - Version fixed: v6.2 + - CR 563827 + +5. KNOWN ISSUES + + The following are known issues for v6.2 of this core at time of release: + + - In the FIFO generator GUI, after importing an XCO file (Independent clock, distributed memory configuration) + into a Virtex-4 coregen project, if the FIFO type is changed to "Independent Clocks, Built-in FIFO" in page 1, + page 2 does not correctly offer the Read Clock Frequency and Write Clock Frequency options as it should. + - CR 467240 + - AR 31379 + + The most recent information, including known issues, workarounds, and + resolutions for this version is provided in the IP Release Notes User Guide + located at + + www.xilinx.com/support/documentation/user_guides/xtp025.pdf + + +6. TECHNICAL SUPPORT + + To obtain technical support, create a WebCase at www.xilinx.com/support. + Questions are routed to a team with expertise using this product. + + Xilinx provides technical support for use of this product when used + according to the guidelines described in the core documentation, and + cannot guarantee timing, functionality, or support of this product for + designs that do not follow specified guidelines. + +7. CORE RELEASE HISTORY + +Date By Version Description +================================================================================ +07/23/2010 Xilinx, Inc. 6.2 ISE 12.2 support +04/19/2010 Xilinx, Inc. 6.1 ISE 12.1 support +12/02/2009 Xilinx, Inc. 5.3 rev 1 ISE 11.4 support; Spartan-6 Low Power and Automotive Spartan-6 Device support +09/16/2009 Xilinx, Inc. 5.3 Update to add 11.3; Virtex-6 Low Power and Virtex-6 HXT Device support +06/24/2009 Xilinx, Inc. 5.2 Update to add 11.2 and Virtex-6 CXT device support +04/24/2009 Xilinx, Inc. 5.1 Update to add 11.1 and Virtex-6 and Spartan-6 device support +09/19/2008 Xilinx, Inc. 4.4 Update to add 10.1 SP3 and Virtex-5 TXT device support and miscellaneous bug fixes +03/24/2008 Xilinx, Inc. 4.3 Update to add 10.1 support and miscellaneous bug fixes +10/03/2007 Xilinx, Inc. 4.2 Support for FWFT for Block RAM and Distributed RAM Common Clock FIFOs +08/08/2007 Xilinx, Inc. 4.1 Update to add 9.2i support; Revised to v4.1; ECC support for block RAM FIFO +04/02/2007 Xilinx, Inc. 3.3 Update to add 9.1i support; Revised to v3.3; Spartan-3A and Spartan-3A DSP support; ECC support +09/21/2006 Xilinx, Inc. 3.2 Revised to v3.2; Spartan-3 and Virtex-4 automotive device support +07/13/2006 Xilinx, Inc. 3.1 Update to add 8.2i support; Revised to v3.1; Virtex-5 support +01/11/2006 Xilinx, Inc. 2.3 Update to add 8.1i support; Revised to v2.3 +08/31/2005 Xilinx, Inc. 2.2 Update to add 7.1i SP4 support; Revised to v2.2 +04/28/2005 Xilinx, Inc. 2.1 Update to add 7.1i SP1 support; Revised to v2.1 +11/04/2004 Xilinx, Inc. 2.0 Update to add 6.3i support; Revised to v2.0 +05/21/2004 Xilinx, Inc. 1.1 Revised to v1.1; Virtex-4 support +04/23/2004 Xilinx, Inc. 1.0 Update to add 6.2i support; First release +================================================================================ + +8. Legal Disclaimer + + (c) Copyright 2002 - 2010 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. diff --git a/ipcore_dir/fifo_generator_ug175.pdf b/ipcore_dir/fifo_generator_ug175.pdf new file mode 100644 index 0000000000000000000000000000000000000000..41d1edbd8e617b19b88fd40792b80b94904b81f8 Binary files /dev/null and b/ipcore_dir/fifo_generator_ug175.pdf differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject new file mode 100755 index 0000000000000000000000000000000000000000..f325f8ad31f569ea0dbfc584ce7227a9d1e67199 Binary files /dev/null and b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject_StrTbl b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject_StrTbl new file mode 100755 index 0000000000000000000000000000000000000000..14d34bff2da4a444695bf6838581669318506506 Binary files /dev/null and b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject_StrTbl differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/__stored_object_table__ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/__stored_object_table__ new file mode 100755 index 0000000000000000000000000000000000000000..0af2e0ddbb594ee08a576c7a21623f95b7aee5eb Binary files /dev/null and b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/__stored_object_table__ differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl new file mode 100755 index 0000000000000000000000000000000000000000..8947873d0af86aefd32bad2f1c40d57033091203 Binary files /dev/null and b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl_StrTbl b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl_StrTbl new file mode 100755 index 0000000000000000000000000000000000000000..bb5db76f3ae2c75d892380f4fc856a72878db7a3 Binary files /dev/null and b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl_StrTbl differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main new file mode 100755 index 0000000000000000000000000000000000000000..336370f8091a49f5e89f82fedc83a9ed04bd24ac Binary files /dev/null and b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main_StrTbl b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main_StrTbl new file mode 100755 index 0000000000000000000000000000000000000000..359501c5e254de720bb0edd97879dcdaa4c50d01 Binary files /dev/null and b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main_StrTbl differ diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/Autonym/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/Autonym/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/HierarchicalDesign/HDProject/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/HierarchicalDesign/HDProject/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..0da60f585c8e63f1c8bc8e9a88912068ea14aac9 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/HierarchicalDesign/HDProject/regkeys @@ -0,0 +1,24 @@ +CommandLine-Map + +s +CommandLine-Ngdbuild + +s +CommandLine-Par + +s +CommandLine-Xst + +s +Previous-NGD + +s +Previous-NGM + +s +Previous-Packed-NCD + +s +Previous-Routed-NCD + +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ProjectNavigator/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ProjectNavigator/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..4bd7af1202fe894f7abaa2c1d1c6cc54b5afd0f9 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ProjectNavigator/regkeys @@ -0,0 +1,3 @@ +ISE_VERSION_LAST_SAVED_WITH +11.1 +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ProjectNavigator11/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ProjectNavigator11/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..e601c6592a5d70f5bab65676b1688147619f0442 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ProjectNavigator11/regkeys @@ -0,0 +1,6 @@ +ISE_VERSION_LAST_SAVED_WITH +11.1 +s +XISE_FILE +fifo_usb_if.xise +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/XSLTProcess/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/XSLTProcess/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..87cda855f52d5c1d8c4cf3b222f5fc91395deabd --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/XSLTProcess/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/XSLTProcess.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/_ProjRepoInternal_/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/_ProjRepoInternal_/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..cc2027370beed213f201089e9b82fe003fbf430f --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/_ProjRepoInternal_/regkeys @@ -0,0 +1,21 @@ +ISE_VERSION_CREATED_WITH +11.1 +s +ISE_VERSION_LAST_SAVED_WITH +11.1 +s +LastRepoDir +/home/user/Desktop/Exercises/ex3/cores/ +s +OBJSTORE_VERSION +1.3 +s +PROJECT_CREATION_TIMESTAMP +2010-01-08T17:34:04 +s +REGISTRY_VERSION +1.1 +s +REPOSITORY_VERSION +1.1 +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/bitgen/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/bitgen/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..949818c6173b8ce5e9d4b93e851e4c0f64657fe9 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/bitgen/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/bitgen.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/bitinit/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/bitinit/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..dae1ec74d536e8b6ae6e1a29d28bdcd78c3e7ee5 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/bitinit/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/bitinit.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/common/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/common/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..74ed1c738a0565c983c80a76893144e7abb9cf4b --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/common/regkeys @@ -0,0 +1,15 @@ +IncrementalMessagingEnabled +false +s +MessageCaptureEnabled +true +s +MessageFilterFile +filter.filter +s +MessageFilteringEnabled +false +s +RunOnce +#/PnAutoRun/Scripts/RunOnce_tcl +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/cpldfit/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/cpldfit/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..f3969b3ea31a7283bec62ee261313ee804cc54da --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/cpldfit/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/cpldfit.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/dumpngdio/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/dumpngdio/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..7e5b4bbcd932c916fb0cfcf3153fd89c1b5cbdff --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/dumpngdio/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/dumpngdio.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/fuse/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/fuse/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..77fa32d329a760d0169afa6384370ea7d96fb039 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/fuse/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/fuse.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/hprep6/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/hprep6/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..e654ecd77a8e5e4966d7a4cc0aac0042c459a0e9 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/hprep6/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/hprep6.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/idem/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/idem/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..7b9c3214a381805dc8280d63d42766c95930b413 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/idem/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/idem.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/libgen/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/libgen/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..a2612daebe24fdb30cd49cab9cc3bd804690020f --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/libgen/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/libgen.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/map/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/map/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..447e64cb99dc993d35825b59e1e3740f18b58047 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/map/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/map.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/netgen/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/netgen/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..b15e57f97069887b6146116e3f311be4c0891897 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/netgen/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/netgen.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngc2edif/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngc2edif/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..2cb66e46713129324a454c5a942d2f58dda668fa --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngc2edif/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/ngc2edif.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngcbuild/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngcbuild/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..af67ad186490cb865eb5c27e917baef8ef7b0161 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngcbuild/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/ngcbuild.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngdbuild/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngdbuild/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..47ac460f454b683bc1f6a3cebec1dec5dded3a12 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/ngdbuild/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/ngdbuild.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/par/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/par/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..17ae8fbf3d23a1755dbbcddf5b0f80b431810f3c --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/par/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/par.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/platgen/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/platgen/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..d4497d267ef30d4e8dc572dbf790398384941bde --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/platgen/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/platgen.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/runner/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/runner/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..d5e13d0a74829a0d04658eaf3069ba0eed7513f8 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/runner/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/runner.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/simgen/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/simgen/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..e12ea3860cc65a0e7eeb98cf408bc948e8eb3570 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/simgen/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/simgen.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/taengine/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/taengine/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..fc0b03832461e292dbcc59f63e53c08b0ccd7e88 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/taengine/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/taengine.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/trce/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/trce/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..cffe0cfaa0da97851004e7b0cb4db089359d4a7a --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/trce/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/trce.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/tsim/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/tsim/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..52a3e8bb03df53849110d0339e4627aad9e4cb87 --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/tsim/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/tsim.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/vhpcomp/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/vhpcomp/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..2d5cd6a1f4841ecb01eb66928a2d962e85133b0b --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/vhpcomp/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/vhpcomp.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/vlogcomp/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/vlogcomp/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..9a5c2fab9fd3cc3818aba30b4b94c70847b276ae --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/vlogcomp/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/vlogcomp.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/xpwr/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/xpwr/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..c3f895c39258a3e76af83f8c9ede327b4a16bbed --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/xpwr/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/xpwr.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/xst/regkeys b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/xst/regkeys new file mode 100755 index 0000000000000000000000000000000000000000..5b1ae90bb071a319d979fa5110bfe2355239899d --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/__REGISTRY__/xst/regkeys @@ -0,0 +1,3 @@ +ClientMessageOutputFile +_xmsgs/xst.xmsgs +s diff --git a/ipcore_dir/fifo_usb_if_xdb/tmp/ise/version b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/version new file mode 100755 index 0000000000000000000000000000000000000000..eec4d2283f3122acfbb37e90e50c290c5611c76d --- /dev/null +++ b/ipcore_dir/fifo_usb_if_xdb/tmp/ise/version @@ -0,0 +1,10 @@ +REPOSITORY_VERSION +1.1 +REGISTRY_VERSION +1.1 +OBJSTORE_VERSION +1.3 +ISE_VERSION_CREATED_WITH +11.1 +ISE_VERSION_LAST_SAVED_WITH +11.1 diff --git a/ipcore_dir/fifo_xmdf.tcl b/ipcore_dir/fifo_xmdf.tcl new file mode 100644 index 0000000000000000000000000000000000000000..2667b5776aad6be99e8d0697bd8ec0662614d816 --- /dev/null +++ b/ipcore_dir/fifo_xmdf.tcl @@ -0,0 +1,79 @@ +# The package naming convention is <core_name>_xmdf +package provide fifo_xmdf 1.0 + +# This includes some utilities that support common XMDF operations +package require utilities_xmdf + +# Define a namespace for this package. The name of the name space +# is <core_name>_xmdf +namespace eval ::fifo_xmdf { +# Use this to define any statics +} + +# Function called by client to rebuild the params and port arrays +# Optional when the use context does not require the param or ports +# arrays to be available. +proc ::fifo_xmdf::xmdfInit { instance } { +# Variable containing name of library into which module is compiled +# Recommendation: <module_name> +# Required +utilities_xmdf::xmdfSetData $instance Module Attributes Name fifo +} +# ::fifo_xmdf::xmdfInit + +# Function called by client to fill in all the xmdf* data variables +# based on the current settings of the parameters +proc ::fifo_xmdf::xmdfApplyParams { instance } { + +set fcount 0 +# Array containing libraries that are assumed to exist +# Examples include unisim and xilinxcorelib +# Optional +# In this example, we assume that the unisim library will +# be available to the simulation and synthesis tool +utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library +utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo.asy +utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo.ngc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo.sym +utilities_xmdf::xmdfSetData $instance FileSet $fcount type symbol +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo.vho +utilities_xmdf::xmdfSetData $instance FileSet $fcount type vhdl_template +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo.xco +utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_generator_readme.txt +utilities_xmdf::xmdfSetData $instance FileSet $fcount type text +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_generator_ug175.pdf +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path fifo_xmdf.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module fifo +incr fcount + +} + +# ::gen_comp_name_xmdf::xmdfApplyParams diff --git a/ipcore_dir/iseconfig/fifo_usb_if.projectmgr b/ipcore_dir/iseconfig/fifo_usb_if.projectmgr new file mode 100755 index 0000000000000000000000000000000000000000..158f41fab59e39f04928999e58418f8d67c39b2a --- /dev/null +++ b/ipcore_dir/iseconfig/fifo_usb_if.projectmgr @@ -0,0 +1,103 @@ +<?xml version='1.0' encoding='utf-8'?> +<!--This is an ISE project configuration file.--> +<!--It holds project specific layout data for the projectmgr plugin.--> +<!--Copyright (c) 1995-2009 Xilinx, Inc. All rights reserved.--> +<Project version="1" owner="projectmgr" name="fifo_usb_if" > + <!--This is an ISE project configuration file.--> + <ItemView engineview="SynthesisOnly" guiview="Source" compilemode="AutoCompile" > + <ClosedNodes/> + <SelectedItems> + <SelectedItem>fifo_usb_if - fifo_usb_if_a (E:/Ejemplos_VHDL/Exercises/ex3/cores/fifo_usb_if.vhd)</SelectedItem> + </SelectedItems> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000202000000010000000100000064000001fd000000020000000000000000000000000000000064ffffffff000000810000000000000002000001fd0000000100000000000000000000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem>fifo_usb_if - fifo_usb_if_a (E:/Ejemplos_VHDL/Exercises/ex3/cores/fifo_usb_if.vhd)</CurrentItem> + </ItemView> + <ItemView engineview="SynthesisOnly" sourcetype="DESUT_NGC" guiview="Process" > + <ClosedNodes/> + <SelectedItems> + <SelectedItem>Add Existing Source</SelectedItem> + </SelectedItems> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem>Add Existing Source</CurrentItem> + </ItemView> + <ItemView guiview="File" > + <ClosedNodes/> + <SelectedItems/> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff0000000000000001000000000000000001000000000000000000000000000000000000028e000000040101000100000000000000000000000064ffffffff000000810000000000000004000001240000000100000000000000440000000100000000000000660000000100000000000000c00000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem>E:\Ejemplos_VHDL\Exercises\ex3\cores\fifo_usb_if.ngc</CurrentItem> + </ItemView> + <ItemView guiview="Library" > + <ClosedNodes> + <ClosedNode>work</ClosedNode> + </ClosedNodes> + <SelectedItems/> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000000000000010000000000000000000000000000000000000109000000010001000100000000000000000000000064ffffffff000000810000000000000001000001090000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem>work</CurrentItem> + </ItemView> + <ItemView engineview="SynthesisOnly" sourcetype="DESUT_VHDL_ARCHITECTURE" guiview="Process" > + <ClosedNodes> + <ClosedNode>Configure Target Device</ClosedNode> + <ClosedNode>Design Utilities</ClosedNode> + <ClosedNode>Implement Design</ClosedNode> + <ClosedNode>Synthesize - XST</ClosedNode> + <ClosedNode>User Constraints</ClosedNode> + </ClosedNodes> + <SelectedItems> + <SelectedItem>Add Existing Source</SelectedItem> + </SelectedItems> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000100000000000000000000000000000000000000000000000064000000010000000100000000000000000000000064ffffffff000000810000000000000001000000640000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem>Add Existing Source</CurrentItem> + </ItemView> + <SourceProcessView>000000ff00000000000000020000011b0000011b01000000050100000002</SourceProcessView> + <CurrentView>Behavioral Simulation</CurrentView> + <ItemView engineview="BehavioralSim" guiview="Source" compilemode="AutoCompile" > + <ClosedNodes/> + <SelectedItems> + <SelectedItem>fifo_usb_if - fifo_usb_if_a (E:/Ejemplos_VHDL/Exercises/ex3/cores/fifo_usb_if.vhd)</SelectedItem> + </SelectedItems> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff0000000000000001000000010000000000000000000000000000000002020000000100000001000000640000023c000000020000000000000000000000000000000064ffffffff0000008100000000000000020000023c0000000100000000000000000000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem>fifo_usb_if - fifo_usb_if_a (E:/Ejemplos_VHDL/Exercises/ex3/cores/fifo_usb_if.vhd)</CurrentItem> + </ItemView> + <ItemView engineview="BehavioralSim" sourcetype="" guiview="Process" > + <ClosedNodes> + <ClosedNode>Design Utilities</ClosedNode> + </ClosedNodes> + <SelectedItems> + <SelectedItem></SelectedItem> + </SelectedItems> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000100000000000000000000000000000000000000000000000127000000010000000100000000000000000000000064ffffffff000000810000000000000001000001270000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem></CurrentItem> + </ItemView> + <ItemView engineview="BehavioralSim" sourcetype="DESUT_VHDL_ARCHITECTURE" guiview="Process" > + <ClosedNodes/> + <SelectedItems> + <SelectedItem>Behavioral Check Syntax</SelectedItem> + </SelectedItems> + <ScrollbarPosition orientation="vertical" >0</ScrollbarPosition> + <ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition> + <ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000100000000000000000000000000000000000000000000000127000000010000000100000000000000000000000064ffffffff000000810000000000000001000001270000000100000000</ViewHeaderState> + <UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths> + <CurrentItem>Behavioral Check Syntax</CurrentItem> + </ItemView> +</Project> diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/ISimEngine-DesignHierarchy.dbg b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/ISimEngine-DesignHierarchy.dbg new file mode 100755 index 0000000000000000000000000000000000000000..15682cd04ef3e924a9d1dbeb9953b647b6e6c91c Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/ISimEngine-DesignHierarchy.dbg differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/fifo_usb_if_isim_beh.exe b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/fifo_usb_if_isim_beh.exe new file mode 100755 index 0000000000000000000000000000000000000000..7d74ba36a38b096e2ac566830b20751306a04a49 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/fifo_usb_if_isim_beh.exe differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/isimcrash.log b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/isimcrash.log new file mode 100755 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/isimkernel.log b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/isimkernel.log new file mode 100755 index 0000000000000000000000000000000000000000..8f7b35227be3026ac1e308f8675e03759e83b67a --- /dev/null +++ b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/isimkernel.log @@ -0,0 +1,29 @@ +Command line: + fifo_usb_if_isim_beh.exe + -simmode gui + -simrunnum 0 + -socket 49568 + +Tue Sep 14 09:07:55 2010 + + + Elaboration Time: 0.0624 sec + + Current Memory Usage: 497.521 Meg + + Total Signals : 194 + Total Nets : 346 + Total Signal Drivers : 79 + Total Blocks : 25 + Total Primitive Blocks : 19 + Total Processes : 60 + Total Traceable Variables : 126 + Total Scalar Nets and Variables : 870 +Total Line Count : 254 + + Total Simulation Time: 0.0624 sec + + Current Memory Usage: 497.521 Meg + +Tue Sep 14 09:08:08 2010 + diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/libPortability.dll b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/libPortability.dll new file mode 100755 index 0000000000000000000000000000000000000000..680995e573d8e7ea2780bf0ba61288d0fa53add2 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/libPortability.dll differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/netId.dat b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/netId.dat new file mode 100755 index 0000000000000000000000000000000000000000..b9952409a17ad62a5e6783fcab07f3381f624c02 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/netId.dat differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/tmp_save/_1 b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/tmp_save/_1 new file mode 100755 index 0000000000000000000000000000000000000000..932f76685284229953b81ea70f5646d75f8ec021 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/tmp_save/_1 differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.c b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.c new file mode 100755 index 0000000000000000000000000000000000000000..95ddd4346d172f1c2f068159fd868273951eadca --- /dev/null +++ b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.c @@ -0,0 +1,31 @@ +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2009 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/***********************************************************************/ + +/* This file is designed for use with ISim build 0x7dea747 */ + +#define XSI_HIDE_SYMBOL_SPEC true +#include "xsi.h" +#include <memory.h> +#ifdef __GNUC__ +#include <stdlib.h> +#else +#include <malloc.h> +#define alloca _alloca +#endif + + + + +extern void work_a_1176593161_2718564866_init() +{ + xsi_register_didat("work_a_1176593161_2718564866", "isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.didat"); +} diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.didat b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.didat new file mode 100755 index 0000000000000000000000000000000000000000..17e2e66d402eefc0d998206b5ad997fb61cd72d4 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.didat differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.nt64.obj b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.nt64.obj new file mode 100755 index 0000000000000000000000000000000000000000..d0b5b8f8252cadbee9cc2bfed17efdcb2219c998 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/a_1176593161_2718564866.nt64.obj differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/fifo_usb_if_isim_beh.exe_main.c b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/fifo_usb_if_isim_beh.exe_main.c new file mode 100755 index 0000000000000000000000000000000000000000..a9c762015b156b5ad8ecd261a2a8fb879335cfc5 --- /dev/null +++ b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/fifo_usb_if_isim_beh.exe_main.c @@ -0,0 +1,48 @@ +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2009 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/***********************************************************************/ + +#include "xsi.h" + +struct XSI_INFO xsi_info; + +char *IEEE_P_2592010699; +char *STD_STANDARD; +char *IEEE_P_3499444699; +char *IEEE_P_3620187407; + + +int main(int argc, char **argv) +{ + xsi_init_design(argc, argv); + xsi_register_info(&xsi_info); + + xsi_register_min_prec_unit(-12); + ieee_p_2592010699_init(); + ieee_p_3499444699_init(); + ieee_p_3620187407_init(); + xilinxcorelib_a_4048593843_3212880686_init(); + xilinxcorelib_a_3173924170_3212880686_init(); + xilinxcorelib_a_1848741551_3212880686_init(); + work_a_1176593161_2718564866_init(); + + + xsi_register_tops("work_a_1176593161_2718564866"); + + IEEE_P_2592010699 = xsi_get_engine_memory("ieee_p_2592010699"); + xsi_register_ieee_std_logic_1164(IEEE_P_2592010699); + STD_STANDARD = xsi_get_engine_memory("std_standard"); + IEEE_P_3499444699 = xsi_get_engine_memory("ieee_p_3499444699"); + IEEE_P_3620187407 = xsi_get_engine_memory("ieee_p_3620187407"); + + return xsi_run_simulation(argc, argv); + +} diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/fifo_usb_if_isim_beh.exe_main.nt64.obj b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/fifo_usb_if_isim_beh.exe_main.nt64.obj new file mode 100755 index 0000000000000000000000000000000000000000..affe88d4e6be01b1ab0701e446505cb451be4926 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/work/fifo_usb_if_isim_beh.exe_main.nt64.obj differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.c b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.c new file mode 100755 index 0000000000000000000000000000000000000000..71180df03e7b984156c63169b8b5b7708155b440 --- /dev/null +++ b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.c @@ -0,0 +1,1090 @@ +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2009 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/***********************************************************************/ + +/* This file is designed for use with ISim build 0x7dea747 */ + +#define XSI_HIDE_SYMBOL_SPEC true +#include "xsi.h" +#include <memory.h> +#ifdef __GNUC__ +#include <stdlib.h> +#else +#include <malloc.h> +#define alloca _alloca +#endif +extern char *IEEE_P_2592010699; +extern char *STD_STANDARD; +static const char *ng2 = "Function int_2_std_logic_vector ended without a return statement"; + +unsigned char ieee_p_2592010699_sub_1605435078_2592010699(char *, unsigned char , unsigned char ); +unsigned char ieee_p_2592010699_sub_1690584930_2592010699(char *, unsigned char ); + + +char *xilinxcorelib_a_1848741551_3212880686_sub_445809469_3212880686(char *t1, char *t2, char *t3, char *t4) +{ + char t5[248]; + char t6[24]; + char t16[16]; + char t37[8]; + char *t0; + int t7; + char *t8; + int t9; + char *t10; + int t11; + char *t12; + int t13; + int t14; + unsigned int t15; + int t17; + char *t18; + int t19; + char *t20; + int t21; + char *t22; + int t23; + char *t24; + char *t25; + int t26; + unsigned int t27; + char *t28; + char *t29; + char *t30; + char *t31; + char *t32; + char *t33; + char *t34; + char *t35; + char *t36; + char *t38; + char *t39; + char *t40; + unsigned char t41; + char *t42; + int t43; + char *t44; + int t45; + char *t46; + int t47; + char *t48; + int t49; + int t50; + int t51; + char *t52; + char *t53; + int t54; + unsigned char t55; + int t56; + char *t57; + int t58; + int t59; + char *t60; + int t61; + unsigned int t62; + unsigned int t63; + char *t64; + unsigned char t65; + unsigned char t66; + char *t67; + char *t68; + int t69; + char *t70; + int t71; + int t72; + unsigned int t73; + char *t74; + int t75; + unsigned int t76; + unsigned int t77; + char *t78; + +LAB0: t8 = (t4 + 0U); + t9 = *((int *)t8); + t10 = (t4 + 4U); + t11 = *((int *)t10); + t12 = (t4 + 8U); + t13 = *((int *)t12); + if (t9 > t11) + goto LAB2; + +LAB3: if (t13 == -1) + goto LAB7; + +LAB8: t7 = t11; + +LAB4: t14 = (0 - t7); + t15 = (t14 * -1); + t15 = (t15 + 1); + t15 = (t15 * 1U); + t18 = (t4 + 0U); + t19 = *((int *)t18); + t20 = (t4 + 4U); + t21 = *((int *)t20); + t22 = (t4 + 8U); + t23 = *((int *)t22); + if (t19 > t21) + goto LAB9; + +LAB10: if (t23 == -1) + goto LAB14; + +LAB15: t17 = t21; + +LAB11: t24 = (t16 + 0U); + t25 = (t24 + 0U); + *((int *)t25) = t17; + t25 = (t24 + 4U); + *((int *)t25) = 0; + t25 = (t24 + 8U); + *((int *)t25) = -1; + t26 = (0 - t17); + t27 = (t26 * -1); + t27 = (t27 + 1); + t25 = (t24 + 12U); + *((unsigned int *)t25) = t27; + t25 = (t5 + 4U); + t28 = ((IEEE_P_2592010699) + 4024); + t29 = (t25 + 88U); + *((char **)t29) = t28; + t30 = (char *)alloca(t15); + t31 = (t25 + 56U); + *((char **)t31) = t30; + xsi_type_set_default_value(t28, t30, t16); + t32 = (t25 + 64U); + *((char **)t32) = t16; + t33 = (t25 + 80U); + *((unsigned int *)t33) = t15; + t34 = (t5 + 124U); + t35 = ((STD_STANDARD) + 384); + t36 = (t34 + 88U); + *((char **)t36) = t35; + t38 = (t34 + 56U); + *((char **)t38) = t37; + *((int *)t37) = 0; + t39 = (t34 + 80U); + *((unsigned int *)t39) = 4U; + t40 = (t6 + 4U); + t41 = (t3 != 0); + if (t41 == 1) + goto LAB17; + +LAB16: t42 = (t6 + 12U); + *((char **)t42) = t4; + t44 = (t4 + 0U); + t45 = *((int *)t44); + t46 = (t4 + 4U); + t47 = *((int *)t46); + t48 = (t4 + 8U); + t49 = *((int *)t48); + if (t45 > t47) + goto LAB22; + +LAB23: if (t49 == -1) + goto LAB27; + +LAB28: t43 = t47; + +LAB24: t50 = 0; + t51 = t43; + +LAB18: if (t50 <= t51) + goto LAB19; + +LAB21: t8 = (t25 + 56U); + t10 = *((char **)t8); + t8 = (t16 + 12U); + t15 = *((unsigned int *)t8); + t15 = (t15 * 1U); + t0 = xsi_get_transient_memory(t15); + memcpy(t0, t10, t15); + t12 = (t16 + 0U); + t7 = *((int *)t12); + t18 = (t16 + 4U); + t9 = *((int *)t18); + t20 = (t16 + 8U); + t11 = *((int *)t20); + t22 = (t2 + 0U); + t24 = (t22 + 0U); + *((int *)t24) = t7; + t24 = (t22 + 4U); + *((int *)t24) = t9; + t24 = (t22 + 8U); + *((int *)t24) = t11; + t13 = (t9 - t7); + t27 = (t13 * t11); + t27 = (t27 + 1); + t24 = (t22 + 12U); + *((unsigned int *)t24) = t27; + +LAB1: return t0; +LAB2: if (t13 == 1) + goto LAB5; + +LAB6: t7 = t9; + goto LAB4; + +LAB5: t7 = t11; + goto LAB4; + +LAB7: t7 = t9; + goto LAB4; + +LAB9: if (t23 == 1) + goto LAB12; + +LAB13: t17 = t19; + goto LAB11; + +LAB12: t17 = t21; + goto LAB11; + +LAB14: t17 = t19; + goto LAB11; + +LAB17: *((char **)t40) = *((char **)t3); + goto LAB16; + +LAB19: t52 = (t34 + 56U); + t53 = *((char **)t52); + t54 = *((int *)t53); + t55 = (t54 == 1); + if (t55 != 0) + goto LAB29; + +LAB31: t8 = (t4 + 0U); + t7 = *((int *)t8); + t10 = (t4 + 8U); + t9 = *((int *)t10); + t11 = (t50 - t7); + t15 = (t11 * t9); + t12 = (t4 + 4U); + t13 = *((int *)t12); + xsi_vhdl_check_range_of_index(t7, t13, t9, t50); + t27 = (1U * t15); + t62 = (0 + t27); + t18 = (t3 + t62); + t41 = *((unsigned char *)t18); + t20 = (t25 + 56U); + t22 = *((char **)t20); + t20 = (t16 + 0U); + t14 = *((int *)t20); + t24 = (t16 + 8U); + t17 = *((int *)t24); + t19 = (t50 - t14); + t63 = (t19 * t17); + t28 = (t16 + 4U); + t21 = *((int *)t28); + xsi_vhdl_check_range_of_index(t14, t21, t17, t50); + t73 = (1U * t63); + t76 = (0 + t73); + t29 = (t22 + t76); + *((unsigned char *)t29) = t41; + t8 = (t4 + 0U); + t7 = *((int *)t8); + t10 = (t4 + 8U); + t9 = *((int *)t10); + t11 = (t50 - t7); + t15 = (t11 * t9); + t12 = (t4 + 4U); + t13 = *((int *)t12); + xsi_vhdl_check_range_of_index(t7, t13, t9, t50); + t27 = (1U * t15); + t62 = (0 + t27); + t18 = (t3 + t62); + t41 = *((unsigned char *)t18); + t55 = (t41 == (unsigned char)3); + if (t55 != 0) + goto LAB35; + +LAB37: +LAB36: +LAB30: +LAB20: if (t50 == t51) + goto LAB21; + +LAB38: t7 = (t50 + 1); + t50 = t7; + goto LAB18; + +LAB22: if (t49 == 1) + goto LAB25; + +LAB26: t43 = t45; + goto LAB24; + +LAB25: t43 = t47; + goto LAB24; + +LAB27: t43 = t45; + goto LAB24; + +LAB29: t52 = (t4 + 0U); + t56 = *((int *)t52); + t57 = (t4 + 8U); + t58 = *((int *)t57); + t59 = (t50 - t56); + t27 = (t59 * t58); + t60 = (t4 + 4U); + t61 = *((int *)t60); + xsi_vhdl_check_range_of_index(t56, t61, t58, t50); + t62 = (1U * t27); + t63 = (0 + t62); + t64 = (t3 + t63); + t65 = *((unsigned char *)t64); + t66 = (t65 == (unsigned char)2); + if (t66 != 0) + goto LAB32; + +LAB34: t8 = (t25 + 56U); + t10 = *((char **)t8); + t8 = (t16 + 0U); + t7 = *((int *)t8); + t12 = (t16 + 8U); + t9 = *((int *)t12); + t11 = (t50 - t7); + t15 = (t11 * t9); + t18 = (t16 + 4U); + t13 = *((int *)t18); + xsi_vhdl_check_range_of_index(t7, t13, t9, t50); + t27 = (1U * t15); + t62 = (0 + t27); + t20 = (t10 + t62); + *((unsigned char *)t20) = (unsigned char)2; + +LAB33: goto LAB30; + +LAB32: t67 = (t25 + 56U); + t68 = *((char **)t67); + t67 = (t16 + 0U); + t69 = *((int *)t67); + t70 = (t16 + 8U); + t71 = *((int *)t70); + t72 = (t50 - t69); + t73 = (t72 * t71); + t74 = (t16 + 4U); + t75 = *((int *)t74); + xsi_vhdl_check_range_of_index(t69, t75, t71, t50); + t76 = (1U * t73); + t77 = (0 + t76); + t78 = (t68 + t77); + *((unsigned char *)t78) = (unsigned char)3; + goto LAB33; + +LAB35: t20 = (t34 + 56U); + t22 = *((char **)t20); + t20 = (t22 + 0); + *((int *)t20) = 1; + goto LAB36; + +LAB39:; +} + +char *xilinxcorelib_a_1848741551_3212880686_sub_1670819029_3212880686(char *t1, char *t2, int t3, int t4) +{ + char t5[248]; + char t6[16]; + char t10[8]; + char t16[16]; + char t39[16]; + char *t0; + char *t7; + char *t8; + char *t9; + char *t11; + char *t12; + int t13; + int t14; + unsigned int t15; + int t17; + char *t18; + char *t19; + int t20; + unsigned int t21; + char *t22; + char *t23; + char *t24; + char *t25; + char *t26; + char *t27; + char *t28; + char *t29; + unsigned char t30; + int t31; + int t32; + char *t33; + char *t34; + int t35; + int t36; + int t37; + unsigned int t38; + +LAB0: t7 = (t5 + 4U); + t8 = ((STD_STANDARD) + 384); + t9 = (t7 + 88U); + *((char **)t9) = t8; + t11 = (t7 + 56U); + *((char **)t11) = t10; + *((int *)t10) = t3; + t12 = (t7 + 80U); + *((unsigned int *)t12) = 4U; + t13 = (t4 - 1); + t14 = (0 - t13); + t15 = (t14 * -1); + t15 = (t15 + 1); + t15 = (t15 * 1U); + t17 = (t4 - 1); + t18 = (t16 + 0U); + t19 = (t18 + 0U); + *((int *)t19) = t17; + t19 = (t18 + 4U); + *((int *)t19) = 0; + t19 = (t18 + 8U); + *((int *)t19) = -1; + t20 = (0 - t17); + t21 = (t20 * -1); + t21 = (t21 + 1); + t19 = (t18 + 12U); + *((unsigned int *)t19) = t21; + t19 = (t5 + 124U); + t22 = ((IEEE_P_2592010699) + 4024); + t23 = (t19 + 88U); + *((char **)t23) = t22; + t24 = (char *)alloca(t15); + t25 = (t19 + 56U); + *((char **)t25) = t24; + xsi_type_set_default_value(t22, t24, t16); + t26 = (t19 + 64U); + *((char **)t26) = t16; + t27 = (t19 + 80U); + *((unsigned int *)t27) = t15; + t28 = (t6 + 4U); + *((int *)t28) = t3; + t29 = (t6 + 8U); + *((int *)t29) = t4; + t30 = (t3 < 0); + if (t30 != 0) + goto LAB2; + +LAB4: +LAB3: t13 = (t4 - 1); + t14 = 0; + t17 = t13; + +LAB5: if (t14 <= t17) + goto LAB6; + +LAB8: t30 = (t3 < 0); + if (t30 != 0) + goto LAB13; + +LAB15: t8 = (t19 + 56U); + t9 = *((char **)t8); + t8 = (t16 + 12U); + t15 = *((unsigned int *)t8); + t15 = (t15 * 1U); + t0 = xsi_get_transient_memory(t15); + memcpy(t0, t9, t15); + t11 = (t16 + 0U); + t13 = *((int *)t11); + t12 = (t16 + 4U); + t14 = *((int *)t12); + t18 = (t16 + 8U); + t17 = *((int *)t18); + t22 = (t2 + 0U); + t23 = (t22 + 0U); + *((int *)t23) = t13; + t23 = (t22 + 4U); + *((int *)t23) = t14; + t23 = (t22 + 8U); + *((int *)t23) = t17; + t20 = (t14 - t13); + t21 = (t20 * t17); + t21 = (t21 + 1); + t23 = (t22 + 12U); + *((unsigned int *)t23) = t21; + +LAB1: return t0; +LAB2: t31 = (1 * t3); + t32 = (-(t31)); + t33 = (t7 + 56U); + t34 = *((char **)t33); + t33 = (t34 + 0); + *((int *)t33) = t32; + goto LAB3; + +LAB6: t8 = (t7 + 56U); + t9 = *((char **)t8); + t20 = *((int *)t9); + t31 = xsi_vhdl_mod(t20, 2); + t30 = (t31 == 0); + if (t30 != 0) + goto LAB9; + +LAB11: t8 = (t19 + 56U); + t9 = *((char **)t8); + t8 = (t16 + 0U); + t13 = *((int *)t8); + t11 = (t16 + 8U); + t20 = *((int *)t11); + t31 = (t14 - t13); + t15 = (t31 * t20); + t12 = (t16 + 4U); + t32 = *((int *)t12); + xsi_vhdl_check_range_of_index(t13, t32, t20, t14); + t21 = (1U * t15); + t38 = (0 + t21); + t18 = (t9 + t38); + *((unsigned char *)t18) = (unsigned char)3; + +LAB10: t8 = (t7 + 56U); + t9 = *((char **)t8); + t13 = *((int *)t9); + t20 = (t13 / 2); + t8 = (t7 + 56U); + t11 = *((char **)t8); + t8 = (t11 + 0); + *((int *)t8) = t20; + +LAB7: if (t14 == t17) + goto LAB8; + +LAB12: t13 = (t14 + 1); + t14 = t13; + goto LAB5; + +LAB9: t8 = (t19 + 56U); + t11 = *((char **)t8); + t8 = (t16 + 0U); + t32 = *((int *)t8); + t12 = (t16 + 8U); + t35 = *((int *)t12); + t36 = (t14 - t32); + t15 = (t36 * t35); + t18 = (t16 + 4U); + t37 = *((int *)t18); + xsi_vhdl_check_range_of_index(t32, t37, t35, t14); + t21 = (1U * t15); + t38 = (0 + t21); + t22 = (t11 + t38); + *((unsigned char *)t22) = (unsigned char)2; + goto LAB10; + +LAB13: t8 = (t19 + 56U); + t9 = *((char **)t8); + t8 = xilinxcorelib_a_1848741551_3212880686_sub_445809469_3212880686(t1, t39, t9, t16); + t11 = (t39 + 12U); + t15 = *((unsigned int *)t11); + t15 = (t15 * 1U); + t0 = xsi_get_transient_memory(t15); + memcpy(t0, t8, t15); + t12 = (t39 + 0U); + t13 = *((int *)t12); + t18 = (t39 + 4U); + t14 = *((int *)t18); + t22 = (t39 + 8U); + t17 = *((int *)t22); + t23 = (t2 + 0U); + t25 = (t23 + 0U); + *((int *)t25) = t13; + t25 = (t23 + 4U); + *((int *)t25) = t14; + t25 = (t23 + 8U); + *((int *)t25) = t17; + t20 = (t14 - t13); + t21 = (t20 * t17); + t21 = (t21 + 1); + t25 = (t23 + 12U); + *((unsigned int *)t25) = t21; + goto LAB1; + +LAB14: xsi_error(ng2); + t0 = 0; + goto LAB1; + +LAB16: goto LAB14; + +LAB17: goto LAB14; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_0(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + +LAB0: +LAB3: t1 = (t0 + 25040); + t2 = (t1 + 56U); + t3 = *((char **)t2); + t4 = (t3 + 56U); + t5 = *((char **)t4); + *((unsigned char *)t5) = (unsigned char)2; + xsi_driver_first_trans_fast(t1); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_1(char *t0) +{ + unsigned char t1; + char *t2; + +LAB0: t1 = (1 != 4); + if (t1 == 0) + goto LAB2; + +LAB3: +LAB1: return; +LAB2: t2 = (t0 + 39421); + xsi_report(t2, 370U, (unsigned char)3); + goto LAB3; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_2(char *t0) +{ + unsigned char t1; + char *t2; + +LAB0: t1 = (2 != 2); + if (t1 == 0) + goto LAB2; + +LAB3: +LAB1: return; +LAB2: t2 = (t0 + 39791); + xsi_report(t2, 428U, (unsigned char)0); + goto LAB3; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_3(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 3952U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 25104); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast(t1); + +LAB2: t8 = (t0 + 24784); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_4(char *t0) +{ + unsigned char t1; + char *t2; + char *t3; + unsigned char t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + char *t10; + unsigned char t11; + char *t12; + char *t13; + char *t14; + char *t15; + char *t16; + +LAB0: t1 = (1 == 0); + if (t1 != 0) + goto LAB3; + +LAB4: +LAB5: t9 = (t0 + 4432U); + t10 = *((char **)t9); + t11 = *((unsigned char *)t10); + t9 = (t0 + 25168); + t12 = (t9 + 56U); + t13 = *((char **)t12); + t14 = (t13 + 56U); + t15 = *((char **)t14); + *((unsigned char *)t15) = t11; + xsi_driver_first_trans_fast(t9); + +LAB2: t16 = (t0 + 24800); + *((int *)t16) = 1; + +LAB1: return; +LAB3: t2 = (t0 + 4272U); + t3 = *((char **)t2); + t4 = *((unsigned char *)t3); + t2 = (t0 + 25168); + t5 = (t2 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = t4; + xsi_driver_first_trans_fast(t2); + goto LAB2; + +LAB6: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_5(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + +LAB0: +LAB3: t1 = (t0 + 9552U); + t2 = *((char **)t1); + t1 = (t0 + 25232); + t3 = (t1 + 56U); + t4 = *((char **)t3); + t5 = (t4 + 56U); + t6 = *((char **)t5); + memcpy(t6, t2, 13U); + xsi_driver_first_trans_fast_port(t1); + +LAB2: t7 = (t0 + 24816); + *((int *)t7) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_6(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + +LAB0: +LAB3: t1 = (t0 + 9712U); + t2 = *((char **)t1); + t1 = (t0 + 25296); + t3 = (t1 + 56U); + t4 = *((char **)t3); + t5 = (t4 + 56U); + t6 = *((char **)t5); + memcpy(t6, t2, 13U); + xsi_driver_first_trans_fast_port(t1); + +LAB2: t7 = (t0 + 24832); + *((int *)t7) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_7(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + unsigned char t5; + unsigned char t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + +LAB0: +LAB3: t1 = (t0 + 4112U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 10832U); + t4 = *((char **)t1); + t5 = *((unsigned char *)t4); + t6 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t3, t5); + t1 = (t0 + 25360); + t7 = (t1 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((unsigned char *)t10) = t6; + xsi_driver_first_trans_fast(t1); + +LAB2: t11 = (t0 + 24848); + *((int *)t11) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_8(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + unsigned char t5; + unsigned char t6; + unsigned char t7; + char *t8; + char *t9; + char *t10; + char *t11; + char *t12; + +LAB0: +LAB3: t1 = (t0 + 4912U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 10512U); + t4 = *((char **)t1); + t5 = *((unsigned char *)t4); + t6 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t5); + t7 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t3, t6); + t1 = (t0 + 25424); + t8 = (t1 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + *((unsigned char *)t11) = t7; + xsi_driver_first_trans_fast(t1); + +LAB2: t12 = (t0 + 24864); + *((int *)t12) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_9(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + +LAB0: +LAB3: t1 = (t0 + 10672U); + t2 = *((char **)t1); + t1 = (t0 + 25488); + t3 = (t1 + 56U); + t4 = *((char **)t3); + t5 = (t4 + 56U); + t6 = *((char **)t5); + memcpy(t6, t2, 8U); + xsi_driver_first_trans_fast_port(t1); + +LAB2: t7 = (t0 + 24880); + *((int *)t7) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_10(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 10832U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 25552); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 24896); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_11(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 10992U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 25616); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 24912); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_12(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 11312U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 25680); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 24928); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_13(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 11152U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 25744); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 24944); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_1848741551_3212880686_p_14(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 10512U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 25808); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 24960); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + + +extern void xilinxcorelib_a_1848741551_3212880686_init() +{ + static char *pe[] = {(void *)xilinxcorelib_a_1848741551_3212880686_p_0,(void *)xilinxcorelib_a_1848741551_3212880686_p_1,(void *)xilinxcorelib_a_1848741551_3212880686_p_2,(void *)xilinxcorelib_a_1848741551_3212880686_p_3,(void *)xilinxcorelib_a_1848741551_3212880686_p_4,(void *)xilinxcorelib_a_1848741551_3212880686_p_5,(void *)xilinxcorelib_a_1848741551_3212880686_p_6,(void *)xilinxcorelib_a_1848741551_3212880686_p_7,(void *)xilinxcorelib_a_1848741551_3212880686_p_8,(void *)xilinxcorelib_a_1848741551_3212880686_p_9,(void *)xilinxcorelib_a_1848741551_3212880686_p_10,(void *)xilinxcorelib_a_1848741551_3212880686_p_11,(void *)xilinxcorelib_a_1848741551_3212880686_p_12,(void *)xilinxcorelib_a_1848741551_3212880686_p_13,(void *)xilinxcorelib_a_1848741551_3212880686_p_14}; + static char *se[] = {(void *)xilinxcorelib_a_1848741551_3212880686_sub_445809469_3212880686,(void *)xilinxcorelib_a_1848741551_3212880686_sub_1670819029_3212880686}; + xsi_register_didat("xilinxcorelib_a_1848741551_3212880686", "isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.didat"); + xsi_register_executes(pe); + xsi_register_subprogram_executes(se); +} diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.didat b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.didat new file mode 100755 index 0000000000000000000000000000000000000000..a51605d9f8ac8cc92bcb97320466c0902d2ae1bf Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.didat differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.nt64.obj b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.nt64.obj new file mode 100755 index 0000000000000000000000000000000000000000..8f84d6af6a4007e9f9c3c43c07b8ad082cbbf54d Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_1848741551_3212880686.nt64.obj differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.c b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.c new file mode 100755 index 0000000000000000000000000000000000000000..aa33fb306de833f8d0c9f4b9792a595b267a9b9e --- /dev/null +++ b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.c @@ -0,0 +1,2229 @@ +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2009 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/***********************************************************************/ + +/* This file is designed for use with ISim build 0x7dea747 */ + +#define XSI_HIDE_SYMBOL_SPEC true +#include "xsi.h" +#include <memory.h> +#ifdef __GNUC__ +#include <stdlib.h> +#else +#include <malloc.h> +#define alloca _alloca +#endif +extern char *IEEE_P_2592010699; +extern char *STD_STANDARD; + +unsigned char ieee_p_2592010699_sub_1605435078_2592010699(char *, unsigned char , unsigned char ); +unsigned char ieee_p_2592010699_sub_1690584930_2592010699(char *, unsigned char ); +unsigned char ieee_p_2592010699_sub_2545490612_2592010699(char *, unsigned char , unsigned char ); + + +char *xilinxcorelib_a_3173924170_3212880686_sub_3703097363_3212880686(char *t1, char *t2, char *t3, char *t4, int t5) +{ + char t6[368]; + char t7[24]; + char t16[16]; + char t28[16]; + char t34[8]; + char t41[8]; + char *t0; + int t8; + int t9; + unsigned int t10; + char *t11; + char *t12; + int t13; + int t14; + unsigned int t15; + int t17; + char *t18; + char *t19; + int t20; + unsigned int t21; + char *t22; + char *t23; + char *t24; + char *t25; + char *t26; + char *t27; + char *t29; + char *t30; + int t31; + char *t32; + char *t33; + char *t35; + char *t36; + char *t37; + char *t38; + char *t39; + char *t40; + char *t42; + char *t43; + char *t44; + unsigned char t45; + char *t46; + char *t47; + char *t48; + int t49; + int t50; + char *t51; + int t52; + char *t53; + int t54; + int t55; + int t56; + int t57; + int t58; + char *t59; + int t60; + char *t61; + int t62; + int t63; + unsigned int t64; + unsigned int t65; + char *t66; + unsigned char t67; + char *t68; + char *t69; + unsigned int t70; + char *t71; + char *t72; + char *t73; + char *t74; + char *t75; + unsigned int t76; + int t77; + static char *nl0[] = {&&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB9, &&LAB10, &&LAB11, &&LAB12, &&LAB13, &&LAB14, &&LAB15, &&LAB16, &&LAB17, &&LAB18, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB19, &&LAB21, &&LAB23, &&LAB25, &&LAB27, &&LAB29, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB20, &&LAB22, &&LAB24, &&LAB26, &&LAB28, &&LAB30, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31}; + +LAB0: t8 = (t5 - 1); + t9 = (0 - t8); + t10 = (t9 * -1); + t10 = (t10 + 1); + t10 = (t10 * 1U); + t11 = xsi_get_transient_memory(t10); + memset(t11, 0, t10); + t12 = t11; + memset(t12, (unsigned char)2, t10); + t13 = (t5 - 1); + t14 = (0 - t13); + t15 = (t14 * -1); + t15 = (t15 + 1); + t15 = (t15 * 1U); + t17 = (t5 - 1); + t18 = (t16 + 0U); + t19 = (t18 + 0U); + *((int *)t19) = t17; + t19 = (t18 + 4U); + *((int *)t19) = 0; + t19 = (t18 + 8U); + *((int *)t19) = -1; + t20 = (0 - t17); + t21 = (t20 * -1); + t21 = (t21 + 1); + t19 = (t18 + 12U); + *((unsigned int *)t19) = t21; + t19 = (t6 + 4U); + t22 = ((IEEE_P_2592010699) + 4024); + t23 = (t19 + 88U); + *((char **)t23) = t22; + t24 = (char *)alloca(t15); + t25 = (t19 + 56U); + *((char **)t25) = t24; + memcpy(t24, t11, t15); + t26 = (t19 + 64U); + *((char **)t26) = t16; + t27 = (t19 + 80U); + *((unsigned int *)t27) = t15; + t29 = (t28 + 0U); + t30 = (t29 + 0U); + *((int *)t30) = 3; + t30 = (t29 + 4U); + *((int *)t30) = 0; + t30 = (t29 + 8U); + *((int *)t30) = -1; + t31 = (0 - 3); + t21 = (t31 * -1); + t21 = (t21 + 1); + t30 = (t29 + 12U); + *((unsigned int *)t30) = t21; + t30 = (t6 + 124U); + t32 = ((IEEE_P_2592010699) + 4024); + t33 = (t30 + 88U); + *((char **)t33) = t32; + t35 = (t30 + 56U); + *((char **)t35) = t34; + xsi_type_set_default_value(t32, t34, t28); + t36 = (t30 + 64U); + *((char **)t36) = t28; + t37 = (t30 + 80U); + *((unsigned int *)t37) = 4U; + t38 = (t6 + 244U); + t39 = ((STD_STANDARD) + 384); + t40 = (t38 + 88U); + *((char **)t40) = t39; + t42 = (t38 + 56U); + *((char **)t42) = t41; + *((int *)t41) = 0; + t43 = (t38 + 80U); + *((unsigned int *)t43) = 4U; + t44 = (t7 + 4U); + t45 = (t3 != 0); + if (t45 == 1) + goto LAB3; + +LAB2: t46 = (t7 + 12U); + *((char **)t46) = t4; + t47 = (t7 + 20U); + *((int *)t47) = t5; + t48 = (t4 + 8U); + t49 = *((int *)t48); + t50 = (t49 * -1); + t51 = (t4 + 0U); + t52 = *((int *)t51); + t53 = (t4 + 4U); + t54 = *((int *)t53); + t55 = t54; + t56 = t52; + +LAB4: t57 = (t56 * t50); + t58 = (t55 * t50); + if (t58 <= t57) + goto LAB5; + +LAB7: t11 = (t19 + 56U); + t12 = *((char **)t11); + t11 = (t16 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t0 = xsi_get_transient_memory(t10); + memcpy(t0, t12, t10); + t18 = (t16 + 0U); + t8 = *((int *)t18); + t22 = (t16 + 4U); + t9 = *((int *)t22); + t23 = (t16 + 8U); + t13 = *((int *)t23); + t25 = (t2 + 0U); + t26 = (t25 + 0U); + *((int *)t26) = t8; + t26 = (t25 + 4U); + *((int *)t26) = t9; + t26 = (t25 + 8U); + *((int *)t26) = t13; + t14 = (t9 - t8); + t15 = (t14 * t13); + t15 = (t15 + 1); + t26 = (t25 + 12U); + *((unsigned int *)t26) = t15; + +LAB1: return t0; +LAB3: *((char **)t44) = *((char **)t3); + goto LAB2; + +LAB5: t59 = (t4 + 0U); + t60 = *((int *)t59); + t61 = (t4 + 8U); + t62 = *((int *)t61); + t63 = (t55 - t60); + t21 = (t63 * t62); + t64 = (1U * t21); + t65 = (0 + t64); + t66 = (t3 + t65); + t67 = *((unsigned char *)t66); + t68 = (char *)((nl0) + t67); + goto **((char **)t68); + +LAB6: if (t55 == t56) + goto LAB7; + +LAB45: t8 = (t55 + t50); + t55 = t8; + goto LAB4; + +LAB8: t8 = 0; + t9 = 3; + +LAB37: if (t8 <= t9) + goto LAB38; + +LAB40: t11 = (t38 + 56U); + t12 = *((char **)t11); + t8 = *((int *)t12); + t9 = (t8 + 1); + t11 = (t38 + 56U); + t18 = *((char **)t11); + t11 = (t18 + 0); + *((int *)t11) = t9; + goto LAB6; + +LAB9: t69 = (t28 + 12U); + t70 = *((unsigned int *)t69); + t70 = (t70 * 1U); + t71 = xsi_get_transient_memory(t70); + memset(t71, 0, t70); + t72 = t71; + memset(t72, (unsigned char)2, t70); + t73 = (t30 + 56U); + t74 = *((char **)t73); + t73 = (t74 + 0); + t75 = (t28 + 12U); + t76 = *((unsigned int *)t75); + t76 = (t76 * 1U); + memcpy(t73, t71, t76); + goto LAB8; + +LAB10: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB11: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB12: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (1 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB13: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (2 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB14: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB15: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB16: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (3 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB17: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (3 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB18: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (3 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB19: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB20: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB21: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (2 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB22: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (2 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB23: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (1 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB24: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (1 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB25: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB26: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB27: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB28: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB29: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t30 + 56U); + t23 = *((char **)t22); + t22 = (t23 + 0); + t25 = (t28 + 12U); + t15 = *((unsigned int *)t25); + t15 = (t15 * 1U); + memcpy(t22, t12, t15); + goto LAB8; + +LAB30: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t30 + 56U); + t23 = *((char **)t22); + t22 = (t23 + 0); + t25 = (t28 + 12U); + t15 = *((unsigned int *)t25); + t15 = (t15 * 1U); + memcpy(t22, t12, t15); + goto LAB8; + +LAB31: t8 = 0; + t9 = 3; + +LAB32: if (t8 <= t9) + goto LAB33; + +LAB35: goto LAB8; + +LAB33: t11 = (t30 + 56U); + t12 = *((char **)t11); + t11 = (t28 + 0U); + t13 = *((int *)t11); + t18 = (t28 + 8U); + t14 = *((int *)t18); + t17 = (t8 - t13); + t10 = (t17 * t14); + t22 = (t28 + 4U); + t20 = *((int *)t22); + xsi_vhdl_check_range_of_index(t13, t20, t14, t8); + t15 = (1U * t10); + t21 = (0 + t15); + t23 = (t12 + t21); + *((unsigned char *)t23) = (unsigned char)1; + +LAB34: if (t8 == t9) + goto LAB35; + +LAB36: t13 = (t8 + 1); + t8 = t13; + goto LAB32; + +LAB38: t11 = (t38 + 56U); + t12 = *((char **)t11); + t13 = *((int *)t12); + t14 = (t13 * 4); + t17 = (t14 + t8); + t45 = (t17 < t5); + if (t45 != 0) + goto LAB41; + +LAB43: +LAB42: +LAB39: if (t8 == t9) + goto LAB40; + +LAB44: t13 = (t8 + 1); + t8 = t13; + goto LAB37; + +LAB41: t11 = (t30 + 56U); + t18 = *((char **)t11); + t11 = (t28 + 0U); + t20 = *((int *)t11); + t22 = (t28 + 8U); + t31 = *((int *)t22); + t49 = (t8 - t20); + t10 = (t49 * t31); + t23 = (t28 + 4U); + t52 = *((int *)t23); + xsi_vhdl_check_range_of_index(t20, t52, t31, t8); + t15 = (1U * t10); + t21 = (0 + t15); + t25 = (t18 + t21); + t67 = *((unsigned char *)t25); + t26 = (t19 + 56U); + t27 = *((char **)t26); + t26 = (t38 + 56U); + t29 = *((char **)t26); + t54 = *((int *)t29); + t57 = (t54 * 4); + t58 = (t57 + t8); + t26 = (t16 + 0U); + t60 = *((int *)t26); + t32 = (t16 + 8U); + t62 = *((int *)t32); + t63 = (t58 - t60); + t64 = (t63 * t62); + t33 = (t16 + 4U); + t77 = *((int *)t33); + xsi_vhdl_check_range_of_index(t60, t77, t62, t58); + t65 = (1U * t64); + t70 = (0 + t65); + t35 = (t27 + t70); + *((unsigned char *)t35) = t67; + goto LAB42; + +LAB46:; +} + +static void xilinxcorelib_a_3173924170_3212880686_p_0(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + +LAB0: +LAB3: t1 = (t0 + 14656); + t2 = (t1 + 56U); + t3 = *((char **)t2); + t4 = (t3 + 56U); + t5 = *((char **)t4); + *((unsigned char *)t5) = (unsigned char)2; + xsi_driver_first_trans_fast(t1); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_1(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + +LAB0: +LAB3: t1 = (t0 + 14720); + t2 = (t1 + 56U); + t3 = *((char **)t2); + t4 = (t3 + 56U); + t5 = *((char **)t4); + *((unsigned char *)t5) = (unsigned char)2; + xsi_driver_first_trans_fast(t1); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_2(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + unsigned char t5; + unsigned char t6; + char *t7; + unsigned char t8; + unsigned char t9; + unsigned char t10; + char *t11; + char *t12; + char *t13; + char *t14; + char *t15; + +LAB0: +LAB3: t1 = (t0 + 5288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 5448U); + t4 = *((char **)t1); + t5 = *((unsigned char *)t4); + t6 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t5); + t1 = (t0 + 2568U); + t7 = *((char **)t1); + t8 = *((unsigned char *)t7); + t9 = ieee_p_2592010699_sub_2545490612_2592010699(IEEE_P_2592010699, t6, t8); + t10 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t3, t9); + t1 = (t0 + 14784); + t11 = (t1 + 56U); + t12 = *((char **)t11); + t13 = (t12 + 56U); + t14 = *((char **)t13); + *((unsigned char *)t14) = t10; + xsi_driver_first_trans_fast(t1); + +LAB2: t15 = (t0 + 14304); + *((int *)t15) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_3(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + unsigned char t4; + char *t5; + unsigned char t6; + unsigned char t7; + char *t8; + unsigned char t9; + unsigned char t10; + unsigned char t11; + char *t12; + char *t13; + char *t14; + char *t15; + char *t16; + +LAB0: +LAB3: t1 = (t0 + 5288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t3); + t1 = (t0 + 5128U); + t5 = *((char **)t1); + t6 = *((unsigned char *)t5); + t7 = ieee_p_2592010699_sub_2545490612_2592010699(IEEE_P_2592010699, t4, t6); + t1 = (t0 + 2728U); + t8 = *((char **)t1); + t9 = *((unsigned char *)t8); + t10 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t9); + t11 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t7, t10); + t1 = (t0 + 14848); + t12 = (t1 + 56U); + t13 = *((char **)t12); + t14 = (t13 + 56U); + t15 = *((char **)t14); + *((unsigned char *)t15) = t11; + xsi_driver_first_trans_fast(t1); + +LAB2: t16 = (t0 + 14320); + *((int *)t16) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_4(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 5128U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 14912); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast(t1); + +LAB2: t8 = (t0 + 14336); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_5(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + unsigned char t5; + unsigned char t6; + unsigned char t7; + char *t8; + unsigned char t9; + unsigned char t10; + char *t11; + char *t12; + char *t13; + char *t14; + char *t15; + +LAB0: +LAB3: t1 = (t0 + 2568U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 2728U); + t4 = *((char **)t1); + t5 = *((unsigned char *)t4); + t6 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t5); + t7 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t3, t6); + t1 = (t0 + 4968U); + t8 = *((char **)t1); + t9 = *((unsigned char *)t8); + t10 = ieee_p_2592010699_sub_2545490612_2592010699(IEEE_P_2592010699, t7, t9); + t1 = (t0 + 14976); + t11 = (t1 + 56U); + t12 = *((char **)t11); + t13 = (t12 + 56U); + t14 = *((char **)t13); + *((unsigned char *)t14) = t10; + xsi_driver_first_trans_fast(t1); + +LAB2: t15 = (t0 + 14352); + *((int *)t15) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_6(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + unsigned char t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + unsigned char t10; + unsigned char t11; + unsigned char t12; + unsigned char t13; + char *t14; + char *t15; + +LAB0: t1 = (t0 + 6728U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB2; + +LAB4: t1 = (t0 + 2048U); + t4 = xsi_signal_has_event(t1); + if (t4 == 1) + goto LAB7; + +LAB8: t3 = (unsigned char)0; + +LAB9: if (t3 != 0) + goto LAB5; + +LAB6: +LAB3: t1 = (t0 + 14368); + *((int *)t1) = 1; + +LAB1: return; +LAB2: t1 = (t0 + 15040); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15040); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + goto LAB3; + +LAB5: t2 = (t0 + 6888U); + t6 = *((char **)t2); + t12 = *((unsigned char *)t6); + t13 = (t12 == (unsigned char)3); + if (t13 != 0) + goto LAB10; + +LAB12: t1 = (t0 + 5768U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB13; + +LAB15: t1 = (t0 + 5608U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB16; + +LAB18: t1 = (t0 + 5288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15040); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15040); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + +LAB17: +LAB14: +LAB11: goto LAB3; + +LAB7: t2 = (t0 + 2088U); + t5 = *((char **)t2); + t10 = *((unsigned char *)t5); + t11 = (t10 == (unsigned char)3); + t3 = t11; + goto LAB9; + +LAB10: t2 = (t0 + 15040); + t7 = (t2 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t14 = *((char **)t9); + *((unsigned char *)t14) = (unsigned char)2; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t15 = (t0 + 15040); + xsi_driver_intertial_reject(t15, 100LL, 100LL); + goto LAB11; + +LAB13: t1 = (t0 + 15040); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15040); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + goto LAB14; + +LAB16: t1 = (t0 + 15040); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15040); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + goto LAB17; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_7(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + unsigned char t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + unsigned char t10; + unsigned char t11; + unsigned char t12; + unsigned char t13; + char *t14; + char *t15; + +LAB0: t1 = (t0 + 6728U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB2; + +LAB4: t1 = (t0 + 2048U); + t4 = xsi_signal_has_event(t1); + if (t4 == 1) + goto LAB7; + +LAB8: t3 = (unsigned char)0; + +LAB9: if (t3 != 0) + goto LAB5; + +LAB6: +LAB3: t1 = (t0 + 14384); + *((int *)t1) = 1; + +LAB1: return; +LAB2: t1 = (t0 + 15104); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15104); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + goto LAB3; + +LAB5: t2 = (t0 + 6888U); + t6 = *((char **)t2); + t12 = *((unsigned char *)t6); + t13 = (t12 == (unsigned char)3); + if (t13 != 0) + goto LAB10; + +LAB12: t1 = (t0 + 5288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 5448U); + t5 = *((char **)t1); + t4 = *((unsigned char *)t5); + t1 = (t0 + 2568U); + t6 = *((char **)t1); + t10 = *((unsigned char *)t6); + t11 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t10); + t12 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t4, t11); + t13 = ieee_p_2592010699_sub_2545490612_2592010699(IEEE_P_2592010699, t3, t12); + t1 = (t0 + 15104); + t7 = (t1 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t14 = *((char **)t9); + *((unsigned char *)t14) = t13; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t15 = (t0 + 15104); + xsi_driver_intertial_reject(t15, 100LL, 100LL); + +LAB11: goto LAB3; + +LAB7: t2 = (t0 + 2088U); + t5 = *((char **)t2); + t10 = *((unsigned char *)t5); + t11 = (t10 == (unsigned char)3); + t3 = t11; + goto LAB9; + +LAB10: t2 = (t0 + 15104); + t7 = (t2 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t14 = *((char **)t9); + *((unsigned char *)t14) = (unsigned char)2; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t15 = (t0 + 15104); + xsi_driver_intertial_reject(t15, 100LL, 100LL); + goto LAB11; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_8(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + unsigned char t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + unsigned char t10; + unsigned char t11; + unsigned char t12; + unsigned char t13; + char *t14; + char *t15; + unsigned char t16; + unsigned char t17; + unsigned char t18; + unsigned char t19; + char *t20; + +LAB0: t1 = (t0 + 6728U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB2; + +LAB4: t1 = (t0 + 2048U); + t4 = xsi_signal_has_event(t1); + if (t4 == 1) + goto LAB7; + +LAB8: t3 = (unsigned char)0; + +LAB9: if (t3 != 0) + goto LAB5; + +LAB6: +LAB3: t1 = (t0 + 14400); + *((int *)t1) = 1; + +LAB1: return; +LAB2: t1 = (t0 + 15168); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15168); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + goto LAB3; + +LAB5: t2 = (t0 + 6888U); + t6 = *((char **)t2); + t12 = *((unsigned char *)t6); + t13 = (t12 == (unsigned char)3); + if (t13 != 0) + goto LAB10; + +LAB12: t1 = (t0 + 5288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t3); + t1 = (t0 + 5448U); + t5 = *((char **)t1); + t10 = *((unsigned char *)t5); + t11 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t10); + t12 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t4, t11); + t1 = (t0 + 5288U); + t6 = *((char **)t1); + t13 = *((unsigned char *)t6); + t16 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t13); + t1 = (t0 + 2568U); + t7 = *((char **)t1); + t17 = *((unsigned char *)t7); + t18 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t16, t17); + t19 = ieee_p_2592010699_sub_2545490612_2592010699(IEEE_P_2592010699, t12, t18); + t1 = (t0 + 15168); + t8 = (t1 + 56U); + t9 = *((char **)t8); + t14 = (t9 + 56U); + t15 = *((char **)t14); + *((unsigned char *)t15) = t19; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 15168); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + +LAB11: goto LAB3; + +LAB7: t2 = (t0 + 2088U); + t5 = *((char **)t2); + t10 = *((unsigned char *)t5); + t11 = (t10 == (unsigned char)3); + t3 = t11; + goto LAB9; + +LAB10: t2 = (t0 + 15168); + t7 = (t2 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t14 = *((char **)t9); + *((unsigned char *)t14) = (unsigned char)3; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t15 = (t0 + 15168); + xsi_driver_intertial_reject(t15, 100LL, 100LL); + goto LAB11; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_9(char *t0) +{ + unsigned char t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + unsigned char t6; + unsigned char t7; + char *t8; + unsigned char t9; + unsigned char t10; + char *t11; + char *t12; + char *t13; + char *t14; + char *t15; + +LAB0: t2 = (t0 + 2048U); + t3 = xsi_signal_has_event(t2); + if (t3 == 1) + goto LAB5; + +LAB6: t1 = (unsigned char)0; + +LAB7: if (t1 != 0) + goto LAB2; + +LAB4: +LAB3: t2 = (t0 + 14416); + *((int *)t2) = 1; + +LAB1: return; +LAB2: t4 = (t0 + 6888U); + t8 = *((char **)t4); + t9 = *((unsigned char *)t8); + t10 = (t9 == (unsigned char)3); + if (t10 != 0) + goto LAB8; + +LAB10: t2 = (t0 + 5928U); + t4 = *((char **)t2); + t1 = *((unsigned char *)t4); + t2 = (t0 + 15232); + t5 = (t2 + 56U); + t8 = *((char **)t5); + t11 = (t8 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = t1; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t13 = (t0 + 15232); + xsi_driver_intertial_reject(t13, 100LL, 100LL); + +LAB9: goto LAB3; + +LAB5: t4 = (t0 + 2088U); + t5 = *((char **)t4); + t6 = *((unsigned char *)t5); + t7 = (t6 == (unsigned char)3); + t1 = t7; + goto LAB7; + +LAB8: t4 = (t0 + 15232); + t11 = (t4 + 56U); + t12 = *((char **)t11); + t13 = (t12 + 56U); + t14 = *((char **)t13); + *((unsigned char *)t14) = (unsigned char)3; + xsi_driver_first_trans_delta(t4, 0U, 1, 100LL); + t15 = (t0 + 15232); + xsi_driver_intertial_reject(t15, 100LL, 100LL); + goto LAB9; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_10(char *t0) +{ + unsigned char t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + unsigned char t6; + unsigned char t7; + char *t8; + unsigned char t9; + unsigned char t10; + char *t11; + char *t12; + char *t13; + char *t14; + char *t15; + +LAB0: t2 = (t0 + 2048U); + t3 = xsi_signal_has_event(t2); + if (t3 == 1) + goto LAB5; + +LAB6: t1 = (unsigned char)0; + +LAB7: if (t1 != 0) + goto LAB2; + +LAB4: +LAB3: t2 = (t0 + 14432); + *((int *)t2) = 1; + +LAB1: return; +LAB2: t4 = (t0 + 6888U); + t8 = *((char **)t4); + t9 = *((unsigned char *)t8); + t10 = (t9 == (unsigned char)3); + if (t10 != 0) + goto LAB8; + +LAB10: t2 = (t0 + 2568U); + t4 = *((char **)t2); + t1 = *((unsigned char *)t4); + t2 = (t0 + 15296); + t5 = (t2 + 56U); + t8 = *((char **)t5); + t11 = (t8 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = t1; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t13 = (t0 + 15296); + xsi_driver_intertial_reject(t13, 100LL, 100LL); + +LAB9: goto LAB3; + +LAB5: t4 = (t0 + 2088U); + t5 = *((char **)t4); + t6 = *((unsigned char *)t5); + t7 = (t6 == (unsigned char)3); + t1 = t7; + goto LAB7; + +LAB8: t4 = (t0 + 15296); + t11 = (t4 + 56U); + t12 = *((char **)t11); + t13 = (t12 + 56U); + t14 = *((char **)t13); + *((unsigned char *)t14) = (unsigned char)2; + xsi_driver_first_trans_delta(t4, 0U, 1, 100LL); + t15 = (t0 + 15296); + xsi_driver_intertial_reject(t15, 100LL, 100LL); + goto LAB9; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_11(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + unsigned char t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + unsigned char t10; + unsigned char t11; + unsigned char t12; + unsigned char t13; + char *t14; + char *t15; + unsigned char t16; + unsigned char t17; + unsigned char t18; + unsigned char t19; + unsigned char t20; + unsigned char t21; + char *t22; + char *t23; + +LAB0: t1 = (t0 + 6728U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB2; + +LAB4: t1 = (t0 + 2048U); + t4 = xsi_signal_has_event(t1); + if (t4 == 1) + goto LAB7; + +LAB8: t3 = (unsigned char)0; + +LAB9: if (t3 != 0) + goto LAB5; + +LAB6: +LAB3: t1 = (t0 + 14448); + *((int *)t1) = 1; + +LAB1: return; +LAB2: t1 = (t0 + 15360); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15360); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + t1 = (t0 + 15424); + t2 = (t1 + 56U); + t5 = *((char **)t2); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t8 = (t0 + 15424); + xsi_driver_intertial_reject(t8, 100LL, 100LL); + goto LAB3; + +LAB5: t2 = (t0 + 6888U); + t6 = *((char **)t2); + t12 = *((unsigned char *)t6); + t13 = (t12 == (unsigned char)3); + if (t13 != 0) + goto LAB10; + +LAB12: t1 = (t0 + 5608U); + t2 = *((char **)t1); + t4 = *((unsigned char *)t2); + t10 = (t4 == (unsigned char)3); + if (t10 == 1) + goto LAB16; + +LAB17: t1 = (t0 + 2728U); + t5 = *((char **)t1); + t13 = *((unsigned char *)t5); + t16 = (t13 == (unsigned char)2); + if (t16 == 1) + goto LAB22; + +LAB23: t12 = (unsigned char)0; + +LAB24: if (t12 == 1) + goto LAB19; + +LAB20: t11 = (unsigned char)0; + +LAB21: t3 = t11; + +LAB18: if (t3 != 0) + goto LAB13; + +LAB15: +LAB14: t1 = (t0 + 6408U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15424); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15424); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + +LAB11: goto LAB3; + +LAB7: t2 = (t0 + 2088U); + t5 = *((char **)t2); + t10 = *((unsigned char *)t5); + t11 = (t10 == (unsigned char)3); + t3 = t11; + goto LAB9; + +LAB10: t2 = (t0 + 15360); + t7 = (t2 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t14 = *((char **)t9); + *((unsigned char *)t14) = (unsigned char)3; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t15 = (t0 + 15360); + xsi_driver_intertial_reject(t15, 100LL, 100LL); + t1 = (t0 + 15424); + t2 = (t1 + 56U); + t5 = *((char **)t2); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t8 = (t0 + 15424); + xsi_driver_intertial_reject(t8, 100LL, 100LL); + goto LAB11; + +LAB13: t1 = (t0 + 2728U); + t8 = *((char **)t1); + t21 = *((unsigned char *)t8); + t1 = (t0 + 15360); + t9 = (t1 + 56U); + t14 = *((char **)t9); + t15 = (t14 + 56U); + t22 = *((char **)t15); + *((unsigned char *)t22) = t21; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t23 = (t0 + 15360); + xsi_driver_intertial_reject(t23, 100LL, 100LL); + goto LAB14; + +LAB16: t3 = (unsigned char)1; + goto LAB18; + +LAB19: t1 = (t0 + 2568U); + t7 = *((char **)t1); + t19 = *((unsigned char *)t7); + t20 = (t19 == (unsigned char)2); + t11 = t20; + goto LAB21; + +LAB22: t1 = (t0 + 5448U); + t6 = *((char **)t1); + t17 = *((unsigned char *)t6); + t18 = (t17 == (unsigned char)3); + t12 = t18; + goto LAB24; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_12(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 5928U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15488); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 14464); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_13(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 6408U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15552); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 14480); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_14(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 5768U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15616); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 14496); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_15(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 5288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15680); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 14512); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_16(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 5448U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15744); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 14528); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_17(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + unsigned char t5; + unsigned char t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + +LAB0: +LAB3: t1 = (t0 + 6088U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 6248U); + t4 = *((char **)t1); + t5 = *((unsigned char *)t4); + t6 = ieee_p_2592010699_sub_1605435078_2592010699(IEEE_P_2592010699, t3, t5); + t1 = (t0 + 15808); + t7 = (t1 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((unsigned char *)t10) = t6; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t11 = (t0 + 14544); + *((int *)t11) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_18(char *t0) +{ + char t10[16]; + char *t1; + char *t2; + unsigned char t3; + unsigned char t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + char *t11; + char *t12; + char *t13; + unsigned char t14; + unsigned char t15; + unsigned char t16; + unsigned char t17; + +LAB0: t1 = (t0 + 6728U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB2; + +LAB4: t1 = (t0 + 2048U); + t4 = xsi_signal_has_event(t1); + if (t4 == 1) + goto LAB10; + +LAB11: t3 = (unsigned char)0; + +LAB12: if (t3 != 0) + goto LAB8; + +LAB9: +LAB3: t1 = (t0 + 14560); + *((int *)t1) = 1; + +LAB1: return; +LAB2: t1 = (t0 + 15872); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15872); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + t1 = (t0 + 15936); + t2 = (t1 + 56U); + t5 = *((char **)t2); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t8 = (t0 + 15936); + xsi_driver_intertial_reject(t8, 100LL, 100LL); + t3 = (0 == 1); + if (t3 != 0) + goto LAB5; + +LAB7: +LAB6: goto LAB3; + +LAB5: t1 = (t0 + 22492); + t5 = (t0 + 22340U); + t6 = xilinxcorelib_a_3173924170_3212880686_sub_3703097363_3212880686(t0, t10, t1, t5, 8); + t7 = (t0 + 16000); + t8 = (t7 + 56U); + t9 = *((char **)t8); + t11 = (t9 + 56U); + t12 = *((char **)t11); + memcpy(t12, t6, 8U); + xsi_driver_first_trans_delta(t7, 0U, 8U, 100LL); + t13 = (t0 + 16000); + xsi_driver_intertial_reject(t13, 100LL, 100LL); + goto LAB6; + +LAB8: t2 = (t0 + 6888U); + t6 = *((char **)t2); + t16 = *((unsigned char *)t6); + t17 = (t16 == (unsigned char)3); + if (t17 != 0) + goto LAB13; + +LAB15: t1 = (t0 + 5608U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t4 = (t3 == (unsigned char)3); + if (t4 != 0) + goto LAB19; + +LAB21: +LAB20: +LAB14: goto LAB3; + +LAB10: t2 = (t0 + 2088U); + t5 = *((char **)t2); + t14 = *((unsigned char *)t5); + t15 = (t14 == (unsigned char)3); + t3 = t15; + goto LAB12; + +LAB13: t2 = (t0 + 15872); + t7 = (t2 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t11 = *((char **)t9); + *((unsigned char *)t11) = (unsigned char)2; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t12 = (t0 + 15872); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t1 = (t0 + 15936); + t2 = (t1 + 56U); + t5 = *((char **)t2); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t8 = (t0 + 15936); + xsi_driver_intertial_reject(t8, 100LL, 100LL); + t3 = (0 == 1); + if (t3 != 0) + goto LAB16; + +LAB18: +LAB17: goto LAB14; + +LAB16: t1 = (t0 + 22493); + t5 = (t0 + 22340U); + t6 = xilinxcorelib_a_3173924170_3212880686_sub_3703097363_3212880686(t0, t10, t1, t5, 8); + t7 = (t0 + 16000); + t8 = (t7 + 56U); + t9 = *((char **)t8); + t11 = (t9 + 56U); + t12 = *((char **)t11); + memcpy(t12, t6, 8U); + xsi_driver_first_trans_delta(t7, 0U, 8U, 100LL); + t13 = (t0 + 16000); + xsi_driver_intertial_reject(t13, 100LL, 100LL); + goto LAB17; + +LAB19: t1 = (t0 + 2888U); + t5 = *((char **)t1); + t1 = (t0 + 16000); + t6 = (t1 + 56U); + t7 = *((char **)t6); + t8 = (t7 + 56U); + t9 = *((char **)t8); + memcpy(t9, t5, 8U); + xsi_driver_first_trans_delta(t1, 0U, 8U, 100LL); + t11 = (t0 + 16000); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + t1 = (t0 + 3048U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15872); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15872); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + t1 = (t0 + 3208U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 15936); + t5 = (t1 + 56U); + t6 = *((char **)t5); + t7 = (t6 + 56U); + t8 = *((char **)t7); + *((unsigned char *)t8) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t9 = (t0 + 15936); + xsi_driver_intertial_reject(t9, 100LL, 100LL); + goto LAB20; + +} + +static void xilinxcorelib_a_3173924170_3212880686_p_19(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + +LAB0: +LAB3: t1 = (t0 + 4808U); + t2 = *((char **)t1); + t1 = (t0 + 16064); + t3 = (t1 + 56U); + t4 = *((char **)t3); + t5 = (t4 + 56U); + t6 = *((char **)t5); + memcpy(t6, t2, 8U); + xsi_driver_first_trans_fast_port(t1); + +LAB2: t7 = (t0 + 14576); + *((int *)t7) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + + +extern void xilinxcorelib_a_3173924170_3212880686_init() +{ + static char *pe[] = {(void *)xilinxcorelib_a_3173924170_3212880686_p_0,(void *)xilinxcorelib_a_3173924170_3212880686_p_1,(void *)xilinxcorelib_a_3173924170_3212880686_p_2,(void *)xilinxcorelib_a_3173924170_3212880686_p_3,(void *)xilinxcorelib_a_3173924170_3212880686_p_4,(void *)xilinxcorelib_a_3173924170_3212880686_p_5,(void *)xilinxcorelib_a_3173924170_3212880686_p_6,(void *)xilinxcorelib_a_3173924170_3212880686_p_7,(void *)xilinxcorelib_a_3173924170_3212880686_p_8,(void *)xilinxcorelib_a_3173924170_3212880686_p_9,(void *)xilinxcorelib_a_3173924170_3212880686_p_10,(void *)xilinxcorelib_a_3173924170_3212880686_p_11,(void *)xilinxcorelib_a_3173924170_3212880686_p_12,(void *)xilinxcorelib_a_3173924170_3212880686_p_13,(void *)xilinxcorelib_a_3173924170_3212880686_p_14,(void *)xilinxcorelib_a_3173924170_3212880686_p_15,(void *)xilinxcorelib_a_3173924170_3212880686_p_16,(void *)xilinxcorelib_a_3173924170_3212880686_p_17,(void *)xilinxcorelib_a_3173924170_3212880686_p_18,(void *)xilinxcorelib_a_3173924170_3212880686_p_19}; + static char *se[] = {(void *)xilinxcorelib_a_3173924170_3212880686_sub_3703097363_3212880686}; + xsi_register_didat("xilinxcorelib_a_3173924170_3212880686", "isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.didat"); + xsi_register_executes(pe); + xsi_register_subprogram_executes(se); +} diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.didat b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.didat new file mode 100755 index 0000000000000000000000000000000000000000..82cfa7a4dbc3d2bbd80ca40e974b041db1abc7c6 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.didat differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.nt64.obj b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.nt64.obj new file mode 100755 index 0000000000000000000000000000000000000000..2143c7a3de2c0ac330e0ac4405ed67e54c72c2ee Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_3173924170_3212880686.nt64.obj differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.c b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.c new file mode 100755 index 0000000000000000000000000000000000000000..fb896d36e8d410acec6211e2c0881e5b67567e66 --- /dev/null +++ b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.c @@ -0,0 +1,5654 @@ +/**********************************************************************/ +/* ____ ____ */ +/* / /\/ / */ +/* /___/ \ / */ +/* \ \ \/ */ +/* \ \ Copyright (c) 2003-2009 Xilinx, Inc. */ +/* / / All Right Reserved. */ +/* /---/ /\ */ +/* \ \ / \ */ +/* \___\/\___\ */ +/***********************************************************************/ + +/* This file is designed for use with ISim build 0x7dea747 */ + +#define XSI_HIDE_SYMBOL_SPEC true +#include "xsi.h" +#include <memory.h> +#ifdef __GNUC__ +#include <stdlib.h> +#else +#include <malloc.h> +#define alloca _alloca +#endif +extern char *STD_STANDARD; +static const char *ng1 = "Function int_2_std_logic ended without a return statement"; +extern char *IEEE_P_2592010699; +static const char *ng3 = "Function get_lesser ended without a return statement"; +static const char *ng4 = ""; +extern char *IEEE_P_3499444699; +extern char *IEEE_P_3620187407; + +unsigned char ieee_p_2592010699_sub_1690584930_2592010699(char *, unsigned char ); +char *ieee_p_3499444699_sub_2213602152_3499444699(char *, char *, int , int ); +int ieee_p_3620187407_sub_514432868_3620187407(char *, char *, char *); + + +int xilinxcorelib_a_4048593843_3212880686_sub_1842417276_3212880686(char *t1, int t2, int t3, int t4) +{ + char t6[16]; + int t0; + char *t7; + char *t8; + char *t9; + int t10; + +LAB0: t7 = (t6 + 4U); + *((int *)t7) = t2; + t8 = (t6 + 8U); + *((int *)t8) = t3; + t9 = (t6 + 12U); + *((int *)t9) = t4; + t10 = (t2 - 1); + t0 = t10; + +LAB1: return t0; +LAB2:; +} + +int xilinxcorelib_a_4048593843_3212880686_sub_1315575287_3212880686(char *t1, int t2, int t3) +{ + char t4[128]; + char t5[16]; + char t9[8]; + int t0; + char *t6; + char *t7; + char *t8; + char *t10; + char *t11; + char *t12; + char *t13; + int t14; + char *t15; + char *t16; + unsigned char t17; + int t18; + int t19; + +LAB0: t6 = (t4 + 4U); + t7 = ((STD_STANDARD) + 384); + t8 = (t6 + 88U); + *((char **)t8) = t7; + t10 = (t6 + 56U); + *((char **)t10) = t9; + xsi_type_set_default_value(t7, t9, 0); + t11 = (t6 + 80U); + *((unsigned int *)t11) = 4U; + t12 = (t5 + 4U); + *((int *)t12) = t2; + t13 = (t5 + 8U); + *((int *)t13) = t3; + t14 = (t2 / t3); + t15 = (t6 + 56U); + t16 = *((char **)t15); + t15 = (t16 + 0); + *((int *)t15) = t14; + t14 = xsi_vhdl_mod(t2, t3); + t17 = (t14 != 0); + if (t17 != 0) + goto LAB2; + +LAB4: +LAB3: t7 = (t6 + 56U); + t8 = *((char **)t7); + t14 = *((int *)t8); + t0 = t14; + +LAB1: return t0; +LAB2: t7 = (t6 + 56U); + t8 = *((char **)t7); + t18 = *((int *)t8); + t19 = (t18 + 1); + t7 = (t6 + 56U); + t10 = *((char **)t7); + t7 = (t10 + 0); + *((int *)t7) = t19; + goto LAB3; + +LAB5:; +} + +unsigned char xilinxcorelib_a_4048593843_3212880686_sub_2978940197_3212880686(char *t1, int t2) +{ + char t4[8]; + unsigned char t0; + char *t5; + unsigned char t6; + +LAB0: t5 = (t4 + 4U); + *((int *)t5) = t2; + t6 = (t2 == 1); + if (t6 != 0) + goto LAB2; + +LAB4: t0 = (unsigned char)2; + +LAB1: return t0; +LAB2: t0 = (unsigned char)3; + goto LAB1; + +LAB3: xsi_error(ng1); + t0 = 0; + goto LAB1; + +LAB5: goto LAB3; + +LAB6: goto LAB3; + +} + +int xilinxcorelib_a_4048593843_3212880686_sub_3672023036_3212880686(char *t1, unsigned char t2, int t3, int t4) +{ + char t5[128]; + char t6[16]; + char t10[8]; + int t0; + char *t7; + char *t8; + char *t9; + char *t11; + char *t12; + char *t13; + char *t14; + char *t15; + unsigned char t16; + char *t17; + char *t18; + int t19; + +LAB0: t7 = (t5 + 4U); + t8 = ((STD_STANDARD) + 384); + t9 = (t7 + 88U); + *((char **)t9) = t8; + t11 = (t7 + 56U); + *((char **)t11) = t10; + *((int *)t10) = 0; + t12 = (t7 + 80U); + *((unsigned int *)t12) = 4U; + t13 = (t6 + 4U); + *((unsigned char *)t13) = t2; + t14 = (t6 + 5U); + *((int *)t14) = t3; + t15 = (t6 + 9U); + *((int *)t15) = t4; + t16 = (!(t2)); + if (t16 != 0) + goto LAB2; + +LAB4: t8 = (t7 + 56U); + t9 = *((char **)t8); + t8 = (t9 + 0); + *((int *)t8) = t3; + +LAB3: t8 = (t7 + 56U); + t9 = *((char **)t8); + t19 = *((int *)t9); + t0 = t19; + +LAB1: return t0; +LAB2: t17 = (t7 + 56U); + t18 = *((char **)t17); + t17 = (t18 + 0); + *((int *)t17) = t4; + goto LAB3; + +LAB5:; +} + +char *xilinxcorelib_a_4048593843_3212880686_sub_3703097363_3212880686(char *t1, char *t2, char *t3, char *t4, int t5) +{ + char t6[368]; + char t7[24]; + char t16[16]; + char t28[16]; + char t34[8]; + char t41[8]; + char *t0; + int t8; + int t9; + unsigned int t10; + char *t11; + char *t12; + int t13; + int t14; + unsigned int t15; + int t17; + char *t18; + char *t19; + int t20; + unsigned int t21; + char *t22; + char *t23; + char *t24; + char *t25; + char *t26; + char *t27; + char *t29; + char *t30; + int t31; + char *t32; + char *t33; + char *t35; + char *t36; + char *t37; + char *t38; + char *t39; + char *t40; + char *t42; + char *t43; + char *t44; + unsigned char t45; + char *t46; + char *t47; + char *t48; + int t49; + int t50; + char *t51; + int t52; + char *t53; + int t54; + int t55; + int t56; + int t57; + int t58; + char *t59; + int t60; + char *t61; + int t62; + int t63; + unsigned int t64; + unsigned int t65; + char *t66; + unsigned char t67; + char *t68; + char *t69; + unsigned int t70; + char *t71; + char *t72; + char *t73; + char *t74; + char *t75; + unsigned int t76; + int t77; + static char *nl0[] = {&&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB9, &&LAB10, &&LAB11, &&LAB12, &&LAB13, &&LAB14, &&LAB15, &&LAB16, &&LAB17, &&LAB18, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB19, &&LAB21, &&LAB23, &&LAB25, &&LAB27, &&LAB29, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB20, &&LAB22, &&LAB24, &&LAB26, &&LAB28, &&LAB30, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31, &&LAB31}; + +LAB0: t8 = (t5 - 1); + t9 = (0 - t8); + t10 = (t9 * -1); + t10 = (t10 + 1); + t10 = (t10 * 1U); + t11 = xsi_get_transient_memory(t10); + memset(t11, 0, t10); + t12 = t11; + memset(t12, (unsigned char)2, t10); + t13 = (t5 - 1); + t14 = (0 - t13); + t15 = (t14 * -1); + t15 = (t15 + 1); + t15 = (t15 * 1U); + t17 = (t5 - 1); + t18 = (t16 + 0U); + t19 = (t18 + 0U); + *((int *)t19) = t17; + t19 = (t18 + 4U); + *((int *)t19) = 0; + t19 = (t18 + 8U); + *((int *)t19) = -1; + t20 = (0 - t17); + t21 = (t20 * -1); + t21 = (t21 + 1); + t19 = (t18 + 12U); + *((unsigned int *)t19) = t21; + t19 = (t6 + 4U); + t22 = ((IEEE_P_2592010699) + 4024); + t23 = (t19 + 88U); + *((char **)t23) = t22; + t24 = (char *)alloca(t15); + t25 = (t19 + 56U); + *((char **)t25) = t24; + memcpy(t24, t11, t15); + t26 = (t19 + 64U); + *((char **)t26) = t16; + t27 = (t19 + 80U); + *((unsigned int *)t27) = t15; + t29 = (t28 + 0U); + t30 = (t29 + 0U); + *((int *)t30) = 3; + t30 = (t29 + 4U); + *((int *)t30) = 0; + t30 = (t29 + 8U); + *((int *)t30) = -1; + t31 = (0 - 3); + t21 = (t31 * -1); + t21 = (t21 + 1); + t30 = (t29 + 12U); + *((unsigned int *)t30) = t21; + t30 = (t6 + 124U); + t32 = ((IEEE_P_2592010699) + 4024); + t33 = (t30 + 88U); + *((char **)t33) = t32; + t35 = (t30 + 56U); + *((char **)t35) = t34; + xsi_type_set_default_value(t32, t34, t28); + t36 = (t30 + 64U); + *((char **)t36) = t28; + t37 = (t30 + 80U); + *((unsigned int *)t37) = 4U; + t38 = (t6 + 244U); + t39 = ((STD_STANDARD) + 384); + t40 = (t38 + 88U); + *((char **)t40) = t39; + t42 = (t38 + 56U); + *((char **)t42) = t41; + *((int *)t41) = 0; + t43 = (t38 + 80U); + *((unsigned int *)t43) = 4U; + t44 = (t7 + 4U); + t45 = (t3 != 0); + if (t45 == 1) + goto LAB3; + +LAB2: t46 = (t7 + 12U); + *((char **)t46) = t4; + t47 = (t7 + 20U); + *((int *)t47) = t5; + t48 = (t4 + 8U); + t49 = *((int *)t48); + t50 = (t49 * -1); + t51 = (t4 + 0U); + t52 = *((int *)t51); + t53 = (t4 + 4U); + t54 = *((int *)t53); + t55 = t54; + t56 = t52; + +LAB4: t57 = (t56 * t50); + t58 = (t55 * t50); + if (t58 <= t57) + goto LAB5; + +LAB7: t11 = (t19 + 56U); + t12 = *((char **)t11); + t11 = (t16 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t0 = xsi_get_transient_memory(t10); + memcpy(t0, t12, t10); + t18 = (t16 + 0U); + t8 = *((int *)t18); + t22 = (t16 + 4U); + t9 = *((int *)t22); + t23 = (t16 + 8U); + t13 = *((int *)t23); + t25 = (t2 + 0U); + t26 = (t25 + 0U); + *((int *)t26) = t8; + t26 = (t25 + 4U); + *((int *)t26) = t9; + t26 = (t25 + 8U); + *((int *)t26) = t13; + t14 = (t9 - t8); + t15 = (t14 * t13); + t15 = (t15 + 1); + t26 = (t25 + 12U); + *((unsigned int *)t26) = t15; + +LAB1: return t0; +LAB3: *((char **)t44) = *((char **)t3); + goto LAB2; + +LAB5: t59 = (t4 + 0U); + t60 = *((int *)t59); + t61 = (t4 + 8U); + t62 = *((int *)t61); + t63 = (t55 - t60); + t21 = (t63 * t62); + t64 = (1U * t21); + t65 = (0 + t64); + t66 = (t3 + t65); + t67 = *((unsigned char *)t66); + t68 = (char *)((nl0) + t67); + goto **((char **)t68); + +LAB6: if (t55 == t56) + goto LAB7; + +LAB45: t8 = (t55 + t50); + t55 = t8; + goto LAB4; + +LAB8: t8 = 0; + t9 = 3; + +LAB37: if (t8 <= t9) + goto LAB38; + +LAB40: t11 = (t38 + 56U); + t12 = *((char **)t11); + t8 = *((int *)t12); + t9 = (t8 + 1); + t11 = (t38 + 56U); + t18 = *((char **)t11); + t11 = (t18 + 0); + *((int *)t11) = t9; + goto LAB6; + +LAB9: t69 = (t28 + 12U); + t70 = *((unsigned int *)t69); + t70 = (t70 * 1U); + t71 = xsi_get_transient_memory(t70); + memset(t71, 0, t70); + t72 = t71; + memset(t72, (unsigned char)2, t70); + t73 = (t30 + 56U); + t74 = *((char **)t73); + t73 = (t74 + 0); + t75 = (t28 + 12U); + t76 = *((unsigned int *)t75); + t76 = (t76 * 1U); + memcpy(t73, t71, t76); + goto LAB8; + +LAB10: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB11: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB12: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (1 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB13: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (2 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB14: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB15: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB16: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (3 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB17: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (3 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB18: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)2, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)3; + t14 = (3 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)3; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB19: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB20: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (2 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB21: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (2 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB22: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (2 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB23: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (1 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB24: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t14 = (1 - t8); + t64 = (t14 * t9); + t65 = (1U * t64); + t26 = (t18 + t65); + *((unsigned char *)t26) = (unsigned char)2; + t27 = (t30 + 56U); + t29 = *((char **)t27); + t27 = (t29 + 0); + t32 = (t28 + 12U); + t70 = *((unsigned int *)t32); + t70 = (t70 * 1U); + memcpy(t27, t12, t70); + goto LAB8; + +LAB25: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB26: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (1 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB27: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB28: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t28 + 0U); + t8 = *((int *)t22); + t23 = (t28 + 8U); + t9 = *((int *)t23); + t13 = (0 - t8); + t15 = (t13 * t9); + t21 = (1U * t15); + t25 = (t18 + t21); + *((unsigned char *)t25) = (unsigned char)2; + t26 = (t30 + 56U); + t27 = *((char **)t26); + t26 = (t27 + 0); + t29 = (t28 + 12U); + t64 = *((unsigned int *)t29); + t64 = (t64 * 1U); + memcpy(t26, t12, t64); + goto LAB8; + +LAB29: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t30 + 56U); + t23 = *((char **)t22); + t22 = (t23 + 0); + t25 = (t28 + 12U); + t15 = *((unsigned int *)t25); + t15 = (t15 * 1U); + memcpy(t22, t12, t15); + goto LAB8; + +LAB30: t11 = (t28 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t12 = xsi_get_transient_memory(t10); + memset(t12, 0, t10); + t18 = t12; + memset(t18, (unsigned char)3, t10); + t22 = (t30 + 56U); + t23 = *((char **)t22); + t22 = (t23 + 0); + t25 = (t28 + 12U); + t15 = *((unsigned int *)t25); + t15 = (t15 * 1U); + memcpy(t22, t12, t15); + goto LAB8; + +LAB31: t8 = 0; + t9 = 3; + +LAB32: if (t8 <= t9) + goto LAB33; + +LAB35: goto LAB8; + +LAB33: t11 = (t30 + 56U); + t12 = *((char **)t11); + t11 = (t28 + 0U); + t13 = *((int *)t11); + t18 = (t28 + 8U); + t14 = *((int *)t18); + t17 = (t8 - t13); + t10 = (t17 * t14); + t22 = (t28 + 4U); + t20 = *((int *)t22); + xsi_vhdl_check_range_of_index(t13, t20, t14, t8); + t15 = (1U * t10); + t21 = (0 + t15); + t23 = (t12 + t21); + *((unsigned char *)t23) = (unsigned char)1; + +LAB34: if (t8 == t9) + goto LAB35; + +LAB36: t13 = (t8 + 1); + t8 = t13; + goto LAB32; + +LAB38: t11 = (t38 + 56U); + t12 = *((char **)t11); + t13 = *((int *)t12); + t14 = (t13 * 4); + t17 = (t14 + t8); + t45 = (t17 < t5); + if (t45 != 0) + goto LAB41; + +LAB43: +LAB42: +LAB39: if (t8 == t9) + goto LAB40; + +LAB44: t13 = (t8 + 1); + t8 = t13; + goto LAB37; + +LAB41: t11 = (t30 + 56U); + t18 = *((char **)t11); + t11 = (t28 + 0U); + t20 = *((int *)t11); + t22 = (t28 + 8U); + t31 = *((int *)t22); + t49 = (t8 - t20); + t10 = (t49 * t31); + t23 = (t28 + 4U); + t52 = *((int *)t23); + xsi_vhdl_check_range_of_index(t20, t52, t31, t8); + t15 = (1U * t10); + t21 = (0 + t15); + t25 = (t18 + t21); + t67 = *((unsigned char *)t25); + t26 = (t19 + 56U); + t27 = *((char **)t26); + t26 = (t38 + 56U); + t29 = *((char **)t26); + t54 = *((int *)t29); + t57 = (t54 * 4); + t58 = (t57 + t8); + t26 = (t16 + 0U); + t60 = *((int *)t26); + t32 = (t16 + 8U); + t62 = *((int *)t32); + t63 = (t58 - t60); + t64 = (t63 * t62); + t33 = (t16 + 4U); + t77 = *((int *)t33); + xsi_vhdl_check_range_of_index(t60, t77, t62, t58); + t65 = (1U * t64); + t70 = (0 + t65); + t35 = (t27 + t70); + *((unsigned char *)t35) = t67; + goto LAB42; + +LAB46:; +} + +int xilinxcorelib_a_4048593843_3212880686_sub_2234054365_3212880686(char *t1, int t2, int t3) +{ + char t5[16]; + int t0; + char *t6; + char *t7; + unsigned char t8; + +LAB0: t6 = (t5 + 4U); + *((int *)t6) = t2; + t7 = (t5 + 8U); + *((int *)t7) = t3; + t8 = (t2 < t3); + if (t8 != 0) + goto LAB2; + +LAB4: t0 = t3; + +LAB1: return t0; +LAB2: t0 = t2; + goto LAB1; + +LAB3: xsi_error(ng3); + t0 = 0; + goto LAB1; + +LAB5: goto LAB3; + +LAB6: goto LAB3; + +} + +void xilinxcorelib_a_4048593843_3212880686_sub_1807611230_3212880686(char *t0, char *t1, char *t2, char *t3, char *t4) +{ + char t6[32]; + char *t7; + char *t8; + char *t9; + char *t10; + +LAB0: t7 = (t6 + 4U); + *((char **)t7) = t2; + t8 = (t6 + 12U); + *((char **)t8) = t3; + t9 = (t6 + 20U); + *((char **)t9) = t4; + xsi_access_variable_set_value(t2, 0); + xsi_access_variable_set_value(t3, 0); + t10 = (t4 + 0); + *((int *)t10) = 0; + +LAB1: return; +} + +void xilinxcorelib_a_4048593843_3212880686_sub_2129810750_3212880686(char *t0, char *t1, char *t2, char *t3, char *t4, char *t5, char *t6, char *t7) +{ + char t8[272]; + char t9[64]; + char t10[16]; + char t26[16]; + char t32[8]; + char t64[16]; + char t66[16]; + char t73[16]; + char t75[16]; + char *t11; + char *t12; + int t13; + unsigned int t14; + char *t15; + char *t16; + char *t17; + char *t18; + char *t19; + char *t20; + char *t21; + char *t22; + char *t23; + char *t24; + char *t25; + char *t27; + char *t28; + int t29; + char *t30; + char *t31; + char *t33; + char *t34; + char *t35; + char *t36; + char *t37; + char *t38; + unsigned char t39; + char *t40; + char *t41; + char *t42; + unsigned char t43; + char *t44; + unsigned char t45; + int t46; + int t47; + int t48; + int t49; + int t50; + unsigned int t51; + unsigned int t52; + int t53; + int t54; + int t55; + int t56; + int t57; + int t58; + int t59; + unsigned int t60; + unsigned int t61; + unsigned int t62; + unsigned char t63; + unsigned int t65; + unsigned int t67; + unsigned int t68; + unsigned int t69; + int t70; + char *t71; + char *t72; + char *t74; + int t76; + char *t77; + int t78; + char *t79; + int t80; + char *t81; + int t82; + int t83; + int t84; + char *t85; + int t86; + char *t87; + int t88; + char *t89; + int t90; + char *t91; + char *t92; + int t93; + char *t94; + char *t95; + char *t96; + int t97; + char *t98; + int t99; + char *t100; + int t101; + char *t102; + int t103; + int t104; + int t105; + char *t106; + int t107; + char *t108; + int t109; + char *t110; + int t111; + int t112; + unsigned int t113; + unsigned int t114; + unsigned int t115; + +LAB0: t11 = (t10 + 0U); + t12 = (t11 + 0U); + *((int *)t12) = 2; + t12 = (t11 + 4U); + *((int *)t12) = 0; + t12 = (t11 + 8U); + *((int *)t12) = -1; + t13 = (0 - 2); + t14 = (t13 * -1); + t14 = (t14 + 1); + t12 = (t11 + 12U); + *((unsigned int *)t12) = t14; + t12 = (t8 + 4U); + t15 = (t0 + 33256); + t16 = (t12 + 56U); + *((char **)t16) = t15; + t17 = (t12 + 40U); + *((char **)t17) = 0; + t18 = (t12 + 64U); + *((int *)t18) = 1; + t19 = (t12 + 48U); + *((char **)t19) = 0; + t20 = (t8 + 76U); + t21 = (t0 + 33256); + t22 = (t20 + 56U); + *((char **)t22) = t21; + t23 = (t20 + 40U); + *((char **)t23) = 0; + t24 = (t20 + 64U); + *((int *)t24) = 1; + t25 = (t20 + 48U); + *((char **)t25) = 0; + t27 = (t26 + 0U); + t28 = (t27 + 0U); + *((int *)t28) = 1; + t28 = (t27 + 4U); + *((int *)t28) = 0; + t28 = (t27 + 8U); + *((int *)t28) = -1; + t29 = (0 - 1); + t14 = (t29 * -1); + t14 = (t14 + 1); + t28 = (t27 + 12U); + *((unsigned int *)t28) = t14; + t28 = (t8 + 148U); + t30 = ((IEEE_P_2592010699) + 4024); + t31 = (t28 + 88U); + *((char **)t31) = t30; + t33 = (t28 + 56U); + *((char **)t33) = t32; + xsi_type_set_default_value(t30, t32, t26); + t34 = (t28 + 64U); + *((char **)t34) = t26; + t35 = (t28 + 80U); + *((unsigned int *)t35) = 2U; + t36 = (t9 + 4U); + *((char **)t36) = t2; + t37 = (t9 + 12U); + *((char **)t37) = t3; + t38 = (t9 + 20U); + t39 = (t4 != 0); + if (t39 == 1) + goto LAB3; + +LAB2: t40 = (t9 + 28U); + *((char **)t40) = t5; + t41 = (t9 + 36U); + *((char **)t41) = t6; + t42 = (t9 + 44U); + t43 = (t7 != 0); + if (t43 == 1) + goto LAB5; + +LAB4: t44 = (t9 + 52U); + *((char **)t44) = t10; + t45 = xsi_access_variable_is_null(t2); + if ((!(t45)) != 0) + goto LAB6; + +LAB8: +LAB7: t11 = (t0 + 32744); + t15 = xsi_variable_create(ng4, t11, 0, 0, 0, 0); + xsi_access_variable_set_value(t20, t15); + t11 = xsi_access_variable_all(t20); + t15 = (t11 + 56U); + t16 = *((char **)t15); + t15 = (t16 + 16U); + xsi_access_variable_assign(t15, t12); + t39 = xsi_access_variable_is_null(t2); + if ((!(t39)) != 0) + goto LAB9; + +LAB11: +LAB10: t11 = (t5 + 0U); + t29 = *((int *)t11); + t15 = (t5 + 4U); + t46 = *((int *)t15); + t16 = (t5 + 8U); + t47 = *((int *)t16); + if (t29 > t46) + goto LAB12; + +LAB13: if (t47 == -1) + goto LAB17; + +LAB18: t13 = t46; + +LAB14: t17 = (t5 + 0U); + t48 = *((int *)t17); + t18 = (t5 + 8U); + t49 = *((int *)t18); + t50 = (t13 - t48); + t14 = (t50 * t49); + t51 = (1U * t14); + t52 = (0 + t51); + t19 = (t4 + t52); + t39 = *((unsigned char *)t19); + t43 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t39); + t21 = (t5 + 0U); + t54 = *((int *)t21); + t22 = (t5 + 4U); + t55 = *((int *)t22); + t23 = (t5 + 8U); + t56 = *((int *)t23); + if (t54 > t55) + goto LAB19; + +LAB20: if (t56 == -1) + goto LAB24; + +LAB25: t53 = t54; + +LAB21: t24 = (t5 + 0U); + t57 = *((int *)t24); + t25 = (t5 + 8U); + t58 = *((int *)t25); + t59 = (t53 - t57); + t60 = (t59 * t58); + t61 = (1U * t60); + t62 = (0 + t61); + t27 = (t4 + t62); + t45 = *((unsigned char *)t27); + t63 = ieee_p_2592010699_sub_1690584930_2592010699(IEEE_P_2592010699, t45); + t31 = ((IEEE_P_2592010699) + 4024); + t30 = xsi_base_array_concat(t30, t64, t31, (char)99, t43, (char)99, t63, (char)101); + t33 = (t28 + 56U); + t34 = *((char **)t33); + t33 = (t34 + 0); + t65 = (1U + 1U); + memcpy(t33, t30, t65); + t11 = (t10 + 0U); + t13 = *((int *)t11); + t15 = (t10 + 8U); + t29 = *((int *)t15); + t46 = (1 - t13); + t14 = (t46 * t29); + t51 = (1U * t14); + t52 = (0 + t51); + t16 = (t7 + t52); + t39 = *((unsigned char *)t16); + t43 = (t39 == (unsigned char)2); + if (t43 != 0) + goto LAB26; + +LAB28: t11 = (t10 + 0U); + t13 = *((int *)t11); + t15 = (t10 + 8U); + t29 = *((int *)t15); + t46 = (2 - t13); + t14 = (t46 * t29); + t51 = (1U * t14); + t52 = (0 + t51); + t16 = (t7 + t52); + t39 = *((unsigned char *)t16); + t43 = (t39 == (unsigned char)3); + if (t43 != 0) + goto LAB29; + +LAB31: t11 = (t10 + 0U); + t13 = *((int *)t11); + t15 = (t10 + 8U); + t29 = *((int *)t15); + t46 = (1 - t13); + t14 = (t46 * t29); + t51 = (1U * t14); + t52 = (0 + t51); + t16 = (t7 + t52); + t39 = *((unsigned char *)t16); + t18 = ((IEEE_P_2592010699) + 4024); + t17 = xsi_base_array_concat(t17, t64, t18, (char)99, t39, (char)99, (unsigned char)2, (char)101); + t19 = (t28 + 56U); + t21 = *((char **)t19); + t22 = ((IEEE_P_2592010699) + 4024); + t19 = xsi_base_array_concat(t19, t66, t22, (char)97, t17, t64, (char)97, t21, t26, (char)101); + t23 = (t5 + 0U); + t47 = *((int *)t23); + t24 = (t5 + 0U); + t49 = *((int *)t24); + t25 = (t5 + 4U); + t50 = *((int *)t25); + t27 = (t5 + 8U); + t53 = *((int *)t27); + if (t49 > t50) + goto LAB32; + +LAB33: if (t53 == -1) + goto LAB37; + +LAB38: t48 = t50; + +LAB34: t54 = (t48 - 2); + t60 = (t47 - t54); + t30 = (t5 + 0U); + t56 = *((int *)t30); + t31 = (t5 + 4U); + t57 = *((int *)t31); + t33 = (t5 + 8U); + t58 = *((int *)t33); + if (t56 > t57) + goto LAB39; + +LAB40: if (t58 == -1) + goto LAB44; + +LAB45: t55 = t56; + +LAB41: t34 = (t5 + 4U); + t59 = *((int *)t34); + t35 = (t5 + 8U); + t70 = *((int *)t35); + xsi_vhdl_check_range_of_slice(t47, t59, t70, t54, t55, -1); + t61 = (t60 * 1U); + t62 = (0 + t61); + t71 = (t4 + t62); + t74 = ((IEEE_P_2592010699) + 4024); + t77 = (t5 + 0U); + t78 = *((int *)t77); + t79 = (t5 + 4U); + t80 = *((int *)t79); + t81 = (t5 + 8U); + t82 = *((int *)t81); + if (t78 > t80) + goto LAB46; + +LAB47: if (t82 == -1) + goto LAB51; + +LAB52: t76 = t80; + +LAB48: t83 = (t76 - 2); + t85 = (t5 + 0U); + t86 = *((int *)t85); + t87 = (t5 + 4U); + t88 = *((int *)t87); + t89 = (t5 + 8U); + t90 = *((int *)t89); + if (t86 > t88) + goto LAB53; + +LAB54: if (t90 == -1) + goto LAB58; + +LAB59: t84 = t86; + +LAB55: t91 = (t75 + 0U); + t92 = (t91 + 0U); + *((int *)t92) = t83; + t92 = (t91 + 4U); + *((int *)t92) = t84; + t92 = (t91 + 8U); + *((int *)t92) = -1; + t93 = (t84 - t83); + t65 = (t93 * -1); + t65 = (t65 + 1); + t92 = (t91 + 12U); + *((unsigned int *)t92) = t65; + t72 = xsi_base_array_concat(t72, t73, t74, (char)97, t19, t66, (char)97, t71, t75, (char)101); + t92 = xsi_access_variable_all(t20); + t94 = (t92 + 56U); + t95 = *((char **)t94); + t65 = (0 + 0U); + t94 = (t95 + t65); + t67 = (1U + 1U); + t96 = (t26 + 12U); + t68 = *((unsigned int *)t96); + t68 = (t68 * 1U); + t69 = (t67 + t68); + t98 = (t5 + 0U); + t99 = *((int *)t98); + t100 = (t5 + 4U); + t101 = *((int *)t100); + t102 = (t5 + 8U); + t103 = *((int *)t102); + if (t99 > t101) + goto LAB60; + +LAB61: if (t103 == -1) + goto LAB65; + +LAB66: t97 = t101; + +LAB62: t104 = (t97 - 2); + t106 = (t5 + 0U); + t107 = *((int *)t106); + t108 = (t5 + 4U); + t109 = *((int *)t108); + t110 = (t5 + 8U); + t111 = *((int *)t110); + if (t107 > t109) + goto LAB67; + +LAB68: if (t111 == -1) + goto LAB72; + +LAB73: t105 = t107; + +LAB69: t112 = (t105 - t104); + t113 = (t112 * -1); + t113 = (t113 + 1); + t114 = (1U * t113); + t115 = (t69 + t114); + memcpy(t94, t72, t115); + +LAB30: +LAB27: t13 = *((int *)t6); + t29 = (t13 + 1); + t11 = (t6 + 0); + *((int *)t11) = t29; + t11 = xsi_access_variable_all(t20); + t15 = (t11 + 56U); + t16 = *((char **)t15); + t15 = (t16 + 16U); + t39 = xsi_access_variable_is_null(t15); + if (t39 != 0) + goto LAB74; + +LAB76: +LAB75: xsi_access_variable_assign(t2, t20); + +LAB1: xsi_access_variable_delete(t20); + xsi_access_variable_delete(t12); + return; +LAB3: *((char **)t38) = *((char **)t4); + goto LAB2; + +LAB5: *((char **)t42) = *((char **)t7); + goto LAB4; + +LAB6: xsi_access_variable_assign(t12, t2); + goto LAB7; + +LAB9: t11 = xsi_access_variable_all(t12); + t15 = (t11 + 56U); + t16 = *((char **)t15); + t15 = (t16 + 88U); + xsi_access_variable_assign(t15, t20); + goto LAB10; + +LAB12: if (t47 == 1) + goto LAB15; + +LAB16: t13 = t29; + goto LAB14; + +LAB15: t13 = t46; + goto LAB14; + +LAB17: t13 = t29; + goto LAB14; + +LAB19: if (t56 == 1) + goto LAB22; + +LAB23: t53 = t55; + goto LAB21; + +LAB22: t53 = t54; + goto LAB21; + +LAB24: t53 = t55; + goto LAB21; + +LAB26: t17 = (t10 + 0U); + t47 = *((int *)t17); + t18 = (t10 + 8U); + t48 = *((int *)t18); + t49 = (0 - t47); + t60 = (t49 * t48); + t61 = (1U * t60); + t62 = (0 + t61); + t19 = (t7 + t62); + t45 = *((unsigned char *)t19); + t22 = ((IEEE_P_2592010699) + 4024); + t21 = xsi_base_array_concat(t21, t64, t22, (char)99, (unsigned char)2, (char)99, t45, (char)101); + t24 = ((IEEE_P_2592010699) + 4024); + t23 = xsi_base_array_concat(t23, t66, t24, (char)97, t21, t64, (char)97, t4, t5, (char)101); + t25 = xsi_access_variable_all(t20); + t27 = (t25 + 56U); + t30 = *((char **)t27); + t65 = (0 + 0U); + t27 = (t30 + t65); + t67 = (1U + 1U); + t31 = (t5 + 12U); + t68 = *((unsigned int *)t31); + t68 = (t68 * 1U); + t69 = (t67 + t68); + memcpy(t27, t23, t69); + goto LAB27; + +LAB29: t17 = (t10 + 0U); + t47 = *((int *)t17); + t18 = (t10 + 8U); + t48 = *((int *)t18); + t49 = (1 - t47); + t60 = (t49 * t48); + t61 = (1U * t60); + t62 = (0 + t61); + t19 = (t7 + t62); + t45 = *((unsigned char *)t19); + t22 = ((IEEE_P_2592010699) + 4024); + t21 = xsi_base_array_concat(t21, t64, t22, (char)99, t45, (char)99, (unsigned char)2, (char)101); + t23 = (t28 + 56U); + t24 = *((char **)t23); + t25 = ((IEEE_P_2592010699) + 4024); + t23 = xsi_base_array_concat(t23, t66, t25, (char)97, t21, t64, (char)97, t24, t26, (char)101); + t27 = xsi_access_variable_all(t20); + t30 = (t27 + 56U); + t31 = *((char **)t30); + t65 = (0 + 0U); + t30 = (t31 + t65); + t67 = (1U + 1U); + t33 = (t26 + 12U); + t68 = *((unsigned int *)t33); + t68 = (t68 * 1U); + t69 = (t67 + t68); + memcpy(t30, t23, t69); + goto LAB30; + +LAB32: if (t53 == 1) + goto LAB35; + +LAB36: t48 = t49; + goto LAB34; + +LAB35: t48 = t50; + goto LAB34; + +LAB37: t48 = t49; + goto LAB34; + +LAB39: if (t58 == 1) + goto LAB42; + +LAB43: t55 = t57; + goto LAB41; + +LAB42: t55 = t56; + goto LAB41; + +LAB44: t55 = t57; + goto LAB41; + +LAB46: if (t82 == 1) + goto LAB49; + +LAB50: t76 = t78; + goto LAB48; + +LAB49: t76 = t80; + goto LAB48; + +LAB51: t76 = t78; + goto LAB48; + +LAB53: if (t90 == 1) + goto LAB56; + +LAB57: t84 = t88; + goto LAB55; + +LAB56: t84 = t86; + goto LAB55; + +LAB58: t84 = t88; + goto LAB55; + +LAB60: if (t103 == 1) + goto LAB63; + +LAB64: t97 = t99; + goto LAB62; + +LAB63: t97 = t101; + goto LAB62; + +LAB65: t97 = t99; + goto LAB62; + +LAB67: if (t111 == 1) + goto LAB70; + +LAB71: t105 = t109; + goto LAB69; + +LAB70: t105 = t107; + goto LAB69; + +LAB72: t105 = t109; + goto LAB69; + +LAB74: xsi_access_variable_assign(t3, t20); + goto LAB75; + +} + +void xilinxcorelib_a_4048593843_3212880686_sub_2966016925_3212880686(char *t0, char *t1, char *t2, char *t3, char *t4, char *t5) +{ + char t6[128]; + char t7[48]; + char t8[16]; + char t24[16]; + char *t9; + char *t10; + int t11; + unsigned int t12; + char *t13; + int t14; + int t15; + int t16; + char *t17; + char *t18; + char *t19; + int t20; + int t21; + int t22; + unsigned int t23; + char *t25; + int t26; + int t27; + char *t28; + int t29; + unsigned int t30; + char *t31; + char *t32; + char *t33; + char *t34; + char *t35; + char *t36; + char *t37; + char *t38; + char *t39; + char *t40; + char *t41; + char *t42; + char *t43; + char *t44; + char *t45; + char *t46; + char *t47; + char *t48; + int t49; + int t50; + int t51; + unsigned int t52; + unsigned int t53; + int t54; + +LAB0: t9 = (t8 + 0U); + t10 = (t9 + 0U); + *((int *)t10) = 1; + t10 = (t9 + 4U); + *((int *)t10) = 0; + t10 = (t9 + 8U); + *((int *)t10) = -1; + t11 = (0 - 1); + t12 = (t11 * -1); + t12 = (t12 + 1); + t10 = (t9 + 12U); + *((unsigned int *)t10) = t12; + t10 = (t0 + 20224U); + t13 = *((char **)t10); + t14 = *((int *)t13); + t15 = (t14 + 1); + t16 = (0 - t15); + t12 = (t16 * -1); + t12 = (t12 + 1); + t12 = (t12 * 1U); + t10 = xsi_get_transient_memory(t12); + memset(t10, 0, t12); + t17 = t10; + memset(t17, (unsigned char)2, t12); + t18 = (t0 + 20224U); + t19 = *((char **)t18); + t20 = *((int *)t19); + t21 = (t20 + 1); + t22 = (0 - t21); + t23 = (t22 * -1); + t23 = (t23 + 1); + t23 = (t23 * 1U); + t18 = (t0 + 20224U); + t25 = *((char **)t18); + t26 = *((int *)t25); + t27 = (t26 + 1); + t18 = (t24 + 0U); + t28 = (t18 + 0U); + *((int *)t28) = t27; + t28 = (t18 + 4U); + *((int *)t28) = 0; + t28 = (t18 + 8U); + *((int *)t28) = -1; + t29 = (0 - t27); + t30 = (t29 * -1); + t30 = (t30 + 1); + t28 = (t18 + 12U); + *((unsigned int *)t28) = t30; + t28 = (t6 + 4U); + t31 = ((IEEE_P_2592010699) + 4024); + t32 = (t28 + 88U); + *((char **)t32) = t31; + t33 = (char *)alloca(t23); + t34 = (t28 + 56U); + *((char **)t34) = t33; + memcpy(t33, t10, t23); + t35 = (t28 + 64U); + *((char **)t35) = t24; + t36 = (t28 + 80U); + *((unsigned int *)t36) = t23; + t37 = (t7 + 4U); + *((char **)t37) = t2; + t38 = (t7 + 12U); + *((char **)t38) = t3; + t39 = (t7 + 20U); + *((char **)t39) = t4; + t40 = (t7 + 28U); + *((char **)t40) = t5; + t41 = (t7 + 36U); + *((char **)t41) = t8; + t42 = xsi_access_variable_all(t2); + t43 = (t42 + 56U); + t44 = *((char **)t43); + t30 = (0 + 0U); + t43 = (t44 + t30); + t45 = (t28 + 56U); + t46 = *((char **)t45); + t45 = (t46 + 0); + t47 = (t0 + 20224U); + t48 = *((char **)t47); + t49 = *((int *)t48); + t50 = (t49 + 1); + t51 = (0 - t50); + t52 = (t51 * -1); + t52 = (t52 + 1); + t52 = (t52 * 1U); + memcpy(t45, t43, t52); + t9 = (t28 + 56U); + t10 = *((char **)t9); + t9 = (t24 + 0U); + t11 = *((int *)t9); + t13 = (t0 + 20224U); + t17 = *((char **)t13); + t14 = *((int *)t17); + t15 = (t14 - 1); + t12 = (t11 - t15); + t13 = (t24 + 4U); + t16 = *((int *)t13); + t18 = (t24 + 8U); + t20 = *((int *)t18); + xsi_vhdl_check_range_of_slice(t11, t16, t20, t15, 0, -1); + t23 = (t12 * 1U); + t30 = (0 + t23); + t19 = (t10 + t30); + t25 = (t3 + 0); + t31 = (t0 + 20224U); + t32 = *((char **)t31); + t21 = *((int *)t32); + t22 = (t21 - 1); + t26 = (0 - t22); + t52 = (t26 * -1); + t52 = (t52 + 1); + t53 = (1U * t52); + memcpy(t25, t19, t53); + t9 = (t28 + 56U); + t10 = *((char **)t9); + t9 = (t24 + 0U); + t11 = *((int *)t9); + t13 = (t24 + 0U); + t15 = *((int *)t13); + t17 = (t24 + 4U); + t16 = *((int *)t17); + t18 = (t24 + 8U); + t20 = *((int *)t18); + if (t15 > t16) + goto LAB2; + +LAB3: if (t20 == -1) + goto LAB7; + +LAB8: t14 = t16; + +LAB4: t12 = (t11 - t14); + t19 = (t0 + 20224U); + t25 = *((char **)t19); + t21 = *((int *)t25); + t19 = (t24 + 4U); + t22 = *((int *)t19); + t31 = (t24 + 8U); + t26 = *((int *)t31); + xsi_vhdl_check_range_of_slice(t11, t22, t26, t14, t21, -1); + t23 = (t12 * 1U); + t30 = (0 + t23); + t32 = (t10 + t30); + t34 = (t5 + 0); + t35 = (t24 + 0U); + t29 = *((int *)t35); + t36 = (t24 + 4U); + t49 = *((int *)t36); + t42 = (t24 + 8U); + t50 = *((int *)t42); + if (t29 > t49) + goto LAB9; + +LAB10: if (t50 == -1) + goto LAB14; + +LAB15: t27 = t49; + +LAB11: t43 = (t0 + 20224U); + t44 = *((char **)t43); + t51 = *((int *)t44); + t54 = (t51 - t27); + t52 = (t54 * -1); + t52 = (t52 + 1); + t53 = (1U * t52); + memcpy(t34, t32, t53); + +LAB1: return; +LAB2: if (t20 == 1) + goto LAB5; + +LAB6: t14 = t15; + goto LAB4; + +LAB5: t14 = t16; + goto LAB4; + +LAB7: t14 = t15; + goto LAB4; + +LAB9: if (t50 == 1) + goto LAB12; + +LAB13: t27 = t29; + goto LAB11; + +LAB12: t27 = t49; + goto LAB11; + +LAB14: t27 = t29; + goto LAB11; + +} + +void xilinxcorelib_a_4048593843_3212880686_sub_2068494565_3212880686(char *t0, char *t1, char *t2, char *t3, char *t4) +{ + char t5[152]; + char t6[32]; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + char *t12; + char *t13; + char *t14; + char *t15; + char *t16; + char *t17; + char *t18; + char *t19; + char *t20; + char *t21; + unsigned char t22; + int t23; + int t24; + +LAB0: t7 = (t5 + 4U); + t8 = (t0 + 33256); + t9 = (t7 + 56U); + *((char **)t9) = t8; + t10 = (t7 + 40U); + *((char **)t10) = 0; + t11 = (t7 + 64U); + *((int *)t11) = 1; + t12 = (t7 + 48U); + *((char **)t12) = 0; + t13 = (t5 + 76U); + t14 = (t0 + 33256); + t15 = (t13 + 56U); + *((char **)t15) = t14; + t16 = (t13 + 40U); + *((char **)t16) = 0; + t17 = (t13 + 64U); + *((int *)t17) = 1; + t18 = (t13 + 48U); + *((char **)t18) = 0; + t19 = (t6 + 4U); + *((char **)t19) = t2; + t20 = (t6 + 12U); + *((char **)t20) = t3; + t21 = (t6 + 20U); + *((char **)t21) = t4; + xsi_access_variable_assign(t7, t3); + t8 = xsi_access_variable_all(t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + t9 = (t10 + 88U); + t22 = xsi_access_variable_is_null(t9); + if (t22 != 0) + goto LAB2; + +LAB4: t8 = xsi_access_variable_all(t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + t9 = (t10 + 88U); + xsi_access_variable_assign(t13, t9); + t8 = xsi_access_variable_all(t13); + t9 = (t8 + 56U); + t10 = *((char **)t9); + t9 = (t10 + 16U); + xsi_access_variable_set_value(t9, 0); + +LAB3: xsi_access_variable_deallocate(t7); + t22 = xsi_access_variable_is_null(t13); + if (t22 != 0) + goto LAB5; + +LAB7: +LAB6: xsi_access_variable_assign(t3, t13); + t23 = *((int *)t4); + t24 = (t23 - 1); + t8 = (t4 + 0); + *((int *)t8) = t24; + +LAB1: xsi_access_variable_delete(t13); + xsi_access_variable_delete(t7); + return; +LAB2: xsi_access_variable_set_value(t13, 0); + goto LAB3; + +LAB5: xsi_access_variable_set_value(t2, 0); + goto LAB6; + +} + +void xilinxcorelib_a_4048593843_3212880686_sub_3751606365_3212880686(char *t0, char *t1, char *t2, char *t3) +{ + char t4[200]; + char t5[24]; + char t15[8]; + char *t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + char *t12; + char *t13; + char *t14; + char *t16; + char *t17; + char *t18; + char *t19; + unsigned char t20; + int t21; + int t22; + +LAB0: t6 = (t4 + 4U); + t7 = (t0 + 33256); + t8 = (t6 + 56U); + *((char **)t8) = t7; + t9 = (t6 + 40U); + *((char **)t9) = 0; + t10 = (t6 + 64U); + *((int *)t10) = 1; + t11 = (t6 + 48U); + *((char **)t11) = 0; + t12 = (t4 + 76U); + t13 = ((STD_STANDARD) + 384); + t14 = (t12 + 88U); + *((char **)t14) = t13; + t16 = (t12 + 56U); + *((char **)t16) = t15; + *((int *)t15) = 0; + t17 = (t12 + 80U); + *((unsigned int *)t17) = 4U; + t18 = (t5 + 4U); + *((char **)t18) = t2; + t19 = (t5 + 12U); + *((char **)t19) = t3; + t20 = xsi_access_variable_is_null(t2); + if ((!(t20)) != 0) + goto LAB2; + +LAB4: +LAB3: t7 = (t12 + 56U); + t8 = *((char **)t7); + t21 = *((int *)t8); + t7 = (t3 + 0); + *((int *)t7) = t21; + +LAB1: xsi_access_variable_delete(t6); + return; +LAB2: xsi_access_variable_assign(t6, t2); + t7 = (t12 + 56U); + t8 = *((char **)t7); + t7 = (t8 + 0); + *((int *)t7) = 1; + +LAB5: t7 = xsi_access_variable_all(t6); + t8 = (t7 + 56U); + t9 = *((char **)t8); + t8 = (t9 + 16U); + t20 = xsi_access_variable_is_null(t8); + if ((!(t20)) != 0) + goto LAB6; + +LAB8: goto LAB3; + +LAB6: t10 = (t12 + 56U); + t11 = *((char **)t10); + t21 = *((int *)t11); + t22 = (t21 + 1); + t10 = (t12 + 56U); + t13 = *((char **)t10); + t10 = (t13 + 0); + *((int *)t10) = t22; + t7 = xsi_access_variable_all(t6); + t8 = (t7 + 56U); + t9 = *((char **)t8); + t8 = (t9 + 16U); + xsi_access_variable_assign(t6, t8); + goto LAB5; + +LAB7:; +} + +char *xilinxcorelib_a_4048593843_3212880686_sub_4190946951_3212880686(char *t1, char *t2, int t3, int t4, int t5) +{ + char t6[248]; + char t7[16]; + char t16[16]; + char t35[16]; + char t50[16]; + char *t0; + int t8; + int t9; + unsigned int t10; + char *t11; + char *t12; + int t13; + int t14; + unsigned int t15; + int t17; + char *t18; + char *t19; + int t20; + unsigned int t21; + char *t22; + char *t23; + char *t24; + char *t25; + char *t26; + char *t27; + int t28; + int t29; + char *t30; + char *t31; + int t32; + int t33; + unsigned int t34; + int t36; + char *t37; + char *t38; + int t39; + unsigned int t40; + char *t41; + char *t42; + char *t43; + char *t44; + char *t45; + char *t46; + char *t47; + char *t48; + char *t49; + char *t51; + char *t52; + char *t53; + char *t54; + unsigned char t55; + +LAB0: t8 = (t4 - 1); + t9 = (0 - t8); + t10 = (t9 * -1); + t10 = (t10 + 1); + t10 = (t10 * 1U); + t11 = xsi_get_transient_memory(t10); + memset(t11, 0, t10); + t12 = t11; + memset(t12, (unsigned char)2, t10); + t13 = (t4 - 1); + t14 = (0 - t13); + t15 = (t14 * -1); + t15 = (t15 + 1); + t15 = (t15 * 1U); + t17 = (t4 - 1); + t18 = (t16 + 0U); + t19 = (t18 + 0U); + *((int *)t19) = t17; + t19 = (t18 + 4U); + *((int *)t19) = 0; + t19 = (t18 + 8U); + *((int *)t19) = -1; + t20 = (0 - t17); + t21 = (t20 * -1); + t21 = (t21 + 1); + t19 = (t18 + 12U); + *((unsigned int *)t19) = t21; + t19 = (t6 + 4U); + t22 = ((IEEE_P_2592010699) + 4024); + t23 = (t19 + 88U); + *((char **)t23) = t22; + t24 = (char *)alloca(t15); + t25 = (t19 + 56U); + *((char **)t25) = t24; + memcpy(t24, t11, t15); + t26 = (t19 + 64U); + *((char **)t26) = t16; + t27 = (t19 + 80U); + *((unsigned int *)t27) = t15; + t28 = (t5 - 1); + t29 = (0 - t28); + t21 = (t29 * -1); + t21 = (t21 + 1); + t21 = (t21 * 1U); + t30 = xsi_get_transient_memory(t21); + memset(t30, 0, t21); + t31 = t30; + memset(t31, (unsigned char)2, t21); + t32 = (t5 - 1); + t33 = (0 - t32); + t34 = (t33 * -1); + t34 = (t34 + 1); + t34 = (t34 * 1U); + t36 = (t5 - 1); + t37 = (t35 + 0U); + t38 = (t37 + 0U); + *((int *)t38) = t36; + t38 = (t37 + 4U); + *((int *)t38) = 0; + t38 = (t37 + 8U); + *((int *)t38) = -1; + t39 = (0 - t36); + t40 = (t39 * -1); + t40 = (t40 + 1); + t38 = (t37 + 12U); + *((unsigned int *)t38) = t40; + t38 = (t6 + 124U); + t41 = ((IEEE_P_2592010699) + 4024); + t42 = (t38 + 88U); + *((char **)t42) = t41; + t43 = (char *)alloca(t34); + t44 = (t38 + 56U); + *((char **)t44) = t43; + memcpy(t43, t30, t34); + t45 = (t38 + 64U); + *((char **)t45) = t35; + t46 = (t38 + 80U); + *((unsigned int *)t46) = t34; + t47 = (t7 + 4U); + *((int *)t47) = t3; + t48 = (t7 + 8U); + *((int *)t48) = t4; + t49 = (t7 + 12U); + *((int *)t49) = t5; + t51 = ieee_p_3499444699_sub_2213602152_3499444699(IEEE_P_3499444699, t50, t3, t4); + t52 = (t19 + 56U); + t53 = *((char **)t52); + t52 = (t53 + 0); + t54 = (t50 + 12U); + t40 = *((unsigned int *)t54); + t40 = (t40 * 1U); + memcpy(t52, t51, t40); + t55 = (t5 <= t4); + if (t55 != 0) + goto LAB2; + +LAB4: t11 = (t19 + 56U); + t12 = *((char **)t11); + t11 = (t16 + 0U); + t8 = *((int *)t11); + t9 = (t5 - 1); + t10 = (t8 - t9); + t18 = (t16 + 4U); + t13 = *((int *)t18); + t22 = (t16 + 8U); + t14 = *((int *)t22); + xsi_vhdl_check_range_of_slice(t8, t13, t14, t9, 0, -1); + t15 = (t10 * 1U); + t21 = (0 + t15); + t23 = (t12 + t21); + t25 = (t38 + 56U); + t26 = *((char **)t25); + t25 = (t26 + 0); + t17 = (t5 - 1); + t20 = (0 - t17); + t34 = (t20 * -1); + t34 = (t34 + 1); + t40 = (1U * t34); + memcpy(t25, t23, t40); + +LAB3: t11 = (t38 + 56U); + t12 = *((char **)t11); + t11 = (t35 + 12U); + t10 = *((unsigned int *)t11); + t10 = (t10 * 1U); + t0 = xsi_get_transient_memory(t10); + memcpy(t0, t12, t10); + t18 = (t35 + 0U); + t8 = *((int *)t18); + t22 = (t35 + 4U); + t9 = *((int *)t22); + t23 = (t35 + 8U); + t13 = *((int *)t23); + t25 = (t2 + 0U); + t26 = (t25 + 0U); + *((int *)t26) = t8; + t26 = (t25 + 4U); + *((int *)t26) = t9; + t26 = (t25 + 8U); + *((int *)t26) = t13; + t14 = (t9 - t8); + t15 = (t14 * t13); + t15 = (t15 + 1); + t26 = (t25 + 12U); + *((unsigned int *)t26) = t15; + +LAB1: return t0; +LAB2: t11 = (t19 + 56U); + t12 = *((char **)t11); + t11 = (t16 + 0U); + t8 = *((int *)t11); + t9 = (t4 - 1); + t10 = (t8 - t9); + t13 = (t4 - t5); + t18 = (t16 + 4U); + t14 = *((int *)t18); + t22 = (t16 + 8U); + t17 = *((int *)t22); + xsi_vhdl_check_range_of_slice(t8, t14, t17, t9, t13, -1); + t15 = (t10 * 1U); + t21 = (0 + t15); + t23 = (t12 + t21); + t25 = (t38 + 56U); + t26 = *((char **)t25); + t25 = (t26 + 0); + t20 = (t4 - 1); + t28 = (t4 - t5); + t29 = (t28 - t20); + t34 = (t29 * -1); + t34 = (t34 + 1); + t40 = (1U * t34); + memcpy(t25, t23, t40); + goto LAB3; + +LAB5:; +} + +static void xilinxcorelib_a_4048593843_3212880686_p_0(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + +LAB0: +LAB3: t1 = (t0 + 29624); + t2 = (t1 + 56U); + t3 = *((char **)t2); + t4 = (t3 + 56U); + t5 = *((char **)t4); + *((unsigned char *)t5) = (unsigned char)2; + xsi_driver_first_trans_fast(t1); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_1(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + +LAB0: +LAB3: t1 = (t0 + 29688); + t2 = (t1 + 56U); + t3 = *((char **)t2); + t4 = (t3 + 56U); + t5 = *((char **)t4); + *((unsigned char *)t5) = (unsigned char)2; + xsi_driver_first_trans_fast(t1); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_2(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + +LAB0: +LAB3: t1 = (t0 + 29752); + t2 = (t1 + 56U); + t3 = *((char **)t2); + t4 = (t3 + 56U); + t5 = *((char **)t4); + *((unsigned char *)t5) = (unsigned char)2; + xsi_driver_first_trans_fast(t1); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_3(char *t0) +{ + char *t1; + char *t2; + int t3; + char *t4; + int t5; + int t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + +LAB0: +LAB3: t1 = (t0 + 8528U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t5 = *((int *)t4); + t6 = (t3 * t5); + t1 = (t0 + 29816); + t7 = (t1 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t6; + xsi_driver_first_trans_fast(t1); + +LAB2: t11 = (t0 + 29208); + *((int *)t11) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_4(char *t0) +{ + char *t1; + char *t2; + int t3; + char *t4; + int t5; + int t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + +LAB0: +LAB3: t1 = (t0 + 8688U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t5 = *((int *)t4); + t6 = (t3 * t5); + t1 = (t0 + 29880); + t7 = (t1 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t6; + xsi_driver_first_trans_fast(t1); + +LAB2: t11 = (t0 + 29224); + *((int *)t11) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_5(char *t0) +{ + char *t1; + char *t2; + int t3; + char *t4; + int t5; + int t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + +LAB0: +LAB3: t1 = (t0 + 8848U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t5 = *((int *)t4); + t6 = (t3 * t5); + t1 = (t0 + 29944); + t7 = (t1 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t6; + xsi_driver_first_trans_fast(t1); + +LAB2: t11 = (t0 + 29240); + *((int *)t11) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_6(char *t0) +{ + char *t1; + char *t2; + int t3; + char *t4; + int t5; + int t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + +LAB0: +LAB3: t1 = (t0 + 9008U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t5 = *((int *)t4); + t6 = (t3 * t5); + t1 = (t0 + 30008); + t7 = (t1 + 56U); + t8 = *((char **)t7); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t6; + xsi_driver_first_trans_fast(t1); + +LAB2: t11 = (t0 + 29256); + *((int *)t11) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_7(char *t0) +{ + unsigned char t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + char *t10; + char *t11; + +LAB0: t1 = (8 == 2); + if (t1 != 0) + goto LAB3; + +LAB4: +LAB5: t7 = (t0 + 30072); + t8 = (t7 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + *((unsigned char *)t11) = (unsigned char)2; + xsi_driver_first_trans_fast(t7); + +LAB2: +LAB1: return; +LAB3: t2 = (t0 + 30072); + t3 = (t2 + 56U); + t4 = *((char **)t3); + t5 = (t4 + 56U); + t6 = *((char **)t5); + *((unsigned char *)t6) = (unsigned char)3; + xsi_driver_first_trans_fast(t2); + goto LAB2; + +LAB6: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_8(char *t0) +{ + char *t1; + char *t2; + int t3; + char *t4; + int t5; + unsigned char t6; + char *t7; + int t8; + char *t9; + int t10; + int t11; + char *t12; + char *t13; + char *t14; + char *t15; + int t16; + +LAB0: t1 = (t0 + 9488U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 9968U); + t4 = *((char **)t1); + t5 = *((int *)t4); + t6 = (t3 >= t5); + if (t6 != 0) + goto LAB2; + +LAB4: t1 = (t0 + 20464U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t5 = (8192 * t3); + t1 = (t0 + 9488U); + t4 = *((char **)t1); + t8 = *((int *)t4); + t10 = (t5 + t8); + t1 = (t0 + 9968U); + t7 = *((char **)t1); + t11 = *((int *)t7); + t16 = (t10 - t11); + t1 = (t0 + 30136); + t9 = (t1 + 56U); + t12 = *((char **)t9); + t13 = (t12 + 56U); + t14 = *((char **)t13); + *((int *)t14) = t16; + xsi_driver_first_trans_fast(t1); + +LAB3: t1 = (t0 + 9808U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 9648U); + t4 = *((char **)t1); + t5 = *((int *)t4); + t6 = (t3 >= t5); + if (t6 != 0) + goto LAB5; + +LAB7: t1 = (t0 + 20344U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t5 = (8192 * t3); + t1 = (t0 + 9808U); + t4 = *((char **)t1); + t8 = *((int *)t4); + t10 = (t5 + t8); + t1 = (t0 + 9648U); + t7 = *((char **)t1); + t11 = *((int *)t7); + t16 = (t10 - t11); + t1 = (t0 + 30200); + t9 = (t1 + 56U); + t12 = *((char **)t9); + t13 = (t12 + 56U); + t14 = *((char **)t13); + *((int *)t14) = t16; + xsi_driver_first_trans_fast(t1); + +LAB6: t1 = (t0 + 29272); + *((int *)t1) = 1; + +LAB1: return; +LAB2: t1 = (t0 + 9488U); + t7 = *((char **)t1); + t8 = *((int *)t7); + t1 = (t0 + 9968U); + t9 = *((char **)t1); + t10 = *((int *)t9); + t11 = (t8 - t10); + t1 = (t0 + 30136); + t12 = (t1 + 56U); + t13 = *((char **)t12); + t14 = (t13 + 56U); + t15 = *((char **)t14); + *((int *)t15) = t11; + xsi_driver_first_trans_fast(t1); + goto LAB3; + +LAB5: t1 = (t0 + 9808U); + t7 = *((char **)t1); + t8 = *((int *)t7); + t1 = (t0 + 9648U); + t9 = *((char **)t1); + t10 = *((int *)t9); + t11 = (t8 - t10); + t1 = (t0 + 30200); + t12 = (t1 + 56U); + t13 = *((char **)t12); + t14 = (t13 + 56U); + t15 = *((char **)t14); + *((int *)t15) = t11; + xsi_driver_first_trans_fast(t1); + goto LAB6; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_9(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 13168U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30264); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29288); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_10(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 13328U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30328); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29304); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_11(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 13808U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30392); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29320); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_12(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 13968U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30456); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29336); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_13(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 14288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30520); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29352); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_14(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 14608U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30584); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29368); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_15(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + +LAB0: +LAB3: t1 = xsi_get_transient_memory(13U); + memset(t1, 0, 13U); + t2 = t1; + memset(t2, (unsigned char)2, 13U); + t3 = (t0 + 30648); + t4 = (t3 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + memcpy(t7, t1, 13U); + xsi_driver_first_trans_fast_port(t3); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_16(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + +LAB0: +LAB3: t1 = xsi_get_transient_memory(13U); + memset(t1, 0, 13U); + t2 = t1; + memset(t2, (unsigned char)2, 13U); + t3 = (t0 + 30712); + t4 = (t3 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + memcpy(t7, t1, 13U); + xsi_driver_first_trans_fast_port(t3); + +LAB2: +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_17(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 10288U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30776); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29384); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_18(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 10128U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30840); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29400); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_19(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 10608U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30904); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29416); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_20(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + +LAB0: +LAB3: t1 = (t0 + 10448U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 30968); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_fast_port(t1); + +LAB2: t8 = (t0 + 29432); + *((int *)t8) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_21(char *t0) +{ + char t13[16]; + char t26[16]; + char t77[16]; + char *t1; + char *t2; + int t3; + char *t4; + unsigned char t5; + unsigned char t6; + unsigned char t7; + char *t8; + char *t9; + char *t10; + char *t11; + char *t12; + unsigned char t14; + unsigned char t15; + unsigned char t16; + unsigned char t17; + unsigned char t18; + unsigned char t19; + char *t20; + char *t21; + int t22; + int t23; + int t24; + int t25; + char *t27; + int t28; + int t29; + int t30; + char *t31; + int t32; + char *t33; + char *t34; + unsigned int t35; + int t36; + int t37; + unsigned int t38; + unsigned int t39; + int t40; + int t41; + int t42; + int t43; + char *t44; + char *t45; + int t46; + int t47; + int t48; + int t49; + int t50; + unsigned int t51; + unsigned int t52; + char *t53; + char *t54; + char *t55; + int t56; + int t57; + int t58; + int t59; + char *t60; + char *t61; + int t62; + int t63; + int t64; + int t65; + char *t66; + char *t67; + int t68; + unsigned int t69; + char *t70; + char *t71; + char *t72; + char *t73; + char *t74; + char *t75; + char *t76; + char *t78; + unsigned int t79; + char *t80; + char *t81; + char *t82; + char *t83; + char *t84; + +LAB0: t1 = (t0 + 20824U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20944U); + t4 = *((char **)t1); + t1 = (t4 + 0); + *((int *)t1) = t3; + t1 = (t0 + 12528U); + t2 = *((char **)t1); + t5 = *((unsigned char *)t2); + t6 = (t5 == (unsigned char)3); + if (t6 != 0) + goto LAB2; + +LAB4: t1 = (t0 + 4328U); + t6 = xsi_signal_has_event(t1); + if (t6 == 1) + goto LAB10; + +LAB11: t5 = (unsigned char)0; + +LAB12: if (t5 != 0) + goto LAB8; + +LAB9: +LAB3: t1 = (t0 + 11568U); + t2 = *((char **)t1); + t5 = *((unsigned char *)t2); + t6 = (t5 == (unsigned char)3); + if (t6 != 0) + goto LAB112; + +LAB114: t1 = (t0 + 4008U); + t6 = xsi_signal_has_event(t1); + if (t6 == 1) + goto LAB120; + +LAB121: t5 = (unsigned char)0; + +LAB122: if (t5 != 0) + goto LAB118; + +LAB119: +LAB113: t1 = (t0 + 21064U); + t2 = *((char **)t1); + t1 = (t0 + 31928); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + memcpy(t10, t2, 8U); + xsi_driver_first_trans_delta(t1, 0U, 8U, 100LL); + t11 = (t0 + 31928); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + t1 = (t0 + 21184U); + t2 = *((char **)t1); + t3 = (0 - 1); + t35 = (t3 * -1); + t38 = (1U * t35); + t39 = (0 + t38); + t1 = (t2 + t39); + t5 = *((unsigned char *)t1); + t4 = (t0 + 31992); + t8 = (t4 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + *((unsigned char *)t11) = t5; + xsi_driver_first_trans_delta(t4, 0U, 1, 100LL); + t12 = (t0 + 31992); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t1 = (t0 + 21184U); + t2 = *((char **)t1); + t3 = (1 - 1); + t35 = (t3 * -1); + t38 = (1U * t35); + t39 = (0 + t38); + t1 = (t2 + t39); + t5 = *((unsigned char *)t1); + t4 = (t0 + 32056); + t8 = (t4 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + *((unsigned char *)t11) = t5; + xsi_driver_first_trans_delta(t4, 0U, 1, 100LL); + t12 = (t0 + 32056); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t1 = (t0 + 29448); + *((int *)t1) = 1; + +LAB1: return; +LAB2: t7 = xilinxcorelib_a_4048593843_3212880686_sub_2978940197_3212880686(t0, 0); + t1 = (t0 + 31032); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((unsigned char *)t10) = t7; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31032); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + t5 = xilinxcorelib_a_4048593843_3212880686_sub_2978940197_3212880686(t0, 0); + t1 = (t0 + 31096); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = t5; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31096); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31160); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((int *)t9) = 0; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31160); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31224); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((int *)t9) = 0; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31224); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = xsi_get_transient_memory(14U); + memset(t1, 0, 14U); + t2 = t1; + memset(t2, (unsigned char)2, 14U); + t4 = (t0 + 31288); + t8 = (t4 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + memcpy(t11, t1, 14U); + xsi_driver_first_trans_delta(t4, 0U, 14U, 100LL); + t12 = (t0 + 31288); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t5 = xilinxcorelib_a_4048593843_3212880686_sub_2978940197_3212880686(t0, 0); + t1 = (t0 + 31352); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = t5; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31352); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t5 = xilinxcorelib_a_4048593843_3212880686_sub_2978940197_3212880686(t0, 0); + t1 = (t0 + 31416); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = t5; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31416); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 27952); + t2 = (t0 + 22064U); + t4 = (t0 + 22136U); + t8 = (t0 + 20824U); + t9 = *((char **)t8); + t8 = (t9 + 0); + xilinxcorelib_a_4048593843_3212880686_sub_1807611230_3212880686(t0, t1, t2, t4, t8); + t5 = (0 == 1); + if (t5 != 0) + goto LAB5; + +LAB7: t1 = (t0 + 21064U); + t2 = *((char **)t1); + t1 = (t0 + 21064U); + t4 = *((char **)t1); + t1 = (t4 + 0); + memcpy(t1, t2, 8U); + +LAB6: t1 = xsi_get_transient_memory(2U); + memset(t1, 0, 2U); + t2 = t1; + memset(t2, (unsigned char)2, 2U); + t4 = (t0 + 21184U); + t8 = *((char **)t4); + t4 = (t8 + 0); + memcpy(t4, t1, 2U); + goto LAB3; + +LAB5: t1 = (t0 + 47480); + t4 = (t0 + 46584U); + t8 = xilinxcorelib_a_4048593843_3212880686_sub_3703097363_3212880686(t0, t13, t1, t4, 8); + t9 = (t0 + 21064U); + t10 = *((char **)t9); + t9 = (t10 + 0); + memcpy(t9, t8, 8U); + goto LAB6; + +LAB8: t2 = (t0 + 12688U); + t8 = *((char **)t2); + t16 = *((unsigned char *)t8); + t17 = (t16 == (unsigned char)3); + if (t17 == 1) + goto LAB16; + +LAB17: t15 = (unsigned char)0; + +LAB18: if (t15 != 0) + goto LAB13; + +LAB15: t1 = (t0 + 14128U); + t2 = *((char **)t1); + t5 = *((unsigned char *)t2); + t1 = (t0 + 31416); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((unsigned char *)t10) = t5; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31416); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + +LAB14: t1 = (t0 + 8528U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 31224); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31224); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + t5 = (0 == 0); + if (t5 != 0) + goto LAB19; + +LAB21: t1 = (t0 + 9168U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 8368U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 + t22); + t1 = (t0 + 20464U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t25 = (t23 / t24); + t28 = (13 + 1); + t1 = ieee_p_3499444699_sub_2213602152_3499444699(IEEE_P_3499444699, t13, t25, t28); + t9 = (t0 + 31288); + t10 = (t9 + 56U); + t11 = *((char **)t10); + t12 = (t11 + 56U); + t20 = *((char **)t12); + memcpy(t20, t1, 14U); + xsi_driver_first_trans_delta(t9, 0U, 14U, 100LL); + t21 = (t0 + 31288); + xsi_driver_intertial_reject(t21, 100LL, 100LL); + +LAB20: t1 = (t0 + 4528U); + t2 = *((char **)t1); + t6 = *((unsigned char *)t2); + t7 = (t6 == (unsigned char)3); + if (t7 == 1) + goto LAB28; + +LAB29: t5 = (unsigned char)0; + +LAB30: if (t5 != 0) + goto LAB25; + +LAB27: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 19984U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t22 - 1); + t1 = (t0 + 20464U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t25 = (t23 * t24); + t28 = (t25 + 1); + t5 = (t3 >= t28); + if (t5 != 0) + goto LAB36; + +LAB38: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 19984U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t22 - 2); + t1 = (t0 + 20464U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t25 = (t23 * t24); + t28 = (t25 + 1); + t5 = (t3 >= t28); + if (t5 != 0) + goto LAB39; + +LAB40: t1 = (t0 + 31032); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31032); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31096); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31096); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + +LAB37: +LAB26: t1 = (t0 + 4528U); + t2 = *((char **)t1); + t5 = *((unsigned char *)t2); + t6 = (t5 == (unsigned char)3); + if (t6 != 0) + goto LAB41; + +LAB43: +LAB42: t5 = (0 == 1); + if (t5 != 0) + goto LAB69; + +LAB71: t5 = (0 == 2); + if (t5 != 0) + goto LAB78; + +LAB79: t5 = (0 == 3); + if (t5 != 0) + goto LAB86; + +LAB87: t5 = (0 == 4); + if (t5 != 0) + goto LAB94; + +LAB95: +LAB70: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 - 1); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t23 = *((int *)t4); + t24 = (t22 / t23); + t25 = (1 + t24); + t1 = (t0 + 21544U); + t8 = *((char **)t1); + t28 = *((int *)t8); + t29 = (t28 - 1); + t6 = (t25 == t29); + if (t6 == 1) + goto LAB105; + +LAB106: t5 = (unsigned char)0; + +LAB107: if (t5 != 0) + goto LAB102; + +LAB104: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 - 1); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t23 = *((int *)t4); + t24 = (t22 / t23); + t25 = (1 + t24); + t1 = (t0 + 21544U); + t8 = *((char **)t1); + t28 = *((int *)t8); + t5 = (t25 >= t28); + if (t5 != 0) + goto LAB108; + +LAB109: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 - 1); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t23 = *((int *)t4); + t24 = (t22 / t23); + t25 = (1 + t24); + t1 = (t0 + 21664U); + t8 = *((char **)t1); + t28 = *((int *)t8); + t5 = (t25 < t28); + if (t5 != 0) + goto LAB110; + +LAB111: +LAB103: goto LAB3; + +LAB10: t2 = (t0 + 4368U); + t4 = *((char **)t2); + t7 = *((unsigned char *)t4); + t14 = (t7 == (unsigned char)3); + t5 = t14; + goto LAB12; + +LAB13: t2 = (t0 + 31416); + t10 = (t2 + 56U); + t11 = *((char **)t10); + t12 = (t11 + 56U); + t20 = *((char **)t12); + *((unsigned char *)t20) = (unsigned char)2; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t21 = (t0 + 31416); + xsi_driver_intertial_reject(t21, 100LL, 100LL); + goto LAB14; + +LAB16: t2 = (t0 + 12528U); + t9 = *((char **)t2); + t18 = *((unsigned char *)t9); + t19 = (t18 == (unsigned char)2); + t15 = t19; + goto LAB18; + +LAB19: t1 = (t0 + 9168U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t6 = (t3 < 1); + if (t6 != 0) + goto LAB22; + +LAB24: t1 = (t0 + 9168U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 - 1); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t23 = *((int *)t4); + t24 = (t22 / t23); + t25 = (1 + t24); + t1 = ieee_p_3499444699_sub_2213602152_3499444699(IEEE_P_3499444699, t13, t25, 13); + t9 = ((IEEE_P_2592010699) + 4024); + t8 = xsi_base_array_concat(t8, t26, t9, (char)97, t1, t13, (char)99, (unsigned char)2, (char)101); + t10 = (t0 + 31288); + t11 = (t10 + 56U); + t12 = *((char **)t11); + t20 = (t12 + 56U); + t21 = *((char **)t20); + memcpy(t21, t8, 14U); + xsi_driver_first_trans_delta(t10, 0U, 14U, 100LL); + t27 = (t0 + 31288); + xsi_driver_intertial_reject(t27, 100LL, 100LL); + +LAB23: goto LAB20; + +LAB22: t1 = xsi_get_transient_memory(14U); + memset(t1, 0, 14U); + t4 = t1; + memset(t4, (unsigned char)2, 14U); + t8 = (t0 + 31288); + t9 = (t8 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + memcpy(t12, t1, 14U); + xsi_driver_first_trans_delta(t8, 0U, 14U, 100LL); + t20 = (t0 + 31288); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + goto LAB23; + +LAB25: t1 = (t0 + 20944U); + t8 = *((char **)t1); + t3 = *((int *)t8); + t1 = (t0 + 20464U); + t9 = *((char **)t1); + t22 = *((int *)t9); + t23 = (t3 + t22); + t1 = (t0 + 19984U); + t10 = *((char **)t1); + t24 = *((int *)t10); + t25 = (t24 - 1); + t1 = (t0 + 20464U); + t11 = *((char **)t1); + t28 = *((int *)t11); + t29 = (t25 * t28); + t30 = (t29 + 1); + t16 = (t23 >= t30); + if (t16 != 0) + goto LAB31; + +LAB33: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 + t22); + t1 = (t0 + 19984U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t25 = (t24 - 2); + t1 = (t0 + 20464U); + t9 = *((char **)t1); + t28 = *((int *)t9); + t29 = (t25 * t28); + t30 = (t29 + 1); + t5 = (t23 >= t30); + if (t5 != 0) + goto LAB34; + +LAB35: t1 = (t0 + 31032); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31032); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31096); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31096); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + +LAB32: goto LAB26; + +LAB28: t1 = (t0 + 10288U); + t4 = *((char **)t1); + t14 = *((unsigned char *)t4); + t15 = (t14 == (unsigned char)2); + t5 = t15; + goto LAB30; + +LAB31: t1 = (t0 + 31032); + t12 = (t1 + 56U); + t20 = *((char **)t12); + t21 = (t20 + 56U); + t27 = *((char **)t21); + *((unsigned char *)t27) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t31 = (t0 + 31032); + xsi_driver_intertial_reject(t31, 100LL, 100LL); + t1 = (t0 + 31096); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31096); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + goto LAB32; + +LAB34: t1 = (t0 + 31032); + t10 = (t1 + 56U); + t11 = *((char **)t10); + t12 = (t11 + 56U); + t20 = *((char **)t12); + *((unsigned char *)t20) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t21 = (t0 + 31032); + xsi_driver_intertial_reject(t21, 100LL, 100LL); + t1 = (t0 + 31096); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31096); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + goto LAB32; + +LAB36: t1 = (t0 + 31032); + t9 = (t1 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 31032); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + t1 = (t0 + 31096); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31096); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + goto LAB37; + +LAB39: t1 = (t0 + 31032); + t9 = (t1 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 31032); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + t1 = (t0 + 31096); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31096); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + goto LAB37; + +LAB41: t1 = (t0 + 10288U); + t4 = *((char **)t1); + t7 = *((unsigned char *)t4); + t14 = (t7 != (unsigned char)3); + if (t14 != 0) + goto LAB44; + +LAB46: +LAB45: goto LAB42; + +LAB44: t1 = (t0 + 20944U); + t8 = *((char **)t1); + t3 = *((int *)t8); + t1 = (t0 + 20464U); + t9 = *((char **)t1); + t22 = *((int *)t9); + t23 = (t3 / t22); + t1 = (t0 + 19984U); + t10 = *((char **)t1); + t24 = *((int *)t10); + t15 = (t23 == t24); + if (t15 != 0) + goto LAB47; + +LAB49: t1 = (t0 + 20944U); + t11 = *((char **)t1); + t25 = *((int *)t11); + t1 = (t0 + 20464U); + t12 = *((char **)t1); + t28 = *((int *)t12); + t29 = (t25 / t28); + t30 = (t29 + 1); + t1 = (t0 + 19984U); + t20 = *((char **)t1); + t32 = *((int *)t20); + t16 = (t30 == t32); + if (t16 != 0) + goto LAB50; + +LAB51: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20464U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t24 = (t23 + 2); + t1 = (t0 + 19984U); + t8 = *((char **)t1); + t25 = *((int *)t8); + t5 = (t24 == t25); + if (t5 != 0) + goto LAB57; + +LAB58: t1 = (t0 + 20464U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 47497); + *((int *)t1) = t3; + t4 = (t0 + 47501); + *((int *)t4) = 1; + t22 = t3; + t23 = 1; + +LAB64: if (t22 >= t23) + goto LAB65; + +LAB67: t1 = (t0 + 8528U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 + 1); + t23 = xsi_vhdl_mod(t22, 8192); + t1 = (t0 + 31160); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t23; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31160); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + +LAB48: goto LAB45; + +LAB47: goto LAB48; + +LAB50: t1 = (t0 + 31032); + t21 = (t1 + 56U); + t27 = *((char **)t21); + t31 = (t27 + 56U); + t33 = *((char **)t31); + *((unsigned char *)t33) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t34 = (t0 + 31032); + xsi_driver_intertial_reject(t34, 100LL, 100LL); + t1 = (t0 + 20464U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 47481); + *((int *)t1) = t3; + t4 = (t0 + 47485); + *((int *)t4) = 1; + t22 = t3; + t23 = 1; + +LAB52: if (t22 >= t23) + goto LAB53; + +LAB55: t1 = (t0 + 8528U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 + 1); + t23 = xsi_vhdl_mod(t22, 8192); + t1 = (t0 + 31160); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t23; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31160); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + goto LAB48; + +LAB53: t8 = (t0 + 27952); + t9 = (t0 + 22064U); + t10 = (t0 + 22136U); + t11 = (t0 + 3888U); + t12 = *((char **)t11); + t11 = (t0 + 20224U); + t20 = *((char **)t11); + t24 = *((int *)t20); + t11 = (t0 + 47481); + t25 = *((int *)t11); + t28 = (t24 * t25); + t29 = (t28 - 1); + t35 = (7 - t29); + t21 = (t0 + 20224U); + t27 = *((char **)t21); + t30 = *((int *)t27); + t21 = (t0 + 47481); + t32 = *((int *)t21); + t36 = (t32 - 1); + t37 = (t30 * t36); + xsi_vhdl_check_range_of_slice(7, 0, -1, t29, t37, -1); + t38 = (t35 * 1U); + t39 = (0 + t38); + t31 = (t12 + t39); + t33 = (t0 + 20224U); + t34 = *((char **)t33); + t40 = *((int *)t34); + t33 = (t0 + 47481); + t41 = *((int *)t33); + t42 = (t40 * t41); + t43 = (t42 - 1); + t44 = (t0 + 20224U); + t45 = *((char **)t44); + t46 = *((int *)t45); + t44 = (t0 + 47481); + t47 = *((int *)t44); + t48 = (t47 - 1); + t49 = (t46 * t48); + t50 = (t49 - t43); + t51 = (t50 * -1); + t51 = (t51 + 1); + t52 = (1U * t51); + t53 = (char *)alloca(t52); + memcpy(t53, t31, t52); + t54 = (t0 + 20224U); + t55 = *((char **)t54); + t56 = *((int *)t55); + t54 = (t0 + 47481); + t57 = *((int *)t54); + t58 = (t56 * t57); + t59 = (t58 - 1); + t60 = (t0 + 20224U); + t61 = *((char **)t60); + t62 = *((int *)t61); + t60 = (t0 + 47481); + t63 = *((int *)t60); + t64 = (t63 - 1); + t65 = (t62 * t64); + t66 = (t13 + 0U); + t67 = (t66 + 0U); + *((int *)t67) = t59; + t67 = (t66 + 4U); + *((int *)t67) = t65; + t67 = (t66 + 8U); + *((int *)t67) = -1; + t68 = (t65 - t59); + t69 = (t68 * -1); + t69 = (t69 + 1); + t67 = (t66 + 12U); + *((unsigned int *)t67) = t69; + t67 = (t0 + 20824U); + t70 = *((char **)t67); + t67 = (t70 + 0); + t71 = (t0 + 14928U); + t72 = *((char **)t71); + t5 = *((unsigned char *)t72); + t71 = (t0 + 5648U); + t73 = *((char **)t71); + t6 = *((unsigned char *)t73); + t74 = ((IEEE_P_2592010699) + 4024); + t71 = xsi_base_array_concat(t71, t26, t74, (char)99, t5, (char)99, t6, (char)101); + t75 = (t0 + 5808U); + t76 = *((char **)t75); + t7 = *((unsigned char *)t76); + t78 = ((IEEE_P_2592010699) + 4024); + t75 = xsi_base_array_concat(t75, t77, t78, (char)97, t71, t26, (char)99, t7, (char)101); + t69 = (1U + 1U); + t79 = (t69 + 1U); + t80 = (char *)alloca(t79); + memcpy(t80, t75, t79); + xilinxcorelib_a_4048593843_3212880686_sub_2129810750_3212880686(t0, t8, t9, t10, t53, t13, t67, t80); + +LAB54: t1 = (t0 + 47481); + t22 = *((int *)t1); + t2 = (t0 + 47485); + t23 = *((int *)t2); + if (t22 == t23) + goto LAB55; + +LAB56: t3 = (t22 + -1); + t22 = t3; + t4 = (t0 + 47481); + *((int *)t4) = t22; + goto LAB52; + +LAB57: t1 = (t0 + 31096); + t9 = (t1 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 31096); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + t1 = (t0 + 20464U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 47489); + *((int *)t1) = t3; + t4 = (t0 + 47493); + *((int *)t4) = 1; + t22 = t3; + t23 = 1; + +LAB59: if (t22 >= t23) + goto LAB60; + +LAB62: t1 = (t0 + 8528U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 + 1); + t23 = xsi_vhdl_mod(t22, 8192); + t1 = (t0 + 31160); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t23; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31160); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + goto LAB48; + +LAB60: t8 = (t0 + 27952); + t9 = (t0 + 22064U); + t10 = (t0 + 22136U); + t11 = (t0 + 3888U); + t12 = *((char **)t11); + t11 = (t0 + 20224U); + t20 = *((char **)t11); + t24 = *((int *)t20); + t11 = (t0 + 47489); + t25 = *((int *)t11); + t28 = (t24 * t25); + t29 = (t28 - 1); + t35 = (7 - t29); + t21 = (t0 + 20224U); + t27 = *((char **)t21); + t30 = *((int *)t27); + t21 = (t0 + 47489); + t32 = *((int *)t21); + t36 = (t32 - 1); + t37 = (t30 * t36); + xsi_vhdl_check_range_of_slice(7, 0, -1, t29, t37, -1); + t38 = (t35 * 1U); + t39 = (0 + t38); + t31 = (t12 + t39); + t33 = (t0 + 20224U); + t34 = *((char **)t33); + t40 = *((int *)t34); + t33 = (t0 + 47489); + t41 = *((int *)t33); + t42 = (t40 * t41); + t43 = (t42 - 1); + t44 = (t0 + 20224U); + t45 = *((char **)t44); + t46 = *((int *)t45); + t44 = (t0 + 47489); + t47 = *((int *)t44); + t48 = (t47 - 1); + t49 = (t46 * t48); + t50 = (t49 - t43); + t51 = (t50 * -1); + t51 = (t51 + 1); + t52 = (1U * t51); + t54 = (char *)alloca(t52); + memcpy(t54, t31, t52); + t55 = (t0 + 20224U); + t60 = *((char **)t55); + t56 = *((int *)t60); + t55 = (t0 + 47489); + t57 = *((int *)t55); + t58 = (t56 * t57); + t59 = (t58 - 1); + t61 = (t0 + 20224U); + t66 = *((char **)t61); + t62 = *((int *)t66); + t61 = (t0 + 47489); + t63 = *((int *)t61); + t64 = (t63 - 1); + t65 = (t62 * t64); + t67 = (t13 + 0U); + t70 = (t67 + 0U); + *((int *)t70) = t59; + t70 = (t67 + 4U); + *((int *)t70) = t65; + t70 = (t67 + 8U); + *((int *)t70) = -1; + t68 = (t65 - t59); + t69 = (t68 * -1); + t69 = (t69 + 1); + t70 = (t67 + 12U); + *((unsigned int *)t70) = t69; + t70 = (t0 + 20824U); + t71 = *((char **)t70); + t70 = (t71 + 0); + t72 = (t0 + 14928U); + t73 = *((char **)t72); + t5 = *((unsigned char *)t73); + t72 = (t0 + 5648U); + t74 = *((char **)t72); + t6 = *((unsigned char *)t74); + t75 = ((IEEE_P_2592010699) + 4024); + t72 = xsi_base_array_concat(t72, t26, t75, (char)99, t5, (char)99, t6, (char)101); + t76 = (t0 + 5808U); + t78 = *((char **)t76); + t7 = *((unsigned char *)t78); + t81 = ((IEEE_P_2592010699) + 4024); + t76 = xsi_base_array_concat(t76, t77, t81, (char)97, t72, t26, (char)99, t7, (char)101); + t69 = (1U + 1U); + t79 = (t69 + 1U); + t82 = (char *)alloca(t79); + memcpy(t82, t76, t79); + xilinxcorelib_a_4048593843_3212880686_sub_2129810750_3212880686(t0, t8, t9, t10, t54, t13, t70, t82); + +LAB61: t1 = (t0 + 47489); + t22 = *((int *)t1); + t2 = (t0 + 47493); + t23 = *((int *)t2); + if (t22 == t23) + goto LAB62; + +LAB63: t3 = (t22 + -1); + t22 = t3; + t4 = (t0 + 47489); + *((int *)t4) = t22; + goto LAB59; + +LAB65: t8 = (t0 + 27952); + t9 = (t0 + 22064U); + t10 = (t0 + 22136U); + t11 = (t0 + 3888U); + t12 = *((char **)t11); + t11 = (t0 + 20224U); + t20 = *((char **)t11); + t24 = *((int *)t20); + t11 = (t0 + 47497); + t25 = *((int *)t11); + t28 = (t24 * t25); + t29 = (t28 - 1); + t35 = (7 - t29); + t21 = (t0 + 20224U); + t27 = *((char **)t21); + t30 = *((int *)t27); + t21 = (t0 + 47497); + t32 = *((int *)t21); + t36 = (t32 - 1); + t37 = (t30 * t36); + xsi_vhdl_check_range_of_slice(7, 0, -1, t29, t37, -1); + t38 = (t35 * 1U); + t39 = (0 + t38); + t31 = (t12 + t39); + t33 = (t0 + 20224U); + t34 = *((char **)t33); + t40 = *((int *)t34); + t33 = (t0 + 47497); + t41 = *((int *)t33); + t42 = (t40 * t41); + t43 = (t42 - 1); + t44 = (t0 + 20224U); + t45 = *((char **)t44); + t46 = *((int *)t45); + t44 = (t0 + 47497); + t47 = *((int *)t44); + t48 = (t47 - 1); + t49 = (t46 * t48); + t50 = (t49 - t43); + t51 = (t50 * -1); + t51 = (t51 + 1); + t52 = (1U * t51); + t55 = (char *)alloca(t52); + memcpy(t55, t31, t52); + t60 = (t0 + 20224U); + t61 = *((char **)t60); + t56 = *((int *)t61); + t60 = (t0 + 47497); + t57 = *((int *)t60); + t58 = (t56 * t57); + t59 = (t58 - 1); + t66 = (t0 + 20224U); + t67 = *((char **)t66); + t62 = *((int *)t67); + t66 = (t0 + 47497); + t63 = *((int *)t66); + t64 = (t63 - 1); + t65 = (t62 * t64); + t70 = (t13 + 0U); + t71 = (t70 + 0U); + *((int *)t71) = t59; + t71 = (t70 + 4U); + *((int *)t71) = t65; + t71 = (t70 + 8U); + *((int *)t71) = -1; + t68 = (t65 - t59); + t69 = (t68 * -1); + t69 = (t69 + 1); + t71 = (t70 + 12U); + *((unsigned int *)t71) = t69; + t71 = (t0 + 20824U); + t72 = *((char **)t71); + t71 = (t72 + 0); + t73 = (t0 + 14928U); + t74 = *((char **)t73); + t5 = *((unsigned char *)t74); + t73 = (t0 + 5648U); + t75 = *((char **)t73); + t6 = *((unsigned char *)t75); + t76 = ((IEEE_P_2592010699) + 4024); + t73 = xsi_base_array_concat(t73, t26, t76, (char)99, t5, (char)99, t6, (char)101); + t78 = (t0 + 5808U); + t81 = *((char **)t78); + t7 = *((unsigned char *)t81); + t83 = ((IEEE_P_2592010699) + 4024); + t78 = xsi_base_array_concat(t78, t77, t83, (char)97, t73, t26, (char)99, t7, (char)101); + t69 = (1U + 1U); + t79 = (t69 + 1U); + t84 = (char *)alloca(t79); + memcpy(t84, t78, t79); + xilinxcorelib_a_4048593843_3212880686_sub_2129810750_3212880686(t0, t8, t9, t10, t55, t13, t71, t84); + +LAB66: t1 = (t0 + 47497); + t22 = *((int *)t1); + t2 = (t0 + 47501); + t23 = *((int *)t2); + if (t22 == t23) + goto LAB67; + +LAB68: t3 = (t22 + -1); + t22 = t3; + t4 = (t0 + 47497); + *((int *)t4) = t22; + goto LAB64; + +LAB69: t7 = (1 == 1); + if (t7 == 1) + goto LAB75; + +LAB76: t6 = (unsigned char)0; + +LAB77: if (t6 != 0) + goto LAB72; + +LAB74: t1 = (t0 + 21544U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 8191; + t1 = (t0 + 21664U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 8191; + +LAB73: goto LAB70; + +LAB72: t1 = (t0 + 20584U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (8191 - t3); + t1 = (t0 + 21544U); + t4 = *((char **)t1); + t1 = (t4 + 0); + *((int *)t1) = t22; + t1 = (t0 + 20584U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (8191 - t3); + t1 = (t0 + 21664U); + t4 = *((char **)t1); + t1 = (t4 + 0); + *((int *)t1) = t22; + goto LAB73; + +LAB75: t14 = (0 == 0); + t6 = t14; + goto LAB77; + +LAB78: t7 = (1 == 1); + if (t7 == 1) + goto LAB83; + +LAB84: t6 = (unsigned char)0; + +LAB85: if (t6 != 0) + goto LAB80; + +LAB82: t1 = (t0 + 21544U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 8191; + t1 = (t0 + 21664U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 8190; + +LAB81: goto LAB70; + +LAB80: t1 = (t0 + 20584U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (8191 - t3); + t1 = (t0 + 21544U); + t4 = *((char **)t1); + t1 = (t4 + 0); + *((int *)t1) = t22; + t1 = (t0 + 20584U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (8190 - t3); + t1 = (t0 + 21664U); + t4 = *((char **)t1); + t1 = (t4 + 0); + *((int *)t1) = t22; + goto LAB81; + +LAB83: t14 = (0 == 0); + t6 = t14; + goto LAB85; + +LAB86: t7 = (1 == 1); + if (t7 == 1) + goto LAB91; + +LAB92: t6 = (unsigned char)0; + +LAB93: if (t6 != 0) + goto LAB88; + +LAB90: t1 = (t0 + 5168U); + t2 = *((char **)t1); + t1 = (t0 + 46664U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21544U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + t1 = (t0 + 5168U); + t2 = *((char **)t1); + t1 = (t0 + 46664U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21664U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + +LAB89: goto LAB70; + +LAB88: t1 = (t0 + 5168U); + t2 = *((char **)t1); + t1 = (t0 + 46664U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 20584U); + t8 = *((char **)t4); + t22 = *((int *)t8); + t23 = (t3 - t22); + t4 = (t0 + 21544U); + t9 = *((char **)t4); + t4 = (t9 + 0); + *((int *)t4) = t23; + t1 = (t0 + 5168U); + t2 = *((char **)t1); + t1 = (t0 + 46664U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 20584U); + t8 = *((char **)t4); + t22 = *((int *)t8); + t23 = (t3 - t22); + t4 = (t0 + 21664U); + t9 = *((char **)t4); + t4 = (t9 + 0); + *((int *)t4) = t23; + goto LAB89; + +LAB91: t14 = (0 == 0); + t6 = t14; + goto LAB93; + +LAB94: t7 = (1 == 1); + if (t7 == 1) + goto LAB99; + +LAB100: t6 = (unsigned char)0; + +LAB101: if (t6 != 0) + goto LAB96; + +LAB98: t1 = (t0 + 5328U); + t2 = *((char **)t1); + t1 = (t0 + 46680U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21544U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + t1 = (t0 + 5488U); + t2 = *((char **)t1); + t1 = (t0 + 46696U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21664U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + +LAB97: goto LAB70; + +LAB96: t1 = (t0 + 5328U); + t2 = *((char **)t1); + t1 = (t0 + 46680U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 20584U); + t8 = *((char **)t4); + t22 = *((int *)t8); + t23 = (t3 - t22); + t4 = (t0 + 21544U); + t9 = *((char **)t4); + t4 = (t9 + 0); + *((int *)t4) = t23; + t1 = (t0 + 5488U); + t2 = *((char **)t1); + t1 = (t0 + 46696U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 20584U); + t8 = *((char **)t4); + t22 = *((int *)t8); + t23 = (t3 - t22); + t4 = (t0 + 21664U); + t9 = *((char **)t4); + t4 = (t9 + 0); + *((int *)t4) = t23; + goto LAB97; + +LAB99: t14 = (0 == 0); + t6 = t14; + goto LAB101; + +LAB102: t1 = (t0 + 31352); + t10 = (t1 + 56U); + t11 = *((char **)t10); + t12 = (t11 + 56U); + t20 = *((char **)t12); + *((unsigned char *)t20) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t21 = (t0 + 31352); + xsi_driver_intertial_reject(t21, 100LL, 100LL); + goto LAB103; + +LAB105: t1 = (t0 + 4528U); + t9 = *((char **)t1); + t7 = *((unsigned char *)t9); + t14 = (t7 == (unsigned char)3); + t5 = t14; + goto LAB107; + +LAB108: t1 = (t0 + 31352); + t9 = (t1 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 31352); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + goto LAB103; + +LAB110: t1 = (t0 + 31352); + t9 = (t1 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 31352); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + goto LAB103; + +LAB112: t1 = (t0 + 31480); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((unsigned char *)t10) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31480); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + t1 = (t0 + 31544); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31544); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31608); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((int *)t9) = 0; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31608); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31672); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((int *)t9) = 0; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31672); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = xsi_get_transient_memory(14U); + memset(t1, 0, 14U); + t2 = t1; + memset(t2, (unsigned char)2, 14U); + t4 = (t0 + 31736); + t8 = (t4 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + memcpy(t11, t1, 14U); + xsi_driver_first_trans_delta(t4, 0U, 14U, 100LL); + t12 = (t0 + 31736); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t1 = (t0 + 31800); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31800); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31864); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31864); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t5 = (0 == 1); + if (t5 != 0) + goto LAB115; + +LAB117: t1 = (t0 + 21064U); + t2 = *((char **)t1); + t1 = (t0 + 21064U); + t4 = *((char **)t1); + t1 = (t4 + 0); + memcpy(t1, t2, 8U); + +LAB116: t1 = xsi_get_transient_memory(2U); + memset(t1, 0, 2U); + t2 = t1; + memset(t2, (unsigned char)2, 2U); + t4 = (t0 + 21184U); + t8 = *((char **)t4); + t4 = (t8 + 0); + memcpy(t4, t1, 2U); + goto LAB113; + +LAB115: t1 = (t0 + 47505); + t4 = (t0 + 46584U); + t8 = xilinxcorelib_a_4048593843_3212880686_sub_3703097363_3212880686(t0, t13, t1, t4, 8); + t9 = (t0 + 21064U); + t10 = *((char **)t9); + t9 = (t10 + 0); + memcpy(t9, t8, 8U); + goto LAB116; + +LAB118: t2 = (t0 + 14448U); + t8 = *((char **)t2); + t15 = *((unsigned char *)t8); + t2 = (t0 + 31864); + t9 = (t2 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = t15; + xsi_driver_first_trans_delta(t2, 0U, 1, 100LL); + t20 = (t0 + 31864); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + t1 = (t0 + 8688U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 31672); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31672); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + t5 = (0 == 0); + if (t5 != 0) + goto LAB123; + +LAB125: t1 = (t0 + 9328U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t24 = (t23 + 2); + t25 = (13 + 1); + t1 = ieee_p_3499444699_sub_2213602152_3499444699(IEEE_P_3499444699, t13, t24, t25); + t8 = (t0 + 31736); + t9 = (t8 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + memcpy(t12, t1, 14U); + xsi_driver_first_trans_delta(t8, 0U, 14U, 100LL); + t20 = (t0 + 31736); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + +LAB124: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t5 = (t23 == 0); + if (t5 != 0) + goto LAB126; + +LAB128: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t5 = (t23 == 1); + if (t5 != 0) + goto LAB129; + +LAB130: t1 = (t0 + 31480); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31480); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 31544); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31544); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + +LAB127: t1 = (t0 + 4208U); + t2 = *((char **)t1); + t5 = *((unsigned char *)t2); + t6 = (t5 == (unsigned char)3); + if (t6 != 0) + goto LAB131; + +LAB133: +LAB132: t5 = (0 == 1); + if (t5 != 0) + goto LAB159; + +LAB161: t5 = (0 == 2); + if (t5 != 0) + goto LAB168; + +LAB169: t5 = (0 == 3); + if (t5 != 0) + goto LAB176; + +LAB177: t5 = (0 == 4); + if (t5 != 0) + goto LAB184; + +LAB185: +LAB160: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t1 = (t0 + 21304U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t25 = (t24 + 1); + t6 = (t23 == t25); + if (t6 == 1) + goto LAB195; + +LAB196: t5 = (unsigned char)0; + +LAB197: if (t5 != 0) + goto LAB192; + +LAB194: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t1 = (t0 + 21304U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t5 = (t23 <= t24); + if (t5 != 0) + goto LAB198; + +LAB199: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t1 = (t0 + 21424U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t5 = (t23 > t24); + if (t5 != 0) + goto LAB200; + +LAB201: +LAB193: goto LAB113; + +LAB120: t2 = (t0 + 4048U); + t4 = *((char **)t2); + t7 = *((unsigned char *)t4); + t14 = (t7 == (unsigned char)3); + t5 = t14; + goto LAB122; + +LAB123: t1 = (t0 + 9328U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t1 = ieee_p_3499444699_sub_2213602152_3499444699(IEEE_P_3499444699, t13, t23, 13); + t9 = ((IEEE_P_2592010699) + 4024); + t8 = xsi_base_array_concat(t8, t26, t9, (char)97, t1, t13, (char)99, (unsigned char)2, (char)101); + t10 = (t0 + 31736); + t11 = (t10 + 56U); + t12 = *((char **)t11); + t20 = (t12 + 56U); + t21 = *((char **)t20); + memcpy(t21, t8, 14U); + xsi_driver_first_trans_delta(t10, 0U, 14U, 100LL); + t27 = (t0 + 31736); + xsi_driver_intertial_reject(t27, 100LL, 100LL); + goto LAB124; + +LAB126: t1 = (t0 + 31480); + t8 = (t1 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + *((unsigned char *)t11) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t12 = (t0 + 31480); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t1 = (t0 + 31544); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31544); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + goto LAB127; + +LAB129: t1 = (t0 + 31480); + t8 = (t1 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + *((unsigned char *)t11) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t12 = (t0 + 31480); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t1 = (t0 + 31544); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31544); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + goto LAB127; + +LAB131: t1 = (t0 + 10128U); + t4 = *((char **)t1); + t7 = *((unsigned char *)t4); + t14 = (t7 != (unsigned char)3); + if (t14 != 0) + goto LAB134; + +LAB136: +LAB135: goto LAB132; + +LAB134: t1 = (t0 + 20944U); + t8 = *((char **)t1); + t3 = *((int *)t8); + t1 = (t0 + 20344U); + t9 = *((char **)t1); + t22 = *((int *)t9); + t23 = (t3 / t22); + t15 = (t23 == 2); + if (t15 != 0) + goto LAB137; + +LAB139: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t5 = (t23 == 1); + if (t5 != 0) + goto LAB145; + +LAB146: t1 = (t0 + 20944U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 20344U); + t4 = *((char **)t1); + t22 = *((int *)t4); + t23 = (t3 / t22); + t5 = (t23 == 0); + if (t5 != 0) + goto LAB152; + +LAB153: t1 = (t0 + 20344U); + t8 = *((char **)t1); + t24 = *((int *)t8); + t1 = (t0 + 47522); + *((int *)t1) = t24; + t9 = (t0 + 47526); + *((int *)t9) = 1; + t25 = t24; + t28 = 1; + +LAB154: if (t25 >= t28) + goto LAB155; + +LAB157: t1 = (t0 + 8688U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 + 1); + t23 = xsi_vhdl_mod(t22, 8192); + t1 = (t0 + 31608); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t23; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31608); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + +LAB138: goto LAB135; + +LAB137: t1 = (t0 + 31544); + t10 = (t1 + 56U); + t11 = *((char **)t10); + t12 = (t11 + 56U); + t20 = *((char **)t12); + *((unsigned char *)t20) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t21 = (t0 + 31544); + xsi_driver_intertial_reject(t21, 100LL, 100LL); + t1 = (t0 + 20344U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 47506); + *((int *)t1) = t3; + t4 = (t0 + 47510); + *((int *)t4) = 1; + t22 = t3; + t23 = 1; + +LAB140: if (t22 >= t23) + goto LAB141; + +LAB143: t1 = (t0 + 8688U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 + 1); + t23 = xsi_vhdl_mod(t22, 8192); + t1 = (t0 + 31608); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t23; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31608); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + goto LAB138; + +LAB141: t8 = (t0 + 27952); + t9 = (t0 + 22136U); + t10 = (t0 + 21064U); + t11 = *((char **)t10); + t10 = (t0 + 20224U); + t12 = *((char **)t10); + t24 = *((int *)t12); + t10 = (t0 + 47506); + t25 = *((int *)t10); + t28 = (t24 * t25); + t29 = (t28 - 1); + t35 = (7 - t29); + t20 = (t0 + 20224U); + t21 = *((char **)t20); + t30 = *((int *)t21); + t20 = (t0 + 47506); + t32 = *((int *)t20); + t36 = (t32 - 1); + t37 = (t30 * t36); + xsi_vhdl_check_range_of_slice(7, 0, -1, t29, t37, -1); + t38 = (t35 * 1U); + t39 = (0 + t38); + t27 = (t11 + t39); + t31 = (t0 + 20224U); + t33 = *((char **)t31); + t40 = *((int *)t33); + t31 = (t0 + 47506); + t41 = *((int *)t31); + t42 = (t40 * t41); + t43 = (t42 - 1); + t34 = (t0 + 20224U); + t44 = *((char **)t34); + t46 = *((int *)t44); + t34 = (t0 + 47506); + t47 = *((int *)t34); + t48 = (t47 - 1); + t49 = (t46 * t48); + t45 = (t13 + 0U); + t60 = (t45 + 0U); + *((int *)t60) = t43; + t60 = (t45 + 4U); + *((int *)t60) = t49; + t60 = (t45 + 8U); + *((int *)t60) = -1; + t50 = (t49 - t43); + t51 = (t50 * -1); + t51 = (t51 + 1); + t60 = (t45 + 12U); + *((unsigned int *)t60) = t51; + t60 = (t0 + 21184U); + t61 = *((char **)t60); + xilinxcorelib_a_4048593843_3212880686_sub_2966016925_3212880686(t0, t8, t9, t27, t13, t61); + t1 = (t0 + 27952); + t2 = (t0 + 22064U); + t4 = (t0 + 22136U); + t8 = (t0 + 20824U); + t9 = *((char **)t8); + t8 = (t9 + 0); + xilinxcorelib_a_4048593843_3212880686_sub_2068494565_3212880686(t0, t1, t2, t4, t8); + +LAB142: t1 = (t0 + 47506); + t22 = *((int *)t1); + t2 = (t0 + 47510); + t23 = *((int *)t2); + if (t22 == t23) + goto LAB143; + +LAB144: t3 = (t22 + -1); + t22 = t3; + t4 = (t0 + 47506); + *((int *)t4) = t22; + goto LAB140; + +LAB145: t1 = (t0 + 31544); + t8 = (t1 + 56U); + t9 = *((char **)t8); + t10 = (t9 + 56U); + t11 = *((char **)t10); + *((unsigned char *)t11) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t12 = (t0 + 31544); + xsi_driver_intertial_reject(t12, 100LL, 100LL); + t1 = (t0 + 31480); + t2 = (t1 + 56U); + t4 = *((char **)t2); + t8 = (t4 + 56U); + t9 = *((char **)t8); + *((unsigned char *)t9) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t10 = (t0 + 31480); + xsi_driver_intertial_reject(t10, 100LL, 100LL); + t1 = (t0 + 20344U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t1 = (t0 + 47514); + *((int *)t1) = t3; + t4 = (t0 + 47518); + *((int *)t4) = 1; + t22 = t3; + t23 = 1; + +LAB147: if (t22 >= t23) + goto LAB148; + +LAB150: t1 = (t0 + 8688U); + t2 = *((char **)t1); + t3 = *((int *)t2); + t22 = (t3 + 1); + t23 = xsi_vhdl_mod(t22, 8192); + t1 = (t0 + 31608); + t4 = (t1 + 56U); + t8 = *((char **)t4); + t9 = (t8 + 56U); + t10 = *((char **)t9); + *((int *)t10) = t23; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t11 = (t0 + 31608); + xsi_driver_intertial_reject(t11, 100LL, 100LL); + goto LAB138; + +LAB148: t8 = (t0 + 27952); + t9 = (t0 + 22136U); + t10 = (t0 + 21064U); + t11 = *((char **)t10); + t10 = (t0 + 20224U); + t12 = *((char **)t10); + t24 = *((int *)t12); + t10 = (t0 + 47514); + t25 = *((int *)t10); + t28 = (t24 * t25); + t29 = (t28 - 1); + t35 = (7 - t29); + t20 = (t0 + 20224U); + t21 = *((char **)t20); + t30 = *((int *)t21); + t20 = (t0 + 47514); + t32 = *((int *)t20); + t36 = (t32 - 1); + t37 = (t30 * t36); + xsi_vhdl_check_range_of_slice(7, 0, -1, t29, t37, -1); + t38 = (t35 * 1U); + t39 = (0 + t38); + t27 = (t11 + t39); + t31 = (t0 + 20224U); + t33 = *((char **)t31); + t40 = *((int *)t33); + t31 = (t0 + 47514); + t41 = *((int *)t31); + t42 = (t40 * t41); + t43 = (t42 - 1); + t34 = (t0 + 20224U); + t44 = *((char **)t34); + t46 = *((int *)t44); + t34 = (t0 + 47514); + t47 = *((int *)t34); + t48 = (t47 - 1); + t49 = (t46 * t48); + t45 = (t13 + 0U); + t60 = (t45 + 0U); + *((int *)t60) = t43; + t60 = (t45 + 4U); + *((int *)t60) = t49; + t60 = (t45 + 8U); + *((int *)t60) = -1; + t50 = (t49 - t43); + t51 = (t50 * -1); + t51 = (t51 + 1); + t60 = (t45 + 12U); + *((unsigned int *)t60) = t51; + t60 = (t0 + 21184U); + t61 = *((char **)t60); + xilinxcorelib_a_4048593843_3212880686_sub_2966016925_3212880686(t0, t8, t9, t27, t13, t61); + t1 = (t0 + 27952); + t2 = (t0 + 22064U); + t4 = (t0 + 22136U); + t8 = (t0 + 20824U); + t9 = *((char **)t8); + t8 = (t9 + 0); + xilinxcorelib_a_4048593843_3212880686_sub_2068494565_3212880686(t0, t1, t2, t4, t8); + +LAB149: t1 = (t0 + 47514); + t22 = *((int *)t1); + t2 = (t0 + 47518); + t23 = *((int *)t2); + if (t22 == t23) + goto LAB150; + +LAB151: t3 = (t22 + -1); + t22 = t3; + t4 = (t0 + 47514); + *((int *)t4) = t22; + goto LAB147; + +LAB152: goto LAB138; + +LAB155: t10 = (t0 + 27952); + t11 = (t0 + 22136U); + t12 = (t0 + 21064U); + t20 = *((char **)t12); + t12 = (t0 + 20224U); + t21 = *((char **)t12); + t29 = *((int *)t21); + t12 = (t0 + 47522); + t30 = *((int *)t12); + t32 = (t29 * t30); + t36 = (t32 - 1); + t35 = (7 - t36); + t27 = (t0 + 20224U); + t31 = *((char **)t27); + t37 = *((int *)t31); + t27 = (t0 + 47522); + t40 = *((int *)t27); + t41 = (t40 - 1); + t42 = (t37 * t41); + xsi_vhdl_check_range_of_slice(7, 0, -1, t36, t42, -1); + t38 = (t35 * 1U); + t39 = (0 + t38); + t33 = (t20 + t39); + t34 = (t0 + 20224U); + t44 = *((char **)t34); + t43 = *((int *)t44); + t34 = (t0 + 47522); + t46 = *((int *)t34); + t47 = (t43 * t46); + t48 = (t47 - 1); + t45 = (t0 + 20224U); + t60 = *((char **)t45); + t49 = *((int *)t60); + t45 = (t0 + 47522); + t50 = *((int *)t45); + t56 = (t50 - 1); + t57 = (t49 * t56); + t61 = (t13 + 0U); + t66 = (t61 + 0U); + *((int *)t66) = t48; + t66 = (t61 + 4U); + *((int *)t66) = t57; + t66 = (t61 + 8U); + *((int *)t66) = -1; + t58 = (t57 - t48); + t51 = (t58 * -1); + t51 = (t51 + 1); + t66 = (t61 + 12U); + *((unsigned int *)t66) = t51; + t66 = (t0 + 21184U); + t67 = *((char **)t66); + xilinxcorelib_a_4048593843_3212880686_sub_2966016925_3212880686(t0, t10, t11, t33, t13, t67); + t1 = (t0 + 27952); + t2 = (t0 + 22064U); + t4 = (t0 + 22136U); + t8 = (t0 + 20824U); + t9 = *((char **)t8); + t8 = (t9 + 0); + xilinxcorelib_a_4048593843_3212880686_sub_2068494565_3212880686(t0, t1, t2, t4, t8); + +LAB156: t1 = (t0 + 47522); + t25 = *((int *)t1); + t2 = (t0 + 47526); + t28 = *((int *)t2); + if (t25 == t28) + goto LAB157; + +LAB158: t3 = (t25 + -1); + t25 = t3; + t4 = (t0 + 47522); + *((int *)t4) = t25; + goto LAB154; + +LAB159: t7 = (1 == 1); + if (t7 == 1) + goto LAB165; + +LAB166: t6 = (unsigned char)0; + +LAB167: if (t6 != 0) + goto LAB162; + +LAB164: t1 = (t0 + 21304U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 4; + t1 = (t0 + 21424U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 4; + +LAB163: goto LAB160; + +LAB162: t3 = (4 - 2); + t1 = (t0 + 21304U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = t3; + t3 = (4 - 2); + t1 = (t0 + 21424U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = t3; + goto LAB163; + +LAB165: t14 = (0 == 0); + t6 = t14; + goto LAB167; + +LAB168: t7 = (1 == 1); + if (t7 == 1) + goto LAB173; + +LAB174: t6 = (unsigned char)0; + +LAB175: if (t6 != 0) + goto LAB170; + +LAB172: t1 = (t0 + 21304U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 4; + t1 = (t0 + 21424U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = 5; + +LAB171: goto LAB160; + +LAB170: t3 = (4 - 2); + t1 = (t0 + 21304U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = t3; + t3 = (5 - 2); + t1 = (t0 + 21424U); + t2 = *((char **)t1); + t1 = (t2 + 0); + *((int *)t1) = t3; + goto LAB171; + +LAB173: t14 = (0 == 0); + t6 = t14; + goto LAB175; + +LAB176: t7 = (1 == 1); + if (t7 == 1) + goto LAB181; + +LAB182: t6 = (unsigned char)0; + +LAB183: if (t6 != 0) + goto LAB178; + +LAB180: t1 = (t0 + 4688U); + t2 = *((char **)t1); + t1 = (t0 + 46616U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21304U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + t1 = (t0 + 4688U); + t2 = *((char **)t1); + t1 = (t0 + 46616U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21424U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + +LAB179: goto LAB160; + +LAB178: t1 = (t0 + 4688U); + t2 = *((char **)t1); + t1 = (t0 + 46616U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t22 = (t3 - 2); + t4 = (t0 + 21304U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t22; + t1 = (t0 + 4688U); + t2 = *((char **)t1); + t1 = (t0 + 46616U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t22 = (t3 - 2); + t4 = (t0 + 21424U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t22; + goto LAB179; + +LAB181: t14 = (0 == 0); + t6 = t14; + goto LAB183; + +LAB184: t7 = (1 == 1); + if (t7 == 1) + goto LAB189; + +LAB190: t6 = (unsigned char)0; + +LAB191: if (t6 != 0) + goto LAB186; + +LAB188: t1 = (t0 + 4848U); + t2 = *((char **)t1); + t1 = (t0 + 46632U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21304U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + t1 = (t0 + 5008U); + t2 = *((char **)t1); + t1 = (t0 + 46648U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t4 = (t0 + 21424U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t3; + +LAB187: goto LAB160; + +LAB186: t1 = (t0 + 4848U); + t2 = *((char **)t1); + t1 = (t0 + 46632U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t22 = (t3 - 2); + t4 = (t0 + 21304U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t22; + t1 = (t0 + 5008U); + t2 = *((char **)t1); + t1 = (t0 + 46648U); + t3 = ieee_p_3620187407_sub_514432868_3620187407(IEEE_P_3620187407, t2, t1); + t22 = (t3 - 2); + t4 = (t0 + 21424U); + t8 = *((char **)t4); + t4 = (t8 + 0); + *((int *)t4) = t22; + goto LAB187; + +LAB189: t14 = (0 == 0); + t6 = t14; + goto LAB191; + +LAB192: t1 = (t0 + 31800); + t10 = (t1 + 56U); + t11 = *((char **)t10); + t12 = (t11 + 56U); + t20 = *((char **)t12); + *((unsigned char *)t20) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t21 = (t0 + 31800); + xsi_driver_intertial_reject(t21, 100LL, 100LL); + goto LAB193; + +LAB195: t1 = (t0 + 4208U); + t9 = *((char **)t1); + t7 = *((unsigned char *)t9); + t14 = (t7 == (unsigned char)3); + t5 = t14; + goto LAB197; + +LAB198: t1 = (t0 + 31800); + t9 = (t1 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = (unsigned char)3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 31800); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + goto LAB193; + +LAB200: t1 = (t0 + 31800); + t9 = (t1 + 56U); + t10 = *((char **)t9); + t11 = (t10 + 56U); + t12 = *((char **)t11); + *((unsigned char *)t12) = (unsigned char)2; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t20 = (t0 + 31800); + xsi_driver_intertial_reject(t20, 100LL, 100LL); + goto LAB193; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_22(char *t0) +{ + char *t1; + char *t2; + char *t3; + char *t4; + char *t5; + char *t6; + char *t7; + +LAB0: +LAB3: t1 = (t0 + 14768U); + t2 = *((char **)t1); + t1 = (t0 + 32120); + t3 = (t1 + 56U); + t4 = *((char **)t3); + t5 = (t4 + 56U); + t6 = *((char **)t5); + memcpy(t6, t2, 8U); + xsi_driver_first_trans_fast_port(t1); + +LAB2: t7 = (t0 + 29512); + *((int *)t7) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_23(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + +LAB0: +LAB3: t1 = (t0 + 15088U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 32184); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t8 = (t0 + 32184); + xsi_driver_intertial_reject(t8, 100LL, 100LL); + +LAB2: t9 = (t0 + 29528); + *((int *)t9) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + +static void xilinxcorelib_a_4048593843_3212880686_p_24(char *t0) +{ + char *t1; + char *t2; + unsigned char t3; + char *t4; + char *t5; + char *t6; + char *t7; + char *t8; + char *t9; + +LAB0: +LAB3: t1 = (t0 + 15248U); + t2 = *((char **)t1); + t3 = *((unsigned char *)t2); + t1 = (t0 + 32248); + t4 = (t1 + 56U); + t5 = *((char **)t4); + t6 = (t5 + 56U); + t7 = *((char **)t6); + *((unsigned char *)t7) = t3; + xsi_driver_first_trans_delta(t1, 0U, 1, 100LL); + t8 = (t0 + 32248); + xsi_driver_intertial_reject(t8, 100LL, 100LL); + +LAB2: t9 = (t0 + 29544); + *((int *)t9) = 1; + +LAB1: return; +LAB4: goto LAB2; + +} + + +extern void xilinxcorelib_a_4048593843_3212880686_init() +{ + static char *pe[] = {(void *)xilinxcorelib_a_4048593843_3212880686_p_0,(void *)xilinxcorelib_a_4048593843_3212880686_p_1,(void *)xilinxcorelib_a_4048593843_3212880686_p_2,(void *)xilinxcorelib_a_4048593843_3212880686_p_3,(void *)xilinxcorelib_a_4048593843_3212880686_p_4,(void *)xilinxcorelib_a_4048593843_3212880686_p_5,(void *)xilinxcorelib_a_4048593843_3212880686_p_6,(void *)xilinxcorelib_a_4048593843_3212880686_p_7,(void *)xilinxcorelib_a_4048593843_3212880686_p_8,(void *)xilinxcorelib_a_4048593843_3212880686_p_9,(void *)xilinxcorelib_a_4048593843_3212880686_p_10,(void *)xilinxcorelib_a_4048593843_3212880686_p_11,(void *)xilinxcorelib_a_4048593843_3212880686_p_12,(void *)xilinxcorelib_a_4048593843_3212880686_p_13,(void *)xilinxcorelib_a_4048593843_3212880686_p_14,(void *)xilinxcorelib_a_4048593843_3212880686_p_15,(void *)xilinxcorelib_a_4048593843_3212880686_p_16,(void *)xilinxcorelib_a_4048593843_3212880686_p_17,(void *)xilinxcorelib_a_4048593843_3212880686_p_18,(void *)xilinxcorelib_a_4048593843_3212880686_p_19,(void *)xilinxcorelib_a_4048593843_3212880686_p_20,(void *)xilinxcorelib_a_4048593843_3212880686_p_21,(void *)xilinxcorelib_a_4048593843_3212880686_p_22,(void *)xilinxcorelib_a_4048593843_3212880686_p_23,(void *)xilinxcorelib_a_4048593843_3212880686_p_24}; + static char *se[] = {(void *)xilinxcorelib_a_4048593843_3212880686_sub_1842417276_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_1315575287_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_2978940197_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_3672023036_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_3703097363_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_2234054365_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_1807611230_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_2129810750_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_2966016925_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_2068494565_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_3751606365_3212880686,(void *)xilinxcorelib_a_4048593843_3212880686_sub_4190946951_3212880686}; + xsi_register_didat("xilinxcorelib_a_4048593843_3212880686", "isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.didat"); + xsi_register_executes(pe); + xsi_register_subprogram_executes(se); +} diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.didat b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.didat new file mode 100755 index 0000000000000000000000000000000000000000..3761deab3b70efb5cbb71e493a480bbf8bbc496f Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.didat differ diff --git a/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.nt64.obj b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.nt64.obj new file mode 100755 index 0000000000000000000000000000000000000000..c5a321a061df30dde47ce0244df9510238bcef82 Binary files /dev/null and b/ipcore_dir/isim/fifo_usb_if_isim_beh.exe.sim/xilinxcorelib/a_4048593843_3212880686.nt64.obj differ diff --git a/ipcore_dir/isim/isim_usage_statistics.html b/ipcore_dir/isim/isim_usage_statistics.html new file mode 100755 index 0000000000000000000000000000000000000000..3112e2f830bd46b2f4af56396afc74b12e62d770 --- /dev/null +++ b/ipcore_dir/isim/isim_usage_statistics.html @@ -0,0 +1,16 @@ +<TABLE BORDER CELLSPACING=0 WIDTH='100%'> +<xtag-section name="ISimStatistics"> +<TR ALIGN=CENTER BGCOLOR='#99CCFF'><TD COLSPAN=1><B>ISim Statistics</B></TD></TR> +<TR><TD><xtag-isim-property-name>Xilinx HDL Libraries Used</xtag-isim-property-name>=<xtag-isim-property-value>xilinxcorelib</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Fuse Resource Usage</xtag-isim-property-name>=<xtag-isim-property-value>389 ms, 20568 KB</xtag-isim-property-value></TD></TR> + +<TR><TD><xtag-isim-property-name>Total Signals</xtag-isim-property-name>=<xtag-isim-property-value>194</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Total Nets</xtag-isim-property-name>=<xtag-isim-property-value>346</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Total Blocks</xtag-isim-property-name>=<xtag-isim-property-value>25</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Total Processes</xtag-isim-property-name>=<xtag-isim-property-value>60</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Total Simulation Time</xtag-isim-property-name>=<xtag-isim-property-value>1 us</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Simulation Resource Usage</xtag-isim-property-name>=<xtag-isim-property-value>0.0624 sec, 472461 KB</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Simulation Mode</xtag-isim-property-name>=<xtag-isim-property-value>gui</xtag-isim-property-value></TD></TR> +<TR><TD><xtag-isim-property-name>Hardware CoSim</xtag-isim-property-name>=<xtag-isim-property-value>0</xtag-isim-property-value></TD></TR> +</xtag-section> +</TABLE> diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_0017514958.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_0017514958.didat new file mode 100755 index 0000000000000000000000000000000000000000..41ab5b9628b522e08cf48a885f48a3035af1fce0 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_0017514958.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_0774719531.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_0774719531.didat new file mode 100755 index 0000000000000000000000000000000000000000..aaee773fc0fa3cc0965e1d27cfc04cc21c2bd600 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_0774719531.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_1242562249.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_1242562249.didat new file mode 100755 index 0000000000000000000000000000000000000000..c6e1ca7768ad72e766ace82b6ef6bde79be0d407 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_1242562249.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_1367372525.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_1367372525.didat new file mode 100755 index 0000000000000000000000000000000000000000..d8abdf91be76893abc025bcfc2683f1147fef459 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_1367372525.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_2592010699.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_2592010699.didat new file mode 100755 index 0000000000000000000000000000000000000000..fd11435f8bf9624901a32daa50c36cb1141ca4af Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_2592010699.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_2717149903.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_2717149903.didat new file mode 100755 index 0000000000000000000000000000000000000000..bd4933d5bae08805630e76b0e8b51af7947b2c99 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_2717149903.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3039841270.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3039841270.didat new file mode 100755 index 0000000000000000000000000000000000000000..0fd53f51107e5035b82c6b2c49893168e4da27e0 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3039841270.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3499444699.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3499444699.didat new file mode 100755 index 0000000000000000000000000000000000000000..c0acd525ea08a8c18a422d52df1b4e05b5aad74e Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3499444699.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3564397177.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3564397177.didat new file mode 100755 index 0000000000000000000000000000000000000000..0c7837be0712b92c5c4429939bc20862b4b33b1c Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3564397177.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3620187407.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3620187407.didat new file mode 100755 index 0000000000000000000000000000000000000000..9521ac3ecc96d1fa351bc398f1ab92fc6dfcc620 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3620187407.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3972351953.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3972351953.didat new file mode 100755 index 0000000000000000000000000000000000000000..d83a301f7b49b7cb0edabde28c62699128589785 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_3972351953.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/ieee/p_4165608084.didat b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_4165608084.didat new file mode 100755 index 0000000000000000000000000000000000000000..1ee3dddaecb710b5801b0b993a9f9c48ffc3519d Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/ieee/p_4165608084.didat differ diff --git a/ipcore_dir/isim/precompiled.exe.sim/std/textio.didat b/ipcore_dir/isim/precompiled.exe.sim/std/textio.didat new file mode 100755 index 0000000000000000000000000000000000000000..6d3350d808d4e0b1c0677e8eb826e37ac25e9985 Binary files /dev/null and b/ipcore_dir/isim/precompiled.exe.sim/std/textio.didat differ diff --git a/ipcore_dir/isim/temp/fifo_usb_if.vdb b/ipcore_dir/isim/temp/fifo_usb_if.vdb new file mode 100755 index 0000000000000000000000000000000000000000..880f2ab15b85dec558d25f4df664f441ab9df0e0 Binary files /dev/null and b/ipcore_dir/isim/temp/fifo_usb_if.vdb differ diff --git a/ipcore_dir/isim/work/fifo_usb_if.vdb b/ipcore_dir/isim/work/fifo_usb_if.vdb new file mode 100755 index 0000000000000000000000000000000000000000..77de9e51a0202bd646d4aa17d008983d8560ccad Binary files /dev/null and b/ipcore_dir/isim/work/fifo_usb_if.vdb differ diff --git a/ipcore_dir/tmp/_xmsgs/ngcbuild.xmsgs b/ipcore_dir/tmp/_xmsgs/ngcbuild.xmsgs new file mode 100644 index 0000000000000000000000000000000000000000..f84336aac5d9a835d3bd703c9d35434cc071ed16 --- /dev/null +++ b/ipcore_dir/tmp/_xmsgs/ngcbuild.xmsgs @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- IMPORTANT: This is an internal file that has been generated + by the Xilinx ISE software. Any direct editing or + changes made to this file may result in unpredictable + behavior or data corruption. It is strongly advised that + users do not edit the contents of this file. --> +<messages> +</messages> + diff --git a/ipcore_dir/tmp/_xmsgs/pn_parser.xmsgs b/ipcore_dir/tmp/_xmsgs/pn_parser.xmsgs new file mode 100644 index 0000000000000000000000000000000000000000..0fd9d6ad989d64ac9cd6c9619360dd74cb986ebc --- /dev/null +++ b/ipcore_dir/tmp/_xmsgs/pn_parser.xmsgs @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- IMPORTANT: This is an internal file that has been generated --> +<!-- by the Xilinx ISE software. Any direct editing or --> +<!-- changes made to this file may result in unpredictable --> +<!-- behavior or data corruption. It is strongly advised that --> +<!-- users do not edit the contents of this file. --> +<!-- --> +<!-- Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. --> + +<messages> +<msg type="info" file="ProjectMgmt" num="1061" ><arg fmt="%s" index="1">Parsing VHDL file "/home/horacio/Dropbox/work_private/lago/lago-fpga-sync_vhdl/ipcore_dir/tmp/_cg/fifo.vhd" into library work</arg> +</msg> + +</messages> + diff --git a/ipcore_dir/tmp/_xmsgs/xst.xmsgs b/ipcore_dir/tmp/_xmsgs/xst.xmsgs new file mode 100644 index 0000000000000000000000000000000000000000..0d2735a60e80bd911dccafb3ce3c6ac57eaa0c0f --- /dev/null +++ b/ipcore_dir/tmp/_xmsgs/xst.xmsgs @@ -0,0 +1,2274 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- IMPORTANT: This is an internal file that has been generated + by the Xilinx ISE software. Any direct editing or + changes made to this file may result in unpredictable + behavior or data corruption. It is strongly advised that + users do not edit the contents of this file. --> +<messages> +<msg type="warning" file="UtilitiesC" num="159" delta="new" >Message file "<arg fmt="%s" index="1">usenglish/ip.msg</arg>" wasn't found. +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">0</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">1</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">2</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">3</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">4</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">5</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">6</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">7</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">8</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">9</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">10</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">11</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">12</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">13</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">14</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">15</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">0</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">1</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">2</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">3</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">4</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">5</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">6</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">7</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">8</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">9</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">10</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">11</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">12</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">13</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">14</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">15</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_input_block.vhd</arg>" line <arg fmt="%d" index="2">88</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_input_block.vhd</arg>" line <arg fmt="%d" index="2">88</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">780</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="753" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/fifo_generator_v6_2/ramfifo/fifo_generator_ramfifo.vhd</arg>" line <arg fmt="%d" index="2">358</arg>: Unconnected output port '<arg fmt="%s" index="3">INT_CLK_I</arg>' of component '<arg fmt="%s" index="4">input_blk</arg>'. +</msg> + +<msg type="warning" file="Xst" num="753" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/fifo_generator_v6_2/ramfifo/memory.vhd</arg>" line <arg fmt="%d" index="2">470</arg>: Unconnected output port '<arg fmt="%s" index="3">DOUTA</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_v4_2_xst</arg>'. +</msg> + +<msg type="warning" file="Xst" num="753" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/fifo_generator_v6_2/ramfifo/memory.vhd</arg>" line <arg fmt="%d" index="2">470</arg>: Unconnected output port '<arg fmt="%s" index="3">RDADDRECC</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_v4_2_xst</arg>'. +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">0</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">1</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">2</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">3</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">4</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">5</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">6</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">7</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">8</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">9</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">10</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">11</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">12</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">13</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">14</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">15</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">0</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">1</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">2</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">3</arg>: (<arg fmt="%d" index="2">1</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">4</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">5</arg>: (<arg fmt="%d" index="2">2</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">6</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">7</arg>: (<arg fmt="%d" index="2">3</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">8</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">9</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">10</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">11</arg>: (<arg fmt="%d" index="2">5</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">12</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">13</arg>: (<arg fmt="%d" index="2">6</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">14</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">15</arg>: (<arg fmt="%d" index="2">7</arg>,<arg fmt="%d" index="3">16384</arg>) : <arg fmt="%d" index="4">1</arg>x<arg fmt="%d" index="5">16384</arg> u:<arg fmt="%d" index="6">1</arg> +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_input_block.vhd</arg>" line <arg fmt="%d" index="2">691</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_input_block.vhd</arg>" line <arg fmt="%d" index="2">707</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1539</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1552</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="752" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1599</arg>: Unconnected input port '<arg fmt="%s" index="3">ADDR_IN</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_mux</arg>' is tied to default value. +</msg> + +<msg type="warning" file="Xst" num="752" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1599</arg>: Unconnected input port '<arg fmt="%s" index="3">SBITERRIN</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_mux</arg>' is tied to default value. +</msg> + +<msg type="warning" file="Xst" num="752" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1599</arg>: Unconnected input port '<arg fmt="%s" index="3">DBITERRIN</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_mux</arg>' is tied to default value. +</msg> + +<msg type="warning" file="Xst" num="753" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1599</arg>: Unconnected output port '<arg fmt="%s" index="3">SBITERR</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_mux</arg>'. +</msg> + +<msg type="warning" file="Xst" num="753" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1599</arg>: Unconnected output port '<arg fmt="%s" index="3">DBITERR</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_mux</arg>'. +</msg> + +<msg type="warning" file="Xst" num="753" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_generic_cstr.vhd</arg>" line <arg fmt="%d" index="2">1599</arg>: Unconnected output port '<arg fmt="%s" index="3">RDADDRECC</arg>' of component '<arg fmt="%s" index="4">blk_mem_gen_mux</arg>'. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">976</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addra_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="2096" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_prim_width.vhd</arg>" line <arg fmt="%d" index="2">977</arg>: Use of null array slice on signal <<arg fmt="%s" index="3">addrb_pad</arg>> is not supported. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_mux.vhd</arg>" line <arg fmt="%d" index="2">470</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_mux.vhd</arg>" line <arg fmt="%d" index="2">472</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_mux.vhd</arg>" line <arg fmt="%d" index="2">872</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="info" file="Xst" num="2679" delta="new" >Register <<arg fmt="%s" index="1">rdaddrecc_lat</arg>> in unit <<arg fmt="%s" index="2">blk_mem_gen_mux.1</arg>> has a constant value of <arg fmt="%s" index="3">000000000000000</arg> during circuit operation. The register is replaced by logic. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_mux.vhd</arg>" line <arg fmt="%d" index="2">470</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_mux.vhd</arg>" line <arg fmt="%d" index="2">472</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="warning" file="Xst" num="795" delta="new" >"<arg fmt="%s" index="1">/home/horacio/work/lago/lago-fpga-sync_vhdl/ipcore_dir/./tmp/_cg/_bbx/blk_mem_gen_v4_2/blk_mem_gen_mux.vhd</arg>" line <arg fmt="%d" index="2">872</arg>: Size of operands are different : result is <false>. +</msg> + +<msg type="info" file="Xst" num="2679" delta="new" >Register <<arg fmt="%s" index="1">rdaddrecc_lat</arg>> in unit <<arg fmt="%s" index="2">blk_mem_gen_mux.2</arg>> has a constant value of <arg fmt="%s" index="3">000000000000000</arg> during circuit operation. The register is replaced by logic. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RD_RST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WR_RST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">SRST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_EMPTY_THRESH_ASSERT</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">CLK</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_FULL_THRESH_NEGATE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_FULL_THRESH_ASSERT</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INT_CLK</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_FULL_THRESH</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_EMPTY_THRESH_NEGATE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_EMPTY_THRESH</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WR_ACK_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">ALMOST_EMPTY_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">DATA_COUNT_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">SBITERR_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">UNDERFLOW_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WR_DATA_COUNT_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_EMPTY_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">OVERFLOW_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">ALMOST_FULL_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">VALID_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RD_DATA_COUNT_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">DBITERR_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">INJECTSBITERR_I</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RSTA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WEB<0></arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">DINB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">INJECTDBITERR_I</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RDADDRECC_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">DOUTA_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">SBITERR_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">CLKB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">RDADDRECC</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">DBITERR_I</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">ERROR_INTERNAL</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DECODER_DOUTB</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DECODER_DOUTA</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MEM_LAT_RST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">ADDR_IN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">DBITERRIN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MEM_REGCE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MEM_REG_RST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MUX_REGCE<0></arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MUX_RST<0></arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">SBITERRIN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">rdaddrecc_lat</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MEM_LAT_RST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">ADDR_IN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">DBITERRIN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MEM_REGCE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MEM_REG_RST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MUX_REGCE<0></arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">MUX_RST<0></arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">SBITERRIN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">rdaddrecc_lat</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_FULL_THRESH_NEGATE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_FULL_THRESH_ASSERT</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RD_PNTR_WR<1:0></arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_FULL_THRESH</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">wr_rst_d1</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">diff_pntr_pad<0></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEA</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">REGCEB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_b</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_doutp_a</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_b<31:1></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">pad_dout_a<31:4></arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_b</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a4</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_dinp_a</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_b<31:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a32</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">pad_din_a<31:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_b9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">pad_addr_a9</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_b<35:1></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">full_dout_a<35:4></arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">full_din_a72</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">RAM_ALMOST_EMPTY</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RD_PNTR_PLUS2</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WR_PNTR_PLUS3</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RD_PNTR_WR<1:0></arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">WR_RST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">ram_almost_full_i</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">1</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_EMPTY_THRESH_ASSERT</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DATA_COUNT</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">RAM_REGOUT_EN</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">ALMOST_FULL_FB</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_EMPTY_THRESH_NEGATE</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">PROG_EMPTY_THRESH</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RAM_WR_EN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">valid_fwft_dc</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">valid_fwft</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_almost_empty</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">SRST_FULL_FF</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">RAM_RD_EN</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">wr_ack_i</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_afull_i</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">ram_afull_fb</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">overflow_i</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">DBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTDBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">SBITERR</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="1305" delta="new" >Output <<arg fmt="%s" index="1">RDADDRECC</arg>> is never assigned. Tied to value <arg fmt="%s" index="2">000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INJECTSBITERR</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">sbiterr_sdp</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">sbiterr_array</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">rst_enb</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">rst_ena</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">rdaddrecc_reg</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">rdaddrecc_out</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">rdaddrecc_lat</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">rdaddrecc_last</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr9</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr8</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr7</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr6</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr5</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr4</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr3</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr2</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr14</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr13</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr12</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr11</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr10</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr1</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr0</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_sbiterr</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr9</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr8</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr7</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr6</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr5</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr4</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr3</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr2</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr14</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr13</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr12</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr11</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr10</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr1</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr0</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">ram_dbiterr</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">dbiterr_sdp</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">dbiterr_array</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0000000000000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">addrb_in</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">SRST</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">zero_din_width</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">00000000</arg>. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">tmp_ram_regout_en</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">tmp_ram_regce</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">sbiterr_i</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="653" delta="new" >Signal <<arg fmt="%s" index="1">ram_rd_en_d1</arg>> is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">0</arg>. +</msg> + +<msg type="warning" file="Xst" num="646" delta="new" >Signal <<arg fmt="%s" index="1">dbiterr_i</arg>> is assigned but never used. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">regce_i</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">memsrst_i</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">memrd_rst_i</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">BACKUP_MARKER</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">INT_CLK</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="647" delta="new" >Input <<arg fmt="%s" index="1">BACKUP</arg>> is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">debug_wr_pntr_w</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">debug_wr_pntr_r</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">debug_wr_pntr_plus2_w</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">debug_wr_pntr_plus1_w</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">debug_rd_pntr_w</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">debug_rd_pntr_r</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">debug_rd_pntr_plus1_r</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DEBUG_WR_PNTR</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DEBUG_RD_PNTR</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DEBUG_RAM_WR_EN</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DEBUG_RAM_RD_EN</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DEBUG_RAM_FULL</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="1780" delta="new" >Signal <<arg fmt="%s" index="1">DEBUG_RAM_EMPTY</arg>> is never used or assigned. This unconnected signal will be trimmed during the optimization process. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_0</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_1</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_2</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_3</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_4</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_5</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_6</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_7</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_8</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_9</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_10</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_11</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">diff_pntr_pad_12</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">wr_pf_as</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">U0/grf.rf/gcx.clkx/rd_pntr_bin_1</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">fifo_fifo_generator_v6_2_xst_1</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">U0/grf.rf/gcx.clkx/rd_pntr_bin_0</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">fifo_fifo_generator_v6_2_xst_1</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_1</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">fifo_fifo_generator_v6_2_xst_1</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">U0/grf.rf/gcx.clkx/rd_pntr_gc_asreg_d1_0</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">fifo_fifo_generator_v6_2_xst_1</arg>>. +</msg> + +<msg type="warning" file="Xst" num="2677" delta="new" >Node <<arg fmt="%s" index="1">U0/grf.rf/mem/gbm.gbmg.gbmga.ngecc.bmg/blk_mem_generator/valid.cstr/has_mux_a.A/sel_pipe_0</arg>> of sequential type is unconnected in block <<arg fmt="%s" index="2">fifo_fifo_generator_v6_2_xst_1</arg>>. +</msg> + +<msg type="info" file="Xst" num="2169" delta="new" >HDL ADVISOR - Some clock signals were not automatically buffered by XST with BUFG/BUFR resources. Please use the buffer_type constraint in order to insert these buffers to the clock signals to help prevent skew problems. +</msg> + +</messages> + diff --git a/ipcore_dir/xaw2verilog.log b/ipcore_dir/xaw2verilog.log new file mode 100755 index 0000000000000000000000000000000000000000..d09c75c0096e19cb70c8492fed27e66bfecd355e --- /dev/null +++ b/ipcore_dir/xaw2verilog.log @@ -0,0 +1 @@ +xaw2verilog: Completed successfully diff --git a/ipcore_dir/xaw2vhdl.log b/ipcore_dir/xaw2vhdl.log new file mode 100755 index 0000000000000000000000000000000000000000..2c5d2b8c37bc7a612a2e4ad3cf28f608e6845b1e --- /dev/null +++ b/ipcore_dir/xaw2vhdl.log @@ -0,0 +1 @@ +xaw2vhdl: Completed successfully diff --git a/kcpsm3.vhd b/kcpsm3.vhd new file mode 100644 index 0000000000000000000000000000000000000000..e1e5804aa8a7477d752942cf16337b8eccb4ac5a --- /dev/null +++ b/kcpsm3.vhd @@ -0,0 +1,1901 @@ +-- PicoBlaze +-- +-- Constant (K) Coded Programmable State Machine for Spartan-3 Devices. +-- Also suitable for use with Virtex-II(PRO) and Virtex-4 devices. +-- +-- Includes additional code for enhanced VHDL simulation. +-- +-- Version : 1.30 +-- Version Date : 14th June 2004 +-- Reasons : Avoid issue caused when ENABLE INTERRUPT is used when interrupts are +-- already enabled when an an interrupt input is applied. +-- Improved design for faster ZERO and CARRY flag logic +-- +-- +-- Previous Version : 1.20 +-- Version Date : 9th July 2003 +-- +-- Start of design entry : 19th May 2003 +-- +-- Ken Chapman +-- Xilinx Ltd +-- Benchmark House +-- 203 Brooklands Road +-- Weybridge +-- Surrey KT13 ORH +-- United Kingdom +-- +-- chapman@xilinx.com +-- +-- Instruction disassembly concept inspired by the work of Prof. Dr.-Ing. Bernhard Lang. +-- University of Applied Sciences, Osnabrueck, Germany. +-- +------------------------------------------------------------------------------------ +-- +-- NOTICE: +-- +-- Copyright Xilinx, Inc. 2003. This code may be contain portions patented by other +-- third parties. By providing this core as one possible implementation of a standard, +-- Xilinx is making no representation that the provided implementation of this standard +-- is free from any claims of infringement by any third party. Xilinx expressly +-- disclaims any warranty with respect to the adequacy of the implementation, including +-- but not limited to any warranty or representation that the implementation is free +-- from claims of any third party. Furthermore, Xilinx is providing this core as a +-- courtesy to you and suggests that you contact all third parties to obtain the +-- necessary rights to use this implementation. +-- +------------------------------------------------------------------------------------ +-- +-- Format of this file. +-- +-- This file contains the definition of KCPSM3 as one complete module with sections +-- created using generate loops. This 'flat' approach has been adopted to decrease +-- the time taken to load the module into simulators and the synthesis process. +-- +-- The module defines the implementation of the logic using Xilinx primitives. +-- These ensure predictable synthesis results and maximise the density of the implementation. +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +------------------------------------------------------------------------------------ +-- +-- Library declarations +-- +-- Standard IEEE libraries +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library unisim; +use unisim.vcomponents.all; +-- +------------------------------------------------------------------------------------ +-- +-- Main Entity for KCPSM3 +-- +entity kcpsm3 is + Port ( address : out std_logic_vector(9 downto 0); + instruction : in std_logic_vector(17 downto 0); + port_id : out std_logic_vector(7 downto 0); + write_strobe : out std_logic; + out_port : out std_logic_vector(7 downto 0); + read_strobe : out std_logic; + in_port : in std_logic_vector(7 downto 0); + interrupt : in std_logic; + interrupt_ack : out std_logic; + reset : in std_logic; + clk : in std_logic); + end kcpsm3; +-- +------------------------------------------------------------------------------------ +-- +-- Start of Main Architecture for KCPSM3 +-- +architecture low_level_definition of kcpsm3 is +-- +------------------------------------------------------------------------------------ +-- +-- Signals used in KCPSM3 +-- +------------------------------------------------------------------------------------ +-- +-- Fundamental control and decode signals +-- +signal t_state : std_logic; +signal not_t_state : std_logic; +signal internal_reset : std_logic; +signal reset_delay : std_logic; +signal move_group : std_logic; +signal condition_met : std_logic; +signal normal_count : std_logic; +signal call_type : std_logic; +signal push_or_pop_type : std_logic; +signal valid_to_move : std_logic; +-- +-- Flag signals +-- +signal flag_type : std_logic; +signal flag_write : std_logic; +signal flag_enable : std_logic; +signal zero_flag : std_logic; +signal sel_shadow_zero : std_logic; +signal low_zero : std_logic; +signal high_zero : std_logic; +signal low_zero_carry : std_logic; +signal high_zero_carry : std_logic; +signal zero_carry : std_logic; +signal zero_fast_route : std_logic; +signal low_parity : std_logic; +signal high_parity : std_logic; +signal parity_carry : std_logic; +signal parity : std_logic; +signal carry_flag : std_logic; +signal sel_parity : std_logic; +signal sel_arith_carry : std_logic; +signal sel_shift_carry : std_logic; +signal sel_shadow_carry : std_logic; +signal sel_carry : std_logic_vector(3 downto 0); +signal carry_fast_route : std_logic; +-- +-- Interrupt signals +-- +signal active_interrupt : std_logic; +signal int_pulse : std_logic; +signal clean_int : std_logic; +signal shadow_carry : std_logic; +signal shadow_zero : std_logic; +signal int_enable : std_logic; +signal int_update_enable : std_logic; +signal int_enable_value : std_logic; +signal interrupt_ack_internal : std_logic; +-- +-- Program Counter signals +-- +signal pc : std_logic_vector(9 downto 0); +signal pc_vector : std_logic_vector(9 downto 0); +signal pc_vector_carry : std_logic_vector(8 downto 0); +signal inc_pc_vector : std_logic_vector(9 downto 0); +signal pc_value : std_logic_vector(9 downto 0); +signal pc_value_carry : std_logic_vector(8 downto 0); +signal inc_pc_value : std_logic_vector(9 downto 0); +signal pc_enable : std_logic; +-- +-- Data Register signals +-- +signal sx : std_logic_vector(7 downto 0); +signal sy : std_logic_vector(7 downto 0); +signal register_type : std_logic; +signal register_write : std_logic; +signal register_enable : std_logic; +signal second_operand : std_logic_vector(7 downto 0); +-- +-- Scratch Pad Memory signals +-- +signal memory_data : std_logic_vector(7 downto 0); +signal store_data : std_logic_vector(7 downto 0); +signal memory_type : std_logic; +signal memory_write : std_logic; +signal memory_enable : std_logic; +-- +-- Stack signals +-- +signal stack_pop_data : std_logic_vector(9 downto 0); +signal stack_ram_data : std_logic_vector(9 downto 0); +signal stack_address : std_logic_vector(4 downto 0); +signal half_stack_address : std_logic_vector(4 downto 0); +signal stack_address_carry : std_logic_vector(3 downto 0); +signal next_stack_address : std_logic_vector(4 downto 0); +signal stack_write_enable : std_logic; +signal not_active_interrupt : std_logic; +-- +-- ALU signals +-- +signal logical_result : std_logic_vector(7 downto 0); +signal logical_value : std_logic_vector(7 downto 0); +signal sel_logical : std_logic; +signal shift_result : std_logic_vector(7 downto 0); +signal shift_value : std_logic_vector(7 downto 0); +signal sel_shift : std_logic; +signal high_shift_in : std_logic; +signal low_shift_in : std_logic; +signal shift_in : std_logic; +signal shift_carry : std_logic; +signal shift_carry_value : std_logic; +signal arith_result : std_logic_vector(7 downto 0); +signal arith_value : std_logic_vector(7 downto 0); +signal half_arith : std_logic_vector(7 downto 0); +signal arith_internal_carry : std_logic_vector(7 downto 0); +signal sel_arith_carry_in : std_logic; +signal arith_carry_in : std_logic; +signal invert_arith_carry : std_logic; +signal arith_carry_out : std_logic; +signal sel_arith : std_logic; +signal arith_carry : std_logic; +-- +-- ALU multiplexer signals +-- +signal input_fetch_type : std_logic; +signal sel_group : std_logic; +signal alu_group : std_logic_vector(7 downto 0); +signal input_group : std_logic_vector(7 downto 0); +signal alu_result : std_logic_vector(7 downto 0); +-- +-- read and write strobes +-- +signal io_initial_decode : std_logic; +signal write_active : std_logic; +signal read_active : std_logic; +-- +-- +------------------------------------------------------------------------------------ +-- +-- Attributes to define LUT contents during implementation for primitives not +-- contained within generate loops. In each case the information is repeated +-- in the generic map for functional simulation +-- +attribute INIT : string; +attribute INIT of t_state_lut : label is "1"; +attribute INIT of int_pulse_lut : label is "0080"; +attribute INIT of int_update_lut : label is "EAAA"; +attribute INIT of int_value_lut : label is "04"; +attribute INIT of move_group_lut : label is "7400"; +attribute INIT of condition_met_lut : label is "5A3C"; +attribute INIT of normal_count_lut : label is "2F"; +attribute INIT of call_type_lut : label is "1000"; +attribute INIT of push_pop_lut : label is "5400"; +attribute INIT of valid_move_lut : label is "D"; +attribute INIT of flag_type_lut : label is "41FC"; +attribute INIT of flag_enable_lut : label is "8"; +attribute INIT of low_zero_lut : label is "0001"; +attribute INIT of high_zero_lut : label is "0001"; +attribute INIT of sel_shadow_zero_lut : label is "3F"; +attribute INIT of low_parity_lut : label is "6996"; +attribute INIT of high_parity_lut : label is "6996"; +attribute INIT of sel_parity_lut : label is "F3FF"; +attribute INIT of sel_arith_carry_lut : label is "F3"; +attribute INIT of sel_shift_carry_lut : label is "C"; +attribute INIT of sel_shadow_carry_lut : label is "3"; +attribute INIT of register_type_lut : label is "0145"; +attribute INIT of register_enable_lut : label is "8"; +attribute INIT of memory_type_lut : label is "0400"; +attribute INIT of memory_enable_lut : label is "8000"; +attribute INIT of sel_logical_lut : label is "FFE2"; +attribute INIT of low_shift_in_lut : label is "E4"; +attribute INIT of high_shift_in_lut : label is "E4"; +attribute INIT of shift_carry_lut : label is "E4"; +attribute INIT of sel_arith_lut : label is "1F"; +attribute INIT of input_fetch_type_lut : label is "0002"; +attribute INIT of io_decode_lut : label is "0010"; +attribute INIT of write_active_lut : label is "4000"; +attribute INIT of read_active_lut : label is "0100"; +-- +------------------------------------------------------------------------------------ +-- +-- Start of KCPSM3 circuit description +-- +------------------------------------------------------------------------------------ +-- +begin +-- +------------------------------------------------------------------------------------ +-- +-- Fundamental Control +-- +-- Definition of T-state and internal reset +-- +------------------------------------------------------------------------------------ +-- + t_state_lut: LUT1 + --synthesis translate_off + generic map (INIT => X"1") + --synthesis translate_on + port map( I0 => t_state, + O => not_t_state ); + + toggle_flop: FDR + port map ( D => not_t_state, + Q => t_state, + R => internal_reset, + C => clk); + + reset_flop1: FDS + port map ( D => '0', + Q => reset_delay, + S => reset, + C => clk); + + reset_flop2: FDS + port map ( D => reset_delay, + Q => internal_reset, + S => reset, + C => clk); +-- +------------------------------------------------------------------------------------ +-- +-- Interrupt input logic, Interrupt enable and shadow Flags. +-- +-- Captures interrupt input and enables the shadow flags. +-- Decodes instructions which set and reset the interrupt enable flip-flop. +-- +------------------------------------------------------------------------------------ +-- + + -- Interrupt capture + + int_capture_flop: FDR + port map ( D => interrupt, + Q => clean_int, + R => internal_reset, + C => clk); + + int_pulse_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0080") + --synthesis translate_on + port map( I0 => t_state, + I1 => clean_int, + I2 => int_enable, + I3 => active_interrupt, + O => int_pulse ); + + int_flop: FDR + port map ( D => int_pulse, + Q => active_interrupt, + R => internal_reset, + C => clk); + + ack_flop: FD + port map ( D => active_interrupt, + Q => interrupt_ack_internal, + C => clk); + + interrupt_ack <= interrupt_ack_internal; + + -- Shadow flags + + shadow_carry_flop: FDE + port map ( D => carry_flag, + Q => shadow_carry, + CE => active_interrupt, + C => clk); + + shadow_zero_flop: FDE + port map ( D => zero_flag, + Q => shadow_zero, + CE => active_interrupt, + C => clk); + + -- Decode instructions that set or reset interrupt enable + + int_update_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"EAAA") + --synthesis translate_on + port map( I0 => active_interrupt, + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => int_update_enable ); + + int_value_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"04") + --synthesis translate_on + port map( I0 => active_interrupt, + I1 => instruction(0), + I2 => interrupt_ack_internal, + O => int_enable_value ); + + int_enable_flop: FDRE + port map ( D => int_enable_value, + Q => int_enable, + CE => int_update_enable, + R => internal_reset, + C => clk); +-- +------------------------------------------------------------------------------------ +-- +-- Decodes for the control of the program counter and CALL/RETURN stack +-- +------------------------------------------------------------------------------------ +-- + move_group_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"7400") + --synthesis translate_on + port map( I0 => instruction(14), + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => move_group ); + + condition_met_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"5A3C") + --synthesis translate_on + port map( I0 => carry_flag, + I1 => zero_flag, + I2 => instruction(10), + I3 => instruction(11), + O => condition_met ); + + normal_count_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"2F") + --synthesis translate_on + port map( I0 => instruction(12), + I1 => condition_met, + I2 => move_group, + O => normal_count ); + + call_type_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"1000") + --synthesis translate_on + port map( I0 => instruction(14), + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => call_type ); + + push_pop_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"5400") + --synthesis translate_on + port map( I0 => instruction(14), + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => push_or_pop_type ); + + valid_move_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"D") + --synthesis translate_on + port map( I0 => instruction(12), + I1 => condition_met, + O => valid_to_move ); +-- +------------------------------------------------------------------------------------ +-- +-- The ZERO and CARRY Flags +-- +------------------------------------------------------------------------------------ +-- + -- Enable for flags + + flag_type_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"41FC") + --synthesis translate_on + port map( I0 => instruction(14), + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => flag_type ); + + flag_write_flop: FD + port map ( D => flag_type, + Q => flag_write, + C => clk); + + flag_enable_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"8") + --synthesis translate_on + port map( I0 => t_state, + I1 => flag_write, + O => flag_enable ); + + -- Zero Flag + + low_zero_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0001") + --synthesis translate_on + port map( I0 => alu_result(0), + I1 => alu_result(1), + I2 => alu_result(2), + I3 => alu_result(3), + O => low_zero ); + + high_zero_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0001") + --synthesis translate_on + port map( I0 => alu_result(4), + I1 => alu_result(5), + I2 => alu_result(6), + I3 => alu_result(7), + O => high_zero ); + + low_zero_muxcy: MUXCY + port map( DI => '0', + CI => '1', + S => low_zero, + O => low_zero_carry ); + + high_zero_cymux: MUXCY + port map( DI => '0', + CI => low_zero_carry, + S => high_zero, + O => high_zero_carry ); + + sel_shadow_zero_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"3F") + --synthesis translate_on + port map( I0 => shadow_zero, + I1 => instruction(16), + I2 => instruction(17), + O => sel_shadow_zero ); + + zero_cymux: MUXCY + port map( DI => shadow_zero, + CI => high_zero_carry, + S => sel_shadow_zero, + O => zero_carry ); + + zero_xor: XORCY + port map( LI => '0', + CI => zero_carry, + O => zero_fast_route); + + zero_flag_flop: FDRE + port map ( D => zero_fast_route, + Q => zero_flag, + CE => flag_enable, + R => internal_reset, + C => clk); + + -- Parity detection + + low_parity_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"6996") + --synthesis translate_on + port map( I0 => logical_result(0), + I1 => logical_result(1), + I2 => logical_result(2), + I3 => logical_result(3), + O => low_parity ); + + high_parity_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"6996") + --synthesis translate_on + port map( I0 => logical_result(4), + I1 => logical_result(5), + I2 => logical_result(6), + I3 => logical_result(7), + O => high_parity ); + + parity_muxcy: MUXCY + port map( DI => '0', + CI => '1', + S => low_parity, + O => parity_carry ); + + parity_xor: XORCY + port map( LI => high_parity, + CI => parity_carry, + O => parity); + + -- CARRY flag selection + + sel_parity_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"F3FF") + --synthesis translate_on + port map( I0 => parity, + I1 => instruction(13), + I2 => instruction(15), + I3 => instruction(16), + O => sel_parity ); + + sel_arith_carry_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"F3") + --synthesis translate_on + port map( I0 => arith_carry, + I1 => instruction(16), + I2 => instruction(17), + O => sel_arith_carry ); + + sel_shift_carry_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"C") + --synthesis translate_on + port map( I0 => shift_carry, + I1 => instruction(15), + O => sel_shift_carry ); + + sel_shadow_carry_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"3") + --synthesis translate_on + port map( I0 => shadow_carry, + I1 => instruction(17), + O => sel_shadow_carry ); + + sel_shadow_muxcy: MUXCY + port map( DI => shadow_carry, + CI => '0', + S => sel_shadow_carry, + O => sel_carry(0) ); + + sel_shift_muxcy: MUXCY + port map( DI => shift_carry, + CI => sel_carry(0), + S => sel_shift_carry, + O => sel_carry(1) ); + + sel_arith_muxcy: MUXCY + port map( DI => arith_carry, + CI => sel_carry(1), + S => sel_arith_carry, + O => sel_carry(2) ); + + sel_parity_muxcy: MUXCY + port map( DI => parity, + CI => sel_carry(2), + S => sel_parity, + O => sel_carry(3) ); + + carry_xor: XORCY + port map( LI => '0', + CI => sel_carry(3), + O => carry_fast_route); + + carry_flag_flop: FDRE + port map ( D => carry_fast_route, + Q => carry_flag, + CE => flag_enable, + R => internal_reset, + C => clk); +-- +------------------------------------------------------------------------------------ +-- +-- The Program Counter +-- +-- Definition of a 10-bit counter which can be loaded from two sources +-- +------------------------------------------------------------------------------------ +-- + + invert_enable: INV -- Inverter should be implemented in the CE to flip flops + port map( I => t_state, + O => pc_enable); + + pc_loop: for i in 0 to 9 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + -- + attribute INIT : string; + attribute INIT of vector_select_mux : label is "E4"; + attribute INIT of value_select_mux : label is "E4"; + -- + begin + + vector_select_mux: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(15), + I1 => instruction(i), + I2 => stack_pop_data(i), + O => pc_vector(i) ); + + value_select_mux: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => normal_count, + I1 => inc_pc_vector(i), + I2 => pc(i), + O => pc_value(i) ); + + register_bit: FDRSE + port map ( D => inc_pc_value(i), + Q => pc(i), + R => internal_reset, + S => active_interrupt, + CE => pc_enable, + C => clk); + + pc_lsb_carry: if i=0 generate + begin + + pc_vector_muxcy: MUXCY + port map( DI => '0', + CI => instruction(13), + S => pc_vector(i), + O => pc_vector_carry(i)); + + pc_vector_xor: XORCY + port map( LI => pc_vector(i), + CI => instruction(13), + O => inc_pc_vector(i)); + + pc_value_muxcy: MUXCY + port map( DI => '0', + CI => normal_count, + S => pc_value(i), + O => pc_value_carry(i)); + + pc_value_xor: XORCY + port map( LI => pc_value(i), + CI => normal_count, + O => inc_pc_value(i)); + + end generate pc_lsb_carry; + + pc_mid_carry: if i>0 and i<9 generate + begin + + pc_vector_muxcy: MUXCY + port map( DI => '0', + CI => pc_vector_carry(i-1), + S => pc_vector(i), + O => pc_vector_carry(i)); + + pc_vector_xor: XORCY + port map( LI => pc_vector(i), + CI => pc_vector_carry(i-1), + O => inc_pc_vector(i)); + + pc_value_muxcy: MUXCY + port map( DI => '0', + CI => pc_value_carry(i-1), + S => pc_value(i), + O => pc_value_carry(i)); + + pc_value_xor: XORCY + port map( LI => pc_value(i), + CI => pc_value_carry(i-1), + O => inc_pc_value(i)); + + end generate pc_mid_carry; + + pc_msb_carry: if i=9 generate + begin + + pc_vector_xor: XORCY + port map( LI => pc_vector(i), + CI => pc_vector_carry(i-1), + O => inc_pc_vector(i)); + + pc_value_xor: XORCY + port map( LI => pc_value(i), + CI => pc_value_carry(i-1), + O => inc_pc_value(i)); + + end generate pc_msb_carry; + + end generate pc_loop; + + address <= pc; +-- +------------------------------------------------------------------------------------ +-- +-- Register Bank and second operand selection. +-- +-- Definition of an 8-bit dual port RAM with 16 locations +-- including write enable decode. +-- +-- Outputs are assigned to PORT_ID and OUT_PORT. +-- +------------------------------------------------------------------------------------ +-- + -- Forming decode signal + + register_type_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0145") + --synthesis translate_on + port map( I0 => active_interrupt, + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => register_type ); + + register_write_flop: FD + port map ( D => register_type, + Q => register_write, + C => clk); + + register_enable_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"8") + --synthesis translate_on + port map( I0 => t_state, + I1 => register_write, + O => register_enable ); + + reg_loop: for i in 0 to 7 generate + -- + -- Attribute to define RAM contents during implementation + -- The information is repeated in the generic map for functional simulation + -- + attribute INIT : string; + attribute INIT of register_bit : label is "0000"; + attribute INIT of operand_select_mux : label is "E4"; + -- + begin + + register_bit: RAM16X1D + --synthesis translate_off + generic map(INIT => X"0000") + --synthesis translate_on + port map ( D => alu_result(i), + WE => register_enable, + WCLK => clk, + A0 => instruction(8), + A1 => instruction(9), + A2 => instruction(10), + A3 => instruction(11), + DPRA0 => instruction(4), + DPRA1 => instruction(5), + DPRA2 => instruction(6), + DPRA3 => instruction(7), + SPO => sx(i), + DPO => sy(i)); + + operand_select_mux: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(12), + I1 => instruction(i), + I2 => sy(i), + O => second_operand(i) ); + + end generate reg_loop; + + out_port <= sx; + port_id <= second_operand; +-- +------------------------------------------------------------------------------------ +-- +-- Store Memory +-- +-- Definition of an 8-bit single port RAM with 64 locations +-- including write enable decode. +-- +------------------------------------------------------------------------------------ +-- + -- Forming decode signal + + memory_type_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0400") + --synthesis translate_on + port map( I0 => active_interrupt, + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => memory_type ); + + memory_write_flop: FD + port map ( D => memory_type, + Q => memory_write, + C => clk); + + memory_enable_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"8000") + --synthesis translate_on + port map( I0 => t_state, + I1 => instruction(13), + I2 => instruction(14), + I3 => memory_write, + O => memory_enable ); + + store_loop: for i in 0 to 7 generate + -- + -- Attribute to define RAM contents during implementation + -- The information is repeated in the generic map for functional simulation + -- + attribute INIT : string; + attribute INIT of memory_bit : label is "0000000000000000"; + -- + begin + + memory_bit: RAM64X1S + --synthesis translate_off + generic map(INIT => X"0000000000000000") + --synthesis translate_on + port map ( D => sx(i), + WE => memory_enable, + WCLK => clk, + A0 => second_operand(0), + A1 => second_operand(1), + A2 => second_operand(2), + A3 => second_operand(3), + A4 => second_operand(4), + A5 => second_operand(5), + O => memory_data(i)); + + store_flop: FD + port map ( D => memory_data(i), + Q => store_data(i), + C => clk); + + end generate store_loop; +-- +------------------------------------------------------------------------------------ +-- +-- Logical operations +-- +-- Definition of AND, OR, XOR and LOAD functions which also provides TEST. +-- Includes pipeline stage used to form ALU multiplexer including decode. +-- +------------------------------------------------------------------------------------ +-- + sel_logical_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"FFE2") + --synthesis translate_on + port map( I0 => instruction(14), + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => sel_logical ); + + logical_loop: for i in 0 to 7 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of logical_lut : label is "6E8A"; + -- + begin + + logical_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"6E8A") + --synthesis translate_on + port map( I0 => second_operand(i), + I1 => sx(i), + I2 => instruction(13), + I3 => instruction(14), + O => logical_value(i)); + + logical_flop: FDR + port map ( D => logical_value(i), + Q => logical_result(i), + R => sel_logical, + C => clk); + + end generate logical_loop; +-- +-- +------------------------------------------------------------------------------------ +-- +-- Shift and Rotate operations +-- +-- Includes pipeline stage used to form ALU multiplexer including decode. +-- +------------------------------------------------------------------------------------ +-- + sel_shift_inv: INV -- Inverter should be implemented in the reset to flip flops + port map( I => instruction(17), + O => sel_shift); + + -- Bit to input to shift register + + high_shift_in_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(1), + I1 => sx(0), + I2 => instruction(0), + O => high_shift_in ); + + low_shift_in_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(1), + I1 => carry_flag, + I2 => sx(7), + O => low_shift_in ); + + shift_in_muxf5: MUXF5 + port map( I1 => high_shift_in, + I0 => low_shift_in, + S => instruction(2), + O => shift_in ); + + -- Forming shift carry signal + + shift_carry_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(3), + I1 => sx(7), + I2 => sx(0), + O => shift_carry_value ); + + pipeline_bit: FD + port map ( D => shift_carry_value, + Q => shift_carry, + C => clk); + + shift_loop: for i in 0 to 7 generate + begin + + lsb_shift: if i=0 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of shift_mux_lut : label is "E4"; + -- + begin + + shift_mux_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(3), + I1 => shift_in, + I2 => sx(i+1), + O => shift_value(i) ); + + end generate lsb_shift; + + mid_shift: if i>0 and i<7 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of shift_mux_lut : label is "E4"; + -- + begin + + shift_mux_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(3), + I1 => sx(i-1), + I2 => sx(i+1), + O => shift_value(i) ); + + end generate mid_shift; + + msb_shift: if i=7 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of shift_mux_lut : label is "E4"; + -- + begin + + shift_mux_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(3), + I1 => sx(i-1), + I2 => shift_in, + O => shift_value(i) ); + + end generate msb_shift; + + shift_flop: FDR + port map ( D => shift_value(i), + Q => shift_result(i), + R => sel_shift, + C => clk); + + end generate shift_loop; +-- +------------------------------------------------------------------------------------ +-- +-- Arithmetic operations +-- +-- Definition of ADD, ADDCY, SUB and SUBCY functions which also provides COMPARE. +-- Includes pipeline stage used to form ALU multiplexer including decode. +-- +------------------------------------------------------------------------------------ +-- + sel_arith_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"1F") + --synthesis translate_on + port map( I0 => instruction(14), + I1 => instruction(15), + I2 => instruction(16), + O => sel_arith ); + + arith_loop: for i in 0 to 7 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of arith_lut : label is "96"; + -- + begin + + lsb_arith: if i=0 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of arith_carry_in_lut : label is "6C"; + -- + begin + + arith_carry_in_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"6C") + --synthesis translate_on + port map( I0 => instruction(13), + I1 => instruction(14), + I2 => carry_flag, + O => sel_arith_carry_in ); + + arith_carry_in_muxcy: MUXCY + port map( DI => '0', + CI => '1', + S => sel_arith_carry_in, + O => arith_carry_in); + + arith_muxcy: MUXCY + port map( DI => sx(i), + CI => arith_carry_in, + S => half_arith(i), + O => arith_internal_carry(i)); + + arith_xor: XORCY + port map( LI => half_arith(i), + CI => arith_carry_in, + O => arith_value(i)); + + end generate lsb_arith; + + mid_arith: if i>0 and i<7 generate + begin + + arith_muxcy: MUXCY + port map( DI => sx(i), + CI => arith_internal_carry(i-1), + S => half_arith(i), + O => arith_internal_carry(i)); + + arith_xor: XORCY + port map( LI => half_arith(i), + CI => arith_internal_carry(i-1), + O => arith_value(i)); + + end generate mid_arith; + + msb_arith: if i=7 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of arith_carry_out_lut : label is "2"; + -- + begin + + arith_muxcy: MUXCY + port map( DI => sx(i), + CI => arith_internal_carry(i-1), + S => half_arith(i), + O => arith_internal_carry(i)); + + arith_xor: XORCY + port map( LI => half_arith(i), + CI => arith_internal_carry(i-1), + O => arith_value(i)); + + arith_carry_out_lut: LUT1 + --synthesis translate_off + generic map (INIT => X"2") + --synthesis translate_on + port map( I0 => instruction(14), + O => invert_arith_carry ); + + arith_carry_out_xor: XORCY + port map( LI => invert_arith_carry, + CI => arith_internal_carry(i), + O => arith_carry_out); + + arith_carry_flop: FDR + port map ( D => arith_carry_out, + Q => arith_carry, + R => sel_arith, + C => clk); + + end generate msb_arith; + + arith_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"96") + --synthesis translate_on + port map( I0 => sx(i), + I1 => second_operand(i), + I2 => instruction(14), + O => half_arith(i)); + + arith_flop: FDR + port map ( D => arith_value(i), + Q => arith_result(i), + R => sel_arith, + C => clk); + + end generate arith_loop; +-- +-- +------------------------------------------------------------------------------------ +-- +-- ALU multiplexer +-- +------------------------------------------------------------------------------------ +-- + input_fetch_type_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0002") + --synthesis translate_on + port map( I0 => instruction(14), + I1 => instruction(15), + I2 => instruction(16), + I3 => instruction(17), + O => input_fetch_type ); + + sel_group_flop: FD + port map ( D => input_fetch_type, + Q => sel_group, + C => clk); + + alu_mux_loop: for i in 0 to 7 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + attribute INIT : string; + attribute INIT of or_lut : label is "FE"; + attribute INIT of mux_lut : label is "E4"; + -- + begin + + or_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"FE") + --synthesis translate_on + port map( I0 => logical_result(i), + I1 => arith_result(i), + I2 => shift_result(i), + O => alu_group(i)); + + mux_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"E4") + --synthesis translate_on + port map( I0 => instruction(13), + I1 => in_port(i), + I2 => store_data(i), + O => input_group(i)); + + shift_in_muxf5: MUXF5 + port map( I1 => input_group(i), + I0 => alu_group(i), + S => sel_group, + O => alu_result(i) ); + + end generate alu_mux_loop; +-- +------------------------------------------------------------------------------------ +-- +-- Read and Write Strobes +-- +------------------------------------------------------------------------------------ +-- + io_decode_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0010") + --synthesis translate_on + port map( I0 => active_interrupt, + I1 => instruction(13), + I2 => instruction(14), + I3 => instruction(16), + O => io_initial_decode ); + + write_active_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"4000") + --synthesis translate_on + port map( I0 => t_state, + I1 => instruction(15), + I2 => instruction(17), + I3 => io_initial_decode, + O => write_active ); + + write_strobe_flop: FDR + port map ( D => write_active, + Q => write_strobe, + R => internal_reset, + C => clk); + + read_active_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0100") + --synthesis translate_on + port map( I0 => t_state, + I1 => instruction(15), + I2 => instruction(17), + I3 => io_initial_decode, + O => read_active ); + + read_strobe_flop: FDR + port map ( D => read_active, + Q => read_strobe, + R => internal_reset, + C => clk); +-- +------------------------------------------------------------------------------------ +-- +-- Program CALL/RETURN stack +-- +-- Provided the counter and memory for a 32 deep stack supporting nested +-- subroutine calls to a depth of 31 levels. +-- +------------------------------------------------------------------------------------ +-- + -- Stack memory is 32 locations of 10-bit single port. + + stack_ram_inv: INV -- Inverter should be implemented in the WE to RAM + port map( I => t_state, + O => stack_write_enable); + + stack_ram_loop: for i in 0 to 9 generate + -- + -- Attribute to define RAM contents during implementation + -- The information is repeated in the generic map for functional simulation + -- + attribute INIT : string; + attribute INIT of stack_bit : label is "00000000"; + -- + begin + + stack_bit: RAM32X1S + --synthesis translate_off + generic map(INIT => X"00000000") + --synthesis translate_on + port map ( D => pc(i), + WE => stack_write_enable, + WCLK => clk, + A0 => stack_address(0), + A1 => stack_address(1), + A2 => stack_address(2), + A3 => stack_address(3), + A4 => stack_address(4), + O => stack_ram_data(i)); + + stack_flop: FD + port map ( D => stack_ram_data(i), + Q => stack_pop_data(i), + C => clk); + + end generate stack_ram_loop; + + -- Stack address pointer is a 5-bit counter + + stack_count_inv: INV -- Inverter should be implemented in the CE to the flip-flops + port map( I => active_interrupt, + O => not_active_interrupt); + + stack_count_loop: for i in 0 to 4 generate + begin + + register_bit: FDRE + port map ( D => next_stack_address(i), + Q => stack_address(i), + R => internal_reset, + CE => not_active_interrupt, + C => clk); + + lsb_stack_count: if i=0 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + -- + attribute INIT : string; + attribute INIT of count_lut : label is "6555"; + -- + begin + + count_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"6555") + --synthesis translate_on + port map( I0 => stack_address(i), + I1 => t_state, + I2 => valid_to_move, + I3 => push_or_pop_type, + O => half_stack_address(i) ); + + count_muxcy: MUXCY + port map( DI => stack_address(i), + CI => '0', + S => half_stack_address(i), + O => stack_address_carry(i)); + + count_xor: XORCY + port map( LI => half_stack_address(i), + CI => '0', + O => next_stack_address(i)); + + end generate lsb_stack_count; + + mid_stack_count: if i>0 and i<4 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + -- + attribute INIT : string; + attribute INIT of count_lut : label is "A999"; + -- + begin + + count_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"A999") + --synthesis translate_on + port map( I0 => stack_address(i), + I1 => t_state, + I2 => valid_to_move, + I3 => call_type, + O => half_stack_address(i) ); + + count_muxcy: MUXCY + port map( DI => stack_address(i), + CI => stack_address_carry(i-1), + S => half_stack_address(i), + O => stack_address_carry(i)); + + count_xor: XORCY + port map( LI => half_stack_address(i), + CI => stack_address_carry(i-1), + O => next_stack_address(i)); + + end generate mid_stack_count; + + + msb_stack_count: if i=4 generate + -- + -- Attribute to define LUT contents during implementation + -- The information is repeated in the generic map for functional simulation + -- + attribute INIT : string; + attribute INIT of count_lut : label is "A999"; + -- + begin + + count_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"A999") + --synthesis translate_on + port map( I0 => stack_address(i), + I1 => t_state, + I2 => valid_to_move, + I3 => call_type, + O => half_stack_address(i) ); + + count_xor: XORCY + port map( LI => half_stack_address(i), + CI => stack_address_carry(i-1), + O => next_stack_address(i)); + + end generate msb_stack_count; + + end generate stack_count_loop; + +-- +------------------------------------------------------------------------------------ +-- +-- End of description for KCPSM3 macro. +-- +------------------------------------------------------------------------------------ +-- +--********************************************************************************** +-- Code for simulation purposes only after this line +--********************************************************************************** +-- +------------------------------------------------------------------------------------ +-- +-- Code for simulation. +-- +-- Disassemble the instruction codes to form a text string variable for display. +-- Determine status of reset and flags and present in the form of a text string. +-- Provide a local variables to simulate the contents of each register and scratch +-- pad memory location. +-- +------------------------------------------------------------------------------------ +-- + --All of this section is ignored during synthesis. + --synthesis translate off + + simulation: process (clk, instruction) + -- + --complete instruction decode + -- + variable kcpsm3_opcode : string(1 to 19); + -- + --Status of flags and processor + -- + variable kcpsm3_status : string(1 to 13):= "NZ, NC, Reset"; + + -- + --contents of each register + -- + variable s0_contents : std_logic_vector(7 downto 0):=X"00"; + variable s1_contents : std_logic_vector(7 downto 0):=X"00"; + variable s2_contents : std_logic_vector(7 downto 0):=X"00"; + variable s3_contents : std_logic_vector(7 downto 0):=X"00"; + variable s4_contents : std_logic_vector(7 downto 0):=X"00"; + variable s5_contents : std_logic_vector(7 downto 0):=X"00"; + variable s6_contents : std_logic_vector(7 downto 0):=X"00"; + variable s7_contents : std_logic_vector(7 downto 0):=X"00"; + variable s8_contents : std_logic_vector(7 downto 0):=X"00"; + variable s9_contents : std_logic_vector(7 downto 0):=X"00"; + variable sa_contents : std_logic_vector(7 downto 0):=X"00"; + variable sb_contents : std_logic_vector(7 downto 0):=X"00"; + variable sc_contents : std_logic_vector(7 downto 0):=X"00"; + variable sd_contents : std_logic_vector(7 downto 0):=X"00"; + variable se_contents : std_logic_vector(7 downto 0):=X"00"; + variable sf_contents : std_logic_vector(7 downto 0):=X"00"; + -- + --contents of each scratch pad memory location + -- + variable spm00_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm01_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm02_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm03_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm04_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm05_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm06_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm07_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm08_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm09_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm0a_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm0b_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm0c_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm0d_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm0e_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm0f_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm10_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm11_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm12_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm13_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm14_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm15_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm16_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm17_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm18_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm19_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm1a_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm1b_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm1c_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm1d_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm1e_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm1f_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm20_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm21_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm22_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm23_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm24_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm25_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm26_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm27_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm28_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm29_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm2a_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm2b_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm2c_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm2d_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm2e_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm2f_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm30_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm31_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm32_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm33_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm34_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm35_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm36_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm37_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm38_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm39_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm3a_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm3b_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm3c_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm3d_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm3e_contents : std_logic_vector(7 downto 0):=X"00"; + variable spm3f_contents : std_logic_vector(7 downto 0):=X"00"; + -- + --temporary variables + -- + variable sx_decode : string(1 to 2); --sX register specification + variable sy_decode : string(1 to 2); --sY register specification + variable kk_decode : string(1 to 2); --constant value specification + variable aaa_decode : string(1 to 3); --address specification + -- + -------------------------------------------------------------------------------- + -- + -- Function to convert 4-bit binary nibble to hexadecimal character + -- + -------------------------------------------------------------------------------- + -- + function hexcharacter (nibble: std_logic_vector(3 downto 0)) + return character is + variable hex: character; + begin + case nibble is + when "0000" => hex := '0'; + when "0001" => hex := '1'; + when "0010" => hex := '2'; + when "0011" => hex := '3'; + when "0100" => hex := '4'; + when "0101" => hex := '5'; + when "0110" => hex := '6'; + when "0111" => hex := '7'; + when "1000" => hex := '8'; + when "1001" => hex := '9'; + when "1010" => hex := 'A'; + when "1011" => hex := 'B'; + when "1100" => hex := 'C'; + when "1101" => hex := 'D'; + when "1110" => hex := 'E'; + when "1111" => hex := 'F'; + when others => hex := 'x'; + end case; + return hex; + end hexcharacter; + -- + -------------------------------------------------------------------------------- + -- + begin + + -- decode first register + sx_decode(1) := 's'; + sx_decode(2) := hexcharacter(instruction(11 downto 8)); + + -- decode second register + sy_decode(1) := 's'; + sy_decode(2) := hexcharacter(instruction(7 downto 4)); + + -- decode constant value + kk_decode(1) := hexcharacter(instruction(7 downto 4)); + kk_decode(2) := hexcharacter(instruction(3 downto 0)); + + -- address value + aaa_decode(1) := hexcharacter("00" & instruction(9 downto 8)); + aaa_decode(2) := hexcharacter(instruction(7 downto 4)); + aaa_decode(3) := hexcharacter(instruction(3 downto 0)); + + -- decode instruction + case instruction(17 downto 12) is + when "000000" => kcpsm3_opcode := "LOAD " & sx_decode & ',' & kk_decode & " "; + when "000001" => kcpsm3_opcode := "LOAD " & sx_decode & ',' & sy_decode & " "; + when "001010" => kcpsm3_opcode := "AND " & sx_decode & ',' & kk_decode & " "; + when "001011" => kcpsm3_opcode := "AND " & sx_decode & ',' & sy_decode & " "; + when "001100" => kcpsm3_opcode := "OR " & sx_decode & ',' & kk_decode & " "; + when "001101" => kcpsm3_opcode := "OR " & sx_decode & ',' & sy_decode & " "; + when "001110" => kcpsm3_opcode := "XOR " & sx_decode & ',' & kk_decode & " "; + when "001111" => kcpsm3_opcode := "XOR " & sx_decode & ',' & sy_decode & " "; + when "010010" => kcpsm3_opcode := "TEST " & sx_decode & ',' & kk_decode & " "; + when "010011" => kcpsm3_opcode := "TEST " & sx_decode & ',' & sy_decode & " "; + when "011000" => kcpsm3_opcode := "ADD " & sx_decode & ',' & kk_decode & " "; + when "011001" => kcpsm3_opcode := "ADD " & sx_decode & ',' & sy_decode & " "; + when "011010" => kcpsm3_opcode := "ADDCY " & sx_decode & ',' & kk_decode & " "; + when "011011" => kcpsm3_opcode := "ADDCY " & sx_decode & ',' & sy_decode & " "; + when "011100" => kcpsm3_opcode := "SUB " & sx_decode & ',' & kk_decode & " "; + when "011101" => kcpsm3_opcode := "SUB " & sx_decode & ',' & sy_decode & " "; + when "011110" => kcpsm3_opcode := "SUBCY " & sx_decode & ',' & kk_decode & " "; + when "011111" => kcpsm3_opcode := "SUBCY " & sx_decode & ',' & sy_decode & " "; + when "010100" => kcpsm3_opcode := "COMPARE " & sx_decode & ',' & kk_decode & " "; + when "010101" => kcpsm3_opcode := "COMPARE " & sx_decode & ',' & sy_decode & " "; + when "100000" => + case instruction(3 downto 0) is + when "0110" => kcpsm3_opcode := "SL0 " & sx_decode & " "; + when "0111" => kcpsm3_opcode := "SL1 " & sx_decode & " "; + when "0100" => kcpsm3_opcode := "SLX " & sx_decode & " "; + when "0000" => kcpsm3_opcode := "SLA " & sx_decode & " "; + when "0010" => kcpsm3_opcode := "RL " & sx_decode & " "; + when "1110" => kcpsm3_opcode := "SR0 " & sx_decode & " "; + when "1111" => kcpsm3_opcode := "SR1 " & sx_decode & " "; + when "1010" => kcpsm3_opcode := "SRX " & sx_decode & " "; + when "1000" => kcpsm3_opcode := "SRA " & sx_decode & " "; + when "1100" => kcpsm3_opcode := "RR " & sx_decode & " "; + when others => kcpsm3_opcode := "Invalid Instruction"; + end case; + when "101100" => kcpsm3_opcode := "OUTPUT " & sx_decode & ',' & kk_decode & " "; + when "101101" => kcpsm3_opcode := "OUTPUT " & sx_decode & ",(" & sy_decode & ") "; + when "000100" => kcpsm3_opcode := "INPUT " & sx_decode & ',' & kk_decode & " "; + when "000101" => kcpsm3_opcode := "INPUT " & sx_decode & ",(" & sy_decode & ") "; + when "101110" => kcpsm3_opcode := "STORE " & sx_decode & ',' & kk_decode & " "; + when "101111" => kcpsm3_opcode := "STORE " & sx_decode & ",(" & sy_decode & ") "; + when "000110" => kcpsm3_opcode := "FETCH " & sx_decode & ',' & kk_decode & " "; + when "000111" => kcpsm3_opcode := "FETCH " & sx_decode & ",(" & sy_decode & ") "; + when "110100" => kcpsm3_opcode := "JUMP " & aaa_decode & " "; + when "110101" => + case instruction(11 downto 10) is + when "00" => kcpsm3_opcode := "JUMP Z," & aaa_decode & " "; + when "01" => kcpsm3_opcode := "JUMP NZ," & aaa_decode & " "; + when "10" => kcpsm3_opcode := "JUMP C," & aaa_decode & " "; + when "11" => kcpsm3_opcode := "JUMP NC," & aaa_decode & " "; + when others => kcpsm3_opcode := "Invalid Instruction"; + end case; + when "110000" => kcpsm3_opcode := "CALL " & aaa_decode & " "; + when "110001" => + case instruction(11 downto 10) is + when "00" => kcpsm3_opcode := "CALL Z," & aaa_decode & " "; + when "01" => kcpsm3_opcode := "CALL NZ," & aaa_decode & " "; + when "10" => kcpsm3_opcode := "CALL C," & aaa_decode & " "; + when "11" => kcpsm3_opcode := "CALL NC," & aaa_decode & " "; + when others => kcpsm3_opcode := "Invalid Instruction"; + end case; + when "101010" => kcpsm3_opcode := "RETURN "; + when "101011" => + case instruction(11 downto 10) is + when "00" => kcpsm3_opcode := "RETURN Z "; + when "01" => kcpsm3_opcode := "RETURN NZ "; + when "10" => kcpsm3_opcode := "RETURN C "; + when "11" => kcpsm3_opcode := "RETURN NC "; + when others => kcpsm3_opcode := "Invalid Instruction"; + end case; + when "111000" => + case instruction(0) is + when '0' => kcpsm3_opcode := "RETURNI DISABLE "; + when '1' => kcpsm3_opcode := "RETURNI ENABLE "; + when others => kcpsm3_opcode := "Invalid Instruction"; + end case; + when "111100" => + case instruction(0) is + when '0' => kcpsm3_opcode := "DISABLE INTERRUPT "; + when '1' => kcpsm3_opcode := "ENABLE INTERRUPT "; + when others => kcpsm3_opcode := "Invalid Instruction"; + end case; + when others => kcpsm3_opcode := "Invalid Instruction"; + end case; + + if clk'event and clk='1' then + + --reset and flag status information + if reset='1' or reset_delay='1' then + kcpsm3_status := "NZ, NC, Reset"; + else + kcpsm3_status(7 to 13) := " "; + if flag_enable='1' then + if zero_carry='1' then + kcpsm3_status(1 to 4) := " Z, "; + else + kcpsm3_status(1 to 4) := "NZ, "; + end if; + if sel_carry(3)='1' then + kcpsm3_status(5 to 6) := " C"; + else + kcpsm3_status(5 to 6) := "NC"; + end if; + end if; + end if; + + --simulation of register contents + if register_enable='1' then + case instruction(11 downto 8) is + when "0000" => s0_contents := alu_result; + when "0001" => s1_contents := alu_result; + when "0010" => s2_contents := alu_result; + when "0011" => s3_contents := alu_result; + when "0100" => s4_contents := alu_result; + when "0101" => s5_contents := alu_result; + when "0110" => s6_contents := alu_result; + when "0111" => s7_contents := alu_result; + when "1000" => s8_contents := alu_result; + when "1001" => s9_contents := alu_result; + when "1010" => sa_contents := alu_result; + when "1011" => sb_contents := alu_result; + when "1100" => sc_contents := alu_result; + when "1101" => sd_contents := alu_result; + when "1110" => se_contents := alu_result; + when "1111" => sf_contents := alu_result; + when others => null; + end case; + end if; + + --simulation of scratch pad memory contents + if memory_enable='1' then + case second_operand(5 downto 0) is + when "000000" => spm00_contents := sx; + when "000001" => spm01_contents := sx; + when "000010" => spm02_contents := sx; + when "000011" => spm03_contents := sx; + when "000100" => spm04_contents := sx; + when "000101" => spm05_contents := sx; + when "000110" => spm06_contents := sx; + when "000111" => spm07_contents := sx; + when "001000" => spm08_contents := sx; + when "001001" => spm09_contents := sx; + when "001010" => spm0a_contents := sx; + when "001011" => spm0b_contents := sx; + when "001100" => spm0c_contents := sx; + when "001101" => spm0d_contents := sx; + when "001110" => spm0e_contents := sx; + when "001111" => spm0f_contents := sx; + when "010000" => spm10_contents := sx; + when "010001" => spm11_contents := sx; + when "010010" => spm12_contents := sx; + when "010011" => spm13_contents := sx; + when "010100" => spm14_contents := sx; + when "010101" => spm15_contents := sx; + when "010110" => spm16_contents := sx; + when "010111" => spm17_contents := sx; + when "011000" => spm18_contents := sx; + when "011001" => spm19_contents := sx; + when "011010" => spm1a_contents := sx; + when "011011" => spm1b_contents := sx; + when "011100" => spm1c_contents := sx; + when "011101" => spm1d_contents := sx; + when "011110" => spm1e_contents := sx; + when "011111" => spm1f_contents := sx; + when "100000" => spm20_contents := sx; + when "100001" => spm21_contents := sx; + when "100010" => spm22_contents := sx; + when "100011" => spm23_contents := sx; + when "100100" => spm24_contents := sx; + when "100101" => spm25_contents := sx; + when "100110" => spm26_contents := sx; + when "100111" => spm27_contents := sx; + when "101000" => spm28_contents := sx; + when "101001" => spm29_contents := sx; + when "101010" => spm2a_contents := sx; + when "101011" => spm2b_contents := sx; + when "101100" => spm2c_contents := sx; + when "101101" => spm2d_contents := sx; + when "101110" => spm2e_contents := sx; + when "101111" => spm2f_contents := sx; + when "110000" => spm30_contents := sx; + when "110001" => spm31_contents := sx; + when "110010" => spm32_contents := sx; + when "110011" => spm33_contents := sx; + when "110100" => spm34_contents := sx; + when "110101" => spm35_contents := sx; + when "110110" => spm36_contents := sx; + when "110111" => spm37_contents := sx; + when "111000" => spm38_contents := sx; + when "111001" => spm39_contents := sx; + when "111010" => spm3a_contents := sx; + when "111011" => spm3b_contents := sx; + when "111100" => spm3c_contents := sx; + when "111101" => spm3d_contents := sx; + when "111110" => spm3e_contents := sx; + when "111111" => spm3f_contents := sx; + when others => null; + end case; + end if; + + end if; + + end process simulation; + + --synthesis translate on +-- +--********************************************************************************** +-- End of simulation code. +--********************************************************************************** +-- +-- +end low_level_definition; +-- +------------------------------------------------------------------------------------ +-- +-- END OF FILE KCPSM3.VHD +-- +------------------------------------------------------------------------------------ diff --git a/kcuart_rx.vhd b/kcuart_rx.vhd new file mode 100644 index 0000000000000000000000000000000000000000..7c225402e8f3b8fdee93b8cc0915322086b418c5 --- /dev/null +++ b/kcuart_rx.vhd @@ -0,0 +1,352 @@ +-- Constant (K) Compact UART Receiver +-- +-- Version : 1.10 +-- Version Date : 3rd December 2003 +-- Reason : '--translate' directives changed to '--synthesis translate' directives +-- +-- Version : 1.00 +-- Version Date : 16th October 2002 +-- +-- Start of design entry : 16th October 2002 +-- +-- Ken Chapman +-- Xilinx Ltd +-- Benchmark House +-- 203 Brooklands Road +-- Weybridge +-- Surrey KT13 ORH +-- United Kingdom +-- +-- chapman@xilinx.com +-- +------------------------------------------------------------------------------------ +-- +-- NOTICE: +-- +-- Copyright Xilinx, Inc. 2002. This code may be contain portions patented by other +-- third parties. By providing this core as one possible implementation of a standard, +-- Xilinx is making no representation that the provided implementation of this standard +-- is free from any claims of infringement by any third party. Xilinx expressly +-- disclaims any warranty with respect to the adequacy of the implementation, including +-- but not limited to any warranty or representation that the implementation is free +-- from claims of any third party. Futhermore, Xilinx is providing this core as a +-- courtesy to you and suggests that you contact all third parties to obtain the +-- necessary rights to use this implementation. +-- +------------------------------------------------------------------------------------ +-- +-- Library declarations +-- +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library unisim; +use unisim.vcomponents.all; +-- +------------------------------------------------------------------------------------ +-- +-- Main Entity for KCUART_RX +-- +entity kcuart_rx is + Port ( serial_in : in std_logic; + data_out : out std_logic_vector(7 downto 0); + data_strobe : out std_logic; + en_16_x_baud : in std_logic; + clk : in std_logic); + end kcuart_rx; +-- +------------------------------------------------------------------------------------ +-- +-- Start of Main Architecture for KCUART_RX +-- +architecture low_level_definition of kcuart_rx is +-- +------------------------------------------------------------------------------------ +-- +------------------------------------------------------------------------------------ +-- +-- Signals used in KCUART_RX +-- +------------------------------------------------------------------------------------ +-- +signal sync_serial : std_logic; +signal stop_bit : std_logic; +signal data_int : std_logic_vector(7 downto 0); +signal data_delay : std_logic_vector(7 downto 0); +signal start_delay : std_logic; +signal start_bit : std_logic; +signal edge_delay : std_logic; +signal start_edge : std_logic; +signal decode_valid_char : std_logic; +signal valid_char : std_logic; +signal decode_purge : std_logic; +signal purge : std_logic; +signal valid_srl_delay : std_logic_vector(8 downto 0); +signal valid_reg_delay : std_logic_vector(8 downto 0); +signal decode_data_strobe : std_logic; +-- +-- +------------------------------------------------------------------------------------ +-- +-- Attributes to define LUT contents during implementation +-- The information is repeated in the generic map for functional simulation-- +-- +------------------------------------------------------------------------------------ +-- +attribute INIT : string; +attribute INIT of start_srl : label is "0000"; +attribute INIT of edge_srl : label is "0000"; +attribute INIT of valid_lut : label is "0040"; +attribute INIT of purge_lut : label is "54"; +attribute INIT of strobe_lut : label is "8"; +-- +------------------------------------------------------------------------------------ +-- +-- Start of KCUART_RX circuit description +-- +------------------------------------------------------------------------------------ +-- +begin + + -- Synchronise input serial data to system clock + + sync_reg: FD + port map ( D => serial_in, + Q => sync_serial, + C => clk); + + stop_reg: FD + port map ( D => sync_serial, + Q => stop_bit, + C => clk); + + + -- Data delays to capture data at 16 time baud rate + -- Each SRL16E is followed by a flip-flop for best timing + + data_loop: for i in 0 to 7 generate + begin + + lsbs: if i<7 generate + -- + attribute INIT : string; + attribute INIT of delay15_srl : label is "0000"; + -- + begin + + delay15_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => data_int(i+1), + CE => en_16_x_baud, + CLK => clk, + A0 => '0', + A1 => '1', + A2 => '1', + A3 => '1', + Q => data_delay(i) ); + + end generate lsbs; + + msb: if i=7 generate + -- + attribute INIT : string; + attribute INIT of delay15_srl : label is "0000"; + -- + begin + + delay15_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => stop_bit, + CE => en_16_x_baud, + CLK => clk, + A0 => '0', + A1 => '1', + A2 => '1', + A3 => '1', + Q => data_delay(i) ); + + end generate msb; + + data_reg: FDE + port map ( D => data_delay(i), + Q => data_int(i), + CE => en_16_x_baud, + C => clk); + + end generate data_loop; + + -- Assign internal signals to outputs + + data_out <= data_int; + + -- Data delays to capture start bit at 16 time baud rate + + start_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => data_int(0), + CE => en_16_x_baud, + CLK => clk, + A0 => '0', + A1 => '1', + A2 => '1', + A3 => '1', + Q => start_delay ); + + start_reg: FDE + port map ( D => start_delay, + Q => start_bit, + CE => en_16_x_baud, + C => clk); + + + -- Data delays to capture start bit leading edge at 16 time baud rate + -- Delay ensures data is captured at mid-bit position + + edge_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => start_bit, + CE => en_16_x_baud, + CLK => clk, + A0 => '1', + A1 => '0', + A2 => '1', + A3 => '0', + Q => edge_delay ); + + edge_reg: FDE + port map ( D => edge_delay, + Q => start_edge, + CE => en_16_x_baud, + C => clk); + + -- Detect a valid character + + valid_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0040") + --synthesis translate_on + port map( I0 => purge, + I1 => stop_bit, + I2 => start_edge, + I3 => edge_delay, + O => decode_valid_char ); + + valid_reg: FDE + port map ( D => decode_valid_char, + Q => valid_char, + CE => en_16_x_baud, + C => clk); + + -- Purge of data status + + purge_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"54") + --synthesis translate_on + port map( I0 => valid_reg_delay(8), + I1 => valid_char, + I2 => purge, + O => decode_purge ); + + purge_reg: FDE + port map ( D => decode_purge, + Q => purge, + CE => en_16_x_baud, + C => clk); + + -- Delay of valid_char pulse of length equivalent to the time taken + -- to purge data shift register of all data which has been used. + -- Requires 9x16 + 8 delays which is achieved by packing of SRL16E with + -- up to 16 delays and utilising the dedicated flip flop in each stage. + + valid_loop: for i in 0 to 8 generate + begin + + lsb: if i=0 generate + -- + attribute INIT : string; + attribute INIT of delay15_srl : label is "0000"; + -- + begin + + delay15_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => valid_char, + CE => en_16_x_baud, + CLK => clk, + A0 => '0', + A1 => '1', + A2 => '1', + A3 => '1', + Q => valid_srl_delay(i) ); + + end generate lsb; + + msbs: if i>0 generate + -- + attribute INIT : string; + attribute INIT of delay16_srl : label is "0000"; + -- + begin + + delay16_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => valid_reg_delay(i-1), + CE => en_16_x_baud, + CLK => clk, + A0 => '1', + A1 => '1', + A2 => '1', + A3 => '1', + Q => valid_srl_delay(i) ); + + end generate msbs; + + data_reg: FDE + port map ( D => valid_srl_delay(i), + Q => valid_reg_delay(i), + CE => en_16_x_baud, + C => clk); + + end generate valid_loop; + + -- Form data strobe + + strobe_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"8") + --synthesis translate_on + port map( I0 => valid_char, + I1 => en_16_x_baud, + O => decode_data_strobe ); + + strobe_reg: FD + port map ( D => decode_data_strobe, + Q => data_strobe, + C => clk); + +end low_level_definition; + +------------------------------------------------------------------------------------ +-- +-- END OF FILE KCUART_RX.VHD +-- +------------------------------------------------------------------------------------ + + diff --git a/kcuart_tx.vhd b/kcuart_tx.vhd new file mode 100644 index 0000000000000000000000000000000000000000..b8fec8544425b54ffb93297c41c651bb22793091 --- /dev/null +++ b/kcuart_tx.vhd @@ -0,0 +1,394 @@ +-- Constant (K) Compact UART Transmitter +-- +-- Version : 1.10 +-- Version Date : 3rd December 2003 +-- Reason : '--translate' directives changed to '--synthesis translate' directives +-- +-- Version : 1.00 +-- Version Date : 14th October 2002 +-- +-- Start of design entry : 2nd October 2002 +-- +-- Ken Chapman +-- Xilinx Ltd +-- Benchmark House +-- 203 Brooklands Road +-- Weybridge +-- Surrey KT13 ORH +-- United Kingdom +-- +-- chapman@xilinx.com +-- +------------------------------------------------------------------------------------ +-- +-- NOTICE: +-- +-- Copyright Xilinx, Inc. 2002. This code may be contain portions patented by other +-- third parties. By providing this core as one possible implementation of a standard, +-- Xilinx is making no representation that the provided implementation of this standard +-- is free from any claims of infringement by any third party. Xilinx expressly +-- disclaims any warranty with respect to the adequacy of the implementation, including +-- but not limited to any warranty or representation that the implementation is free +-- from claims of any third party. Futhermore, Xilinx is providing this core as a +-- courtesy to you and suggests that you contact all third parties to obtain the +-- necessary rights to use this implementation. +-- +------------------------------------------------------------------------------------ +-- +-- Library declarations +-- +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library unisim; +use unisim.vcomponents.all; +-- +------------------------------------------------------------------------------------ +-- +-- Main Entity for KCUART_TX +-- +entity kcuart_tx is + Port ( data_in : in std_logic_vector(7 downto 0); + send_character : in std_logic; + en_16_x_baud : in std_logic; + serial_out : out std_logic; + Tx_complete : out std_logic; + clk : in std_logic); + end kcuart_tx; +-- +------------------------------------------------------------------------------------ +-- +-- Start of Main Architecture for KCUART_TX +-- +architecture low_level_definition of kcuart_tx is +-- +------------------------------------------------------------------------------------ +-- +------------------------------------------------------------------------------------ +-- +-- Signals used in KCUART_TX +-- +------------------------------------------------------------------------------------ +-- +signal data_01 : std_logic; +signal data_23 : std_logic; +signal data_45 : std_logic; +signal data_67 : std_logic; +signal data_0123 : std_logic; +signal data_4567 : std_logic; +signal data_01234567 : std_logic; +signal bit_select : std_logic_vector(2 downto 0); +signal next_count : std_logic_vector(2 downto 0); +signal mask_count : std_logic_vector(2 downto 0); +signal mask_count_carry : std_logic_vector(2 downto 0); +signal count_carry : std_logic_vector(2 downto 0); +signal ready_to_start : std_logic; +signal decode_Tx_start : std_logic; +signal Tx_start : std_logic; +signal decode_Tx_run : std_logic; +signal Tx_run : std_logic; +signal decode_hot_state : std_logic; +signal hot_state : std_logic; +signal hot_delay : std_logic; +signal Tx_bit : std_logic; +signal decode_Tx_stop : std_logic; +signal Tx_stop : std_logic; +signal decode_Tx_complete : std_logic; +-- +-- +------------------------------------------------------------------------------------ +-- +-- Attributes to define LUT contents during implementation +-- The information is repeated in the generic map for functional simulation-- +-- +------------------------------------------------------------------------------------ +-- +attribute INIT : string; +attribute INIT of mux1_lut : label is "E4FF"; +attribute INIT of mux2_lut : label is "E4FF"; +attribute INIT of mux3_lut : label is "E4FF"; +attribute INIT of mux4_lut : label is "E4FF"; +attribute INIT of ready_lut : label is "10"; +attribute INIT of start_lut : label is "0190"; +attribute INIT of run_lut : label is "1540"; +attribute INIT of hot_state_lut : label is "94"; +attribute INIT of delay14_srl : label is "0000"; +attribute INIT of stop_lut : label is "0180"; +attribute INIT of complete_lut : label is "8"; +-- +------------------------------------------------------------------------------------ +-- +-- Start of KCUART_TX circuit description +-- +------------------------------------------------------------------------------------ +-- +begin + + -- 8 to 1 multiplexer to convert parallel data to serial + + mux1_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"E4FF") + --synthesis translate_on + port map( I0 => bit_select(0), + I1 => data_in(0), + I2 => data_in(1), + I3 => Tx_run, + O => data_01 ); + + mux2_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"E4FF") + --synthesis translate_on + port map( I0 => bit_select(0), + I1 => data_in(2), + I2 => data_in(3), + I3 => Tx_run, + O => data_23 ); + + mux3_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"E4FF") + --synthesis translate_on + port map( I0 => bit_select(0), + I1 => data_in(4), + I2 => data_in(5), + I3 => Tx_run, + O => data_45 ); + + mux4_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"E4FF") + --synthesis translate_on + port map( I0 => bit_select(0), + I1 => data_in(6), + I2 => data_in(7), + I3 => Tx_run, + O => data_67 ); + + mux5_muxf5: MUXF5 + port map( I1 => data_23, + I0 => data_01, + S => bit_select(1), + O => data_0123 ); + + mux6_muxf5: MUXF5 + port map( I1 => data_67, + I0 => data_45, + S => bit_select(1), + O => data_4567 ); + + mux7_muxf6: MUXF6 + port map( I1 => data_4567, + I0 => data_0123, + S => bit_select(2), + O => data_01234567 ); + + -- Register serial output and force start and stop bits + + pipeline_serial: FDRS + port map ( D => data_01234567, + Q => serial_out, + R => Tx_start, + S => Tx_stop, + C => clk); + + -- 3-bit counter + -- Counter is clock enabled by en_16_x_baud + -- Counter will be reset when 'Tx_start' is active + -- Counter will increment when Tx_bit is active + -- Tx_run must be active to count + -- count_carry(2) indicates when terminal count (7) is reached and Tx_bit=1 (ie overflow) + + count_width_loop: for i in 0 to 2 generate + -- + attribute INIT : string; + attribute INIT of count_lut : label is "8"; + -- + begin + + register_bit: FDRE + port map ( D => next_count(i), + Q => bit_select(i), + CE => en_16_x_baud, + R => Tx_start, + C => clk); + + count_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"8") + --synthesis translate_on + port map( I0 => bit_select(i), + I1 => Tx_run, + O => mask_count(i)); + + mask_and: MULT_AND + port map( I0 => bit_select(i), + I1 => Tx_run, + LO => mask_count_carry(i)); + + lsb_count: if i=0 generate + begin + + count_muxcy: MUXCY + port map( DI => mask_count_carry(i), + CI => Tx_bit, + S => mask_count(i), + O => count_carry(i)); + + count_xor: XORCY + port map( LI => mask_count(i), + CI => Tx_bit, + O => next_count(i)); + + end generate lsb_count; + + upper_count: if i>0 generate + begin + + count_muxcy: MUXCY + port map( DI => mask_count_carry(i), + CI => count_carry(i-1), + S => mask_count(i), + O => count_carry(i)); + + count_xor: XORCY + port map( LI => mask_count(i), + CI => count_carry(i-1), + O => next_count(i)); + + end generate upper_count; + + end generate count_width_loop; + + -- Ready to start decode + + ready_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"10") + --synthesis translate_on + port map( I0 => Tx_run, + I1 => Tx_start, + I2 => send_character, + O => ready_to_start ); + + -- Start bit enable + + start_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0190") + --synthesis translate_on + port map( I0 => Tx_bit, + I1 => Tx_stop, + I2 => ready_to_start, + I3 => Tx_start, + O => decode_Tx_start ); + + Tx_start_reg: FDE + port map ( D => decode_Tx_start, + Q => Tx_start, + CE => en_16_x_baud, + C => clk); + + + -- Run bit enable + + run_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"1540") + --synthesis translate_on + port map( I0 => count_carry(2), + I1 => Tx_bit, + I2 => Tx_start, + I3 => Tx_run, + O => decode_Tx_run ); + + Tx_run_reg: FDE + port map ( D => decode_Tx_run, + Q => Tx_run, + CE => en_16_x_baud, + C => clk); + + -- Bit rate enable + + hot_state_lut: LUT3 + --synthesis translate_off + generic map (INIT => X"94") + --synthesis translate_on + port map( I0 => Tx_stop, + I1 => ready_to_start, + I2 => Tx_bit, + O => decode_hot_state ); + + hot_state_reg: FDE + port map ( D => decode_hot_state, + Q => hot_state, + CE => en_16_x_baud, + C => clk); + + delay14_srl: SRL16E + --synthesis translate_off + generic map (INIT => X"0000") + --synthesis translate_on + port map( D => hot_state, + CE => en_16_x_baud, + CLK => clk, + A0 => '1', + A1 => '0', + A2 => '1', + A3 => '1', + Q => hot_delay ); + + Tx_bit_reg: FDE + port map ( D => hot_delay, + Q => Tx_bit, + CE => en_16_x_baud, + C => clk); + + -- Stop bit enable + + stop_lut: LUT4 + --synthesis translate_off + generic map (INIT => X"0180") + --synthesis translate_on + port map( I0 => Tx_bit, + I1 => Tx_run, + I2 => count_carry(2), + I3 => Tx_stop, + O => decode_Tx_stop ); + + Tx_stop_reg: FDE + port map ( D => decode_Tx_stop, + Q => Tx_stop, + CE => en_16_x_baud, + C => clk); + + -- Tx_complete strobe + + complete_lut: LUT2 + --synthesis translate_off + generic map (INIT => X"8") + --synthesis translate_on + port map( I0 => count_carry(2), + I1 => en_16_x_baud, + O => decode_Tx_complete ); + + Tx_complete_reg: FD + port map ( D => decode_Tx_complete, + Q => Tx_complete, + C => clk); + + +end low_level_definition; + +------------------------------------------------------------------------------------ +-- +-- END OF FILE KCUART_TX.VHD +-- +------------------------------------------------------------------------------------ + + diff --git a/lago_fpga_vhdl.prj b/lago_fpga_vhdl.prj new file mode 100644 index 0000000000000000000000000000000000000000..c05344bbee29285661a1e83a968aa2ee60db7be5 --- /dev/null +++ b/lago_fpga_vhdl.prj @@ -0,0 +1,19 @@ +vhdl work "kcuart_tx.vhd" +vhdl work "kcuart_rx.vhd" +vhdl work "bbfifo_16x8.vhd" +vhdl work "uart_tx.vhd" +vhdl work "uart_rx.vhd" +vhdl work "kcpsm3.vhd" +vhdl work "ipcore_dir/fifo.vhd" +vhdl work "HP_LAGO.VHD" +vhdl work "GPSNFIFO.VHD" +verilog work "dcm_200mhz.v" +vhdl work "usb_if_ctrl.vhd" +vhdl work "trigger.vhd" +vhdl work "rampa_hv.vhd" +vhdl work "interfaz_spi.vhd" +vhdl work "HP03_par_control.vhd" +vhdl work "GPS_n_fifo.vhd" +verilog work "clk_40mhz.v" +vhdl work "baseline.vhd" +vhdl work "lago_fpga_vhdl.vhd" diff --git a/lago_fpga_vhdl.ucf b/lago_fpga_vhdl.ucf new file mode 100755 index 0000000000000000000000000000000000000000..e7d8f9f4536a200dc89162f6473e16d78384a4aa --- /dev/null +++ b/lago_fpga_vhdl.ucf @@ -0,0 +1,179 @@ +# +#Copyright 2011 - Lab DPR (CAB-CNEA). All rights reserved. +# +#Redistribution and use in source and binary forms, with or without +#modification, are permitted provided that the following conditions +#are met: +# +# 1. Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials +# provided with the distribution. +# +#THIS SOFTWARE IS PROVIDED BY LAB DPR ''AS IS'' AND ANY EXPRESS OR IMPLIED +#WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +#MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +#IN NO EVENT SHALL LAB DPR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +#INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +#(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +#HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +#STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +#IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +#POSSIBILITY OF SUCH DAMAGE. +# +#The views and conclusions contained in the software and documentation +#are those of the authors and should not be interpreted as representing +#official policies, either expressed or implied, of Lab DPR. +# +#***************************************************************************** + +# Clock pin for Nexys 2 Board +NET "clk_50m" LOC = "B8"; +NET "clk_50m" TNM_NET = clk_50m; +TIMESPEC TS_clk = PERIOD "clk_50m" 20 ns HIGH 50%; + +# USB Interface. +# CY7C68013A Port A +NET "U_SLOE" LOC = "V15" | IOSTANDARD = LVCMOS33 ; # has external pull-up +NET "U_FIFOAD<0>" LOC = "T14" | IOSTANDARD = LVCMOS33 ; +NET "U_FIFOAD<1>" LOC = "V13" | IOSTANDARD = LVCMOS33 ; +NET "U_PKTEND" LOC = "V12" | IOSTANDARD = LVCMOS33 ; # no external pull-up + +# CY7C68013A Port B +NET "U_FD<0>" LOC = "R14" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<1>" LOC = "R13" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<2>" LOC = "P13" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<3>" LOC = "T12" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<4>" LOC = "N11" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<5>" LOC = "R11" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<6>" LOC = "P10" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<7>" LOC = "R10" | IOSTANDARD = LVCMOS33 ; + +# CY7C68013A Misc +NET "U_IFCLK" LOC = "T15" | IOSTANDARD = LVCMOS33 | PERIOD = 20.833; +NET "U_IFCLK" CLOCK_DEDICATED_ROUTE = FALSE; # Xilinx WebPACK version 10+ needs this. + +NET "U_FLAGB" LOC = "U14" | IOSTANDARD = LVCMOS33 ; +NET "U_FLAGC" LOC = "V16" | IOSTANDARD = LVCMOS33 ; + +NET "U_SLRD" LOC = "N9" | IOSTANDARD = LVCMOS33 ; # has external pull-up +NET "U_SLWR" LOC = "V9" | IOSTANDARD = LVCMOS33 ; # has external pull-up + +# 7 segment display + NET "seg<0>" LOC = "L18"; # Bank = 1, Pin name = IO_L10P_1, Type = I/O, Sch name = CA + NET "seg<1>" LOC = "F18"; # Bank = 1, Pin name = IO_L19P_1, Type = I/O, Sch name = CB + NET "seg<2>" LOC = "D17"; # Bank = 1, Pin name = IO_L23P_1/HDC, Type = DUAL, Sch name = CC + NET "seg<3>" LOC = "D16"; # Bank = 1, Pin name = IO_L23N_1/LDC0, Type = DUAL, Sch name = CD + NET "seg<4>" LOC = "G14"; # Bank = 1, Pin name = IO_L20P_1, Type = I/O, Sch name = CE + NET "seg<5>" LOC = "J17"; # Bank = 1, Pin name = IO_L13P_1/A6/RHCLK4/IRDY1, Type = RHCLK/DUAL, Sch name = CF + NET "seg<6>" LOC = "H14"; # Bank = 1, Pin name = IO_L17P_1, Type = I/O, Sch name = CG + NET "dp" LOC = "C17"; # Bank = 1, Pin name = IO_L24N_1/LDC2, Type = DUAL, Sch name = DP +# + NET "an<0>" LOC = "F17"; # Bank = 1, Pin name = IO_L19N_1, Type = I/O, Sch name = AN0 + NET "an<1>" LOC = "H17"; # Bank = 1, Pin name = IO_L16N_1/A0, Type = DUAL, Sch name = AN1 + NET "an<2>" LOC = "C18"; # Bank = 1, Pin name = IO_L24P_1/LDC1, Type = DUAL, Sch name = AN2 + NET "an<3>" LOC = "F15"; # Bank = 1, Pin name = IO_L21P_1, Type = I/O, Sch name = AN3 +# +# Leds +NET "led<0>" LOC = "J14"; # Bank = 1, Pin name = IO_L14N_1/A3/RHCLK7, Type = RHCLK/DUAL, Sch name = JD10/LD0 +NET "led<1>" LOC = "J15"; # Bank = 1, Pin name = IO_L14P_1/A4/RHCLK6, Type = RHCLK/DUAL, Sch name = JD9/LD1 +NET "led<2>" LOC = "K15"; # Bank = 1, Pin name = IO_L12P_1/A8/RHCLK2, Type = RHCLK/DUAL, Sch name = JD8/LD2 +NET "led<3>" LOC = "K14"; # Bank = 1, Pin name = IO_L12N_1/A7/RHCLK3/TRDY1, Type = RHCLK/DUAL, Sch name = JD7/LD3 +NET "led<4>" LOC = "E17"; # Bank = 1, Pin name = IO, Type = I/O, Sch name = LD4? s3e500 only +NET "led<5>" LOC = "P15"; # Bank = 1, Pin name = IO, Type = I/O, Sch name = LD5? s3e500 only +NET "led<6>" LOC = "F4"; # Bank = 3, Pin name = IO, Type = I/O, Sch name = LD6? s3e500 only +NET "led<7>" LOC = "R4"; # Bank = 3, Pin name = IO/VREF_3, Type = VREF, Sch name = LD7? s3e500 only + +# Leds +#NET "led<0>" LOC = "J14"; # Bank = 1, Pin name = IO_L14N_1/A3/RHCLK7, Type = RHCLK/DUAL, Sch name = JD10/LD0 +#NET "led<1>" LOC = "J15"; # Bank = 1, Pin name = IO_L14P_1/A4/RHCLK6, Type = RHCLK/DUAL, Sch name = JD9/LD1 +#NET "led<2>" LOC = "K15"; # Bank = 1, Pin name = IO_L12P_1/A8/RHCLK2, Type = RHCLK/DUAL, Sch name = JD8/LD2 +#NET "led<3>" LOC = "K14"; # Bank = 1, Pin name = IO_L12N_1/A7/RHCLK3/TRDY1, Type = RHCLK/DUAL, Sch name = JD7/LD3 +#NET "led<4>" LOC = "R4" ; # Bank = 3, Pin name = IO/VREF_3, Type = VREF, Sch name = LD7? s3e500 only +#NET "led<5>" LOC = "F4"; # Bank = 3, Pin name = IO, Type = I/O, Sch name = LD6? s3e500 only +#NET "led<6>" LOC = "E17"; # Bank = 3, Pin name = IO, Type = I/O, Sch name = LD6? s3e500 only + +#PWM Signals +NET "hv2" LOC = "A16"; # Bank = 0, Pin name = IO_L01N_0, Type = I/O, Sch name = R-IO39 +NET "hv3" LOC = "B16"; # Bank = 0, Pin name = IO_L01P_0, Type = I/O, Sch name = R-IO40 + +# Buttons +NET "reset" LOC = "B18"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = BTN0 + +# FX2 connector ch1 +NET "adc_clk1" LOC = "B4"; +NET "ch1<9>" LOC = "A4"; +NET "ch1<8>" LOC = "C3"; +NET "ch1<7>" LOC = "C4"; +NET "ch1<6>" LOC = "B6"; +NET "ch1<5>" LOC = "D5"; +NET "ch1<4>" LOC = "C5"; +NET "ch1<3>" LOC = "F7"; +NET "ch1<2>" LOC = "E7"; +NET "ch1<1>" LOC = "A6"; +NET "ch1<0>" LOC = "C7"; + +# FX2 connector ch2 +NET "adc_clk2" LOC = "F8"; +NET "ch2<9>" LOC = "D7"; +NET "ch2<8>" LOC = "E8"; +NET "ch2<7>" LOC = "E9"; +NET "ch2<6>" LOC = "C9"; +NET "ch2<5>" LOC = "A8"; +NET "ch2<4>" LOC = "G9"; +NET "ch2<3>" LOC = "F9"; +NET "ch2<2>" LOC = "D10"; +NET "ch2<1>" LOC = "A10"; +NET "ch2<0>" LOC = "B10"; + +# FX2 connector ch3 +NET "adc_clk3" LOC = "A11"; +NET "ch3<9>" LOC = "D11"; +NET "ch3<8>" LOC = "E10"; +NET "ch3<7>" LOC = "B11"; +NET "ch3<6>" LOC = "C11"; +NET "ch3<5>" LOC = "E11"; +NET "ch3<4>" LOC = "F11"; +NET "ch3<3>" LOC = "E12"; +NET "ch3<2>" LOC = "F12"; +NET "ch3<1>" LOC = "A13"; +NET "ch3<0>" LOC = "B13"; + +# MAX5501 Interface +NET "cs_e2prom" LOC = "B14"; +NET "cs_max5501" LOC = "A14"; +NET "spi_dout" LOC = "C14"; +NET "spi_sck" LOC = "D14"; + +# HP03 Interface +# It is in JB 6 pin expansion connector +NET "pMCLK" LOC = "R18"; # Bank = 1, Pin name = IO_L02P_1/A14, Type = DUAL, Sch name = JB2 +NET "pXCLR" LOC = "R16"; # Bank = 1, Pin name = IO_L03N_1/VREF_1, Type = VREF, Sch name = JB8 +NET "pSDA" LOC = "T18"; # Bank = 1, Pin name = IO_L02N_1/A13, Type = DUAL, Sch name = JB9 +NET "pSCL" LOC = "U18"; # Bank = 1, Pin name = IO_L01P_1/A16, Type = DUAL, Sch name = JB10 + +# GPS Interface +# It is in JC 6 pin expansion connector +NET "tx_uart" LOC = "G15"; # Bank = 1, Pin name = IO_L18P_1, Type = I/O, Sch name = JC1 +NET "pps_port" LOC = "G13"; # Bank = 1, Pin name = IO_L20N_1, Type = I/O, Sch name = JC3 +NET "rx_uart" LOC = "H16"; # Bank = 1, Pin name = IO_L16P_1, Type = I/O, Sch name = JC4 + +#Para VHP, esto es para que funcione con el cable que armé, NO con la fuente SWITCHING +#NET "rx_uart" LOC = "G13"; # Bank = 1, Pin name = IO_L20N_1, Type = I/O, Sch name = JC3 +#NET "pps_port" LOC = "H16"; # Bank = 1, Pin name = IO_L16P_1, Type = I/O, Sch name = JC4 +#NET "tx_uart" LOC = "F14"; # Bank = 1, Pin name = IO_L21N_1, Type = I/O, Sch name = JC8 + + +# Switches +NET "GPSen" LOC = "R17"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = SW7 + +#GPS signals extension (for VHP telescope) +NET "rx_uart_copy" LOC = "J13"; # Bank = 1, Pin name = IO_L15N_1/A1, Type = DUAL, Sch name = JD1 +NET "pps_port_copy" LOC = "M18"; # Bank = 1, Pin name = IO_L08N_1, Type = I/O, Sch name = JD2 +#NET "JD<2>" LOC = "N18"; # Bank = 1, Pin name = IO_L08P_1, Type = I/O, Sch name = JD3 +#NET "JD<3>" LOC = "P18"; # Bank = 1, Pin name = IO_L06N_1, Type = I/O, Sch name = JD4 diff --git a/lago_fpga_vhdl.vhd b/lago_fpga_vhdl.vhd new file mode 100644 index 0000000000000000000000000000000000000000..3c9fd49142365134581b5d27d7c75063a4032e85 --- /dev/null +++ b/lago_fpga_vhdl.vhd @@ -0,0 +1,578 @@ +-- +-- Copyright (C) 2011 Horacio Arnaldi +-- e-mail: lharnaldi@cab.cnea.gov.ar +-- +-- Laboratorio de Detección de PartÃculas y Radiación +-- Centro Atómico Bariloche +-- Comisión Nacional de EnergÃa Atómica (CNEA) +-- San Carlos de Bariloche +-- Date: 26/09/2011 +-- Ver: v1r7 -- +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity lago_fpga_vhdl is + generic ( + VER : natural := 2; --Code Version + REV : natural := 0; --Code Revision + RESET_POLARITY : std_logic := '1'; --Polarity of reset signal + W : natural := 5; --Number of addres bits. 2**W = 32 addres for W=5 + ADCBITS : natural := 10; --Number of ADC bits + L_ARRAY_MUESTRAS : natural := 12; --Samples Longitude of + L_ARRAY_PPS : natural := 10; --PPS longitude array + L_ARRAY_SCALERS : natural := 3; --Scalers longitude array + RBITS : natural := 12; -- := 12; -- numero de bits de los registros + REFRESH_RATE : natural := 80000; -- := 80000; -- 80000 clk implican un refresh rate de 2ms (80000 * 25 ns = 2ms) + NCH : natural := 3 --:= 3 -- numero de canales de la electronica + ); + + port( + -- Main 50 MHz clk + clk_50m : in std_logic; + -- Reset button (BTN0) + reset : in std_logic; + + -- USB interface + u_ifclk : in std_logic; + + -- Data & control from the FX2 + u_flagb : in std_logic; -- EP2 empty, active low + u_flagc : in std_logic; -- EP6 full, active low + u_fd : inout std_logic_vector(7 downto 0); + + -- Control to the FX2 + u_fifoad : out std_logic_vector(1 downto 0); + u_sloe : out std_logic; + u_slrd : out std_logic; -- active low + u_slwr : out std_logic; -- active low + u_pktend : out std_logic; -- active low + -- ADC inputs and clocks + ch1 : in std_logic_vector(9 downto 0); + ch2 : in std_logic_vector(9 downto 0); + ch3 : in std_logic_vector(9 downto 0); + adc_clk1 : out std_logic; + adc_clk2 : out std_logic; + adc_clk3 : out std_logic; + + -- SPI outputs + cs_e2prom : out std_logic; + cs_max5501 : out std_logic; + spi_dout : out std_logic; + spi_sck : out std_logic; + + -- PWM outputs + hv2 : out std_logic; + hv3 : out std_logic; + + -- I2C and HP03 related signals + pSDA : inout std_logic; + pSCL : out std_logic; + pXCLR : out std_logic; + pMCLK : out std_logic; + + --GPS realted signals + GPSen : in std_logic; + + -- 1PPS signal + pps_port : in std_logic; + + --UART ports + tx_uart : out std_logic; + rx_uart : in std_logic; + + --Copy of GPS received signals to sync two Nexys + rx_uart_copy : inout std_logic; + pps_port_copy : inout std_logic; + + --BCD leds dirvers + an : out std_logic_vector(3 downto 0); + seg : out std_logic_vector(6 downto 0); + dp : out std_logic; + + + -- Status signals + led : out std_logic_vector(7 downto 0) + ); +end lago_fpga_vhdl; + +architecture rtl of lago_fpga_vhdl is + + component clk_40mhz + port( + clk_50mhz : in std_logic; + clk_40mhz : out std_logic); + end component; + + signal sclk40m : std_logic; + -- Trigger related signals + signal sT1, sT2, sT3 : std_logic_vector(9 downto 0); + -- SubTrigger related signals + signal ssubT1, ssubT2, ssubT3 : std_logic_vector(9 downto 0); + signal swr_fifo_A, swr_fifo_B : std_logic; + signal sBL1, sBL2, sBL3, siHV1 : std_logic_vector(11 downto 0); + signal siHV2, siHV3, soHV1, soHV2, soHV3 : std_logic_vector(11 downto 0); + signal sfifo_in : std_logic_vector(31 downto 0); + signal sfifo_status : std_logic_vector(7 downto 0); + signal sstatus_port, srx_data, sout_port : std_logic_vector(7 downto 0); + signal swrite_to_fifo, sread_from_fifo : std_logic; + --HP03 related signals + signal sC1, sC2, sC3, sC4, sC5, sC6, sC7, sD1, sD2 : std_logic_vector(15 downto 0); + signal sA, sB, sC, sD : std_logic_vector(7 downto 0); + --GPS realted signals + signal sutcngps : std_logic; + signal smonth : std_logic_vector(7 downto 0); + signal sday : std_logic_vector(7 downto 0); + signal syear1 : std_logic_vector(7 downto 0); + signal syear2 : std_logic_vector(7 downto 0); + signal shours : std_logic_vector(7 downto 0); + signal sminutes : std_logic_vector(7 downto 0); + signal sseconds : std_logic_vector(7 downto 0); + signal sfract_sec1 : std_logic_vector(7 downto 0); + signal sfract_sec2 : std_logic_vector(7 downto 0); + signal sfract_sec3 : std_logic_vector(7 downto 0); + signal sfract_sec4 : std_logic_vector(7 downto 0); + signal slatitude1 : std_logic_vector(7 downto 0); + signal slatitude2 : std_logic_vector(7 downto 0); + signal slatitude3 : std_logic_vector(7 downto 0); + signal slatitude4 : std_logic_vector(7 downto 0); + signal slongitude1 : std_logic_vector(7 downto 0); + signal slongitude2 : std_logic_vector(7 downto 0); + signal slongitude3 : std_logic_vector(7 downto 0); + signal slongitude4 : std_logic_vector(7 downto 0); + signal sellipsoid1 : std_logic_vector(7 downto 0); + signal sellipsoid2 : std_logic_vector(7 downto 0); + signal sellipsoid3 : std_logic_vector(7 downto 0); + signal sellipsoid4 : std_logic_vector(7 downto 0); + signal svelocity1 : std_logic_vector(7 downto 0); + signal svelocity2 : std_logic_vector(7 downto 0); + signal sheading1 : std_logic_vector(7 downto 0); + signal sheading2 : std_logic_vector(7 downto 0); + signal sgeometry2 : std_logic_vector(7 downto 0); + signal sDOP_type : std_logic_vector(7 downto 0); + signal sNVS : std_logic_vector(7 downto 0); + signal sNTS : std_logic_vector(7 downto 0); + signal ssat_ID1 : std_logic_vector(7 downto 0); + signal schtm1 : std_logic_vector(7 downto 0); + signal sCNo1 : std_logic_vector(7 downto 0); + signal schsf1 : std_logic_vector(7 downto 0); + signal ssat_ID2 : std_logic_vector(7 downto 0); + signal schtm2 : std_logic_vector(7 downto 0); + signal sCNo2 : std_logic_vector(7 downto 0); + signal schsf2 : std_logic_vector(7 downto 0); + signal ssat_ID3 : std_logic_vector(7 downto 0); + signal schtm3 : std_logic_vector(7 downto 0); + signal sCNo3 : std_logic_vector(7 downto 0); + signal schsf3 : std_logic_vector(7 downto 0); + signal ssat_ID4 : std_logic_vector(7 downto 0); + signal schtm4 : std_logic_vector(7 downto 0); + signal sCNo4 : std_logic_vector(7 downto 0); + signal schsf4 : std_logic_vector(7 downto 0); + signal ssat_ID5 : std_logic_vector(7 downto 0); + signal schtm5 : std_logic_vector(7 downto 0); + signal sCNo5 : std_logic_vector(7 downto 0); + signal schsf5 : std_logic_vector(7 downto 0); + signal ssat_ID6 : std_logic_vector(7 downto 0); + signal schtm6 : std_logic_vector(7 downto 0); + signal sCNo6 : std_logic_vector(7 downto 0); + signal schsf6 : std_logic_vector(7 downto 0); + signal ssat_ID7 : std_logic_vector(7 downto 0); + signal schtm7 : std_logic_vector(7 downto 0); + signal sCNo7 : std_logic_vector(7 downto 0); + signal schsf7 : std_logic_vector(7 downto 0); + signal ssat_ID8 : std_logic_vector(7 downto 0); + signal schtm8 : std_logic_vector(7 downto 0); + signal sCNo8 : std_logic_vector(7 downto 0); + signal schsf8 : std_logic_vector(7 downto 0); + signal srsf : std_logic_vector(7 downto 0); + signal HV1_led, HV2_led, HV3_led : std_logic; + signal stick_2ms : std_logic; + +begin + + -- BCD drivers + an <= (others => '0'); + seg <= (others => '1'); + dp <= '1'; + + rx_uart_copy <= rx_uart; + pps_port_copy <= pps_port; + led(0) <= sfifo_status(0); + led(1) <= sfifo_status(1); + led(2) <= sfifo_status(2); + led(4) <= pps_port; + led(5) <= HV3_led; + led(6) <= HV2_led; + led(7) <= HV1_led; + adc_clk1 <= sclk40m; + adc_clk2 <= sclk40m; + adc_clk3 <= sclk40m; + + clk40mgen: clk_40mhz + port map( + clk_50mhz => clk_50m, + clk_40mhz => sclk40m); + + USB_interface: entity work.usb_if_ctrl + generic map( + VER => VER, + REV => REV, + RESET_POLARITY => RESET_POLARITY + ) + + port map( + reset => reset, + u_ifclk => u_ifclk, + u_fd => u_fd, + u_flagc => u_flagc, + u_flagb => u_flagb, + u_sloe => u_sloe, + u_slrd => u_slrd, + u_slwr => u_slwr, + u_fifoad => u_fifoad, + u_pktend => u_pktend, + T1 => sT1, + T2 => sT2, + T3 => sT3, + subT1 => ssubT1, + subT2 => ssubT2, + subT3 => ssubT3, + BL1 => sBL1, + BL2 => sBL2, + BL3 => sBL3, + HV1 => siHV1, + HV2 => siHV2, + HV3 => siHV3, + clk40m => sclk40m, + fifo_A => sfifo_in, + we_A => swr_fifo_A, +--HP03 signals + pC1 => sC1, + pC2 => sC2, + pC3 => sC3, + pC4 => sC4, + pC5 => sC5, + pC6 => sC6, + pC7 => sC7, + pA => sA, + pB => sB, + pC => sC, + pD => sD, + pD1 => sD1, + pD2 => sD2, +--GPS signals + UTCnGPS => sutcngps, + month_port => smonth, + day_port => sday, + year1_port => syear1, + year2_port => syear2, + hours_port => shours, + minutes_port => sminutes, + seconds_port => sseconds, + fract_sec1_port => sfract_sec1, + fract_sec2_port => sfract_sec2, + fract_sec3_port => sfract_sec3, + fract_sec4_port => sfract_sec4, + latitude1_port => slatitude1, + latitude2_port => slatitude2, + latitude3_port => slatitude3, + latitude4_port => slatitude4, + longitude1_port => slongitude1, + longitude2_port => slongitude2, + longitude3_port => slongitude3, + longitude4_port => slongitude4, + ellipsoid1_port => sellipsoid1, + ellipsoid2_port => sellipsoid2, + ellipsoid3_port => sellipsoid3, + ellipsoid4_port => sellipsoid4, + velocity1_port => svelocity1, + velocity2_port => svelocity2, + heading1_port => sheading1, + heading2_port => sheading2, + geometry2_port => sgeometry2, + DOP_type_port => sDOP_type, + num_vis_sat_port => sNVS, + num_track_sat_port => sNTS, + + sat_ID1_port => ssat_ID1, + chtm1_port => schtm1, + CNo1_port => sCNo1, + chsf1_port => schsf1, + + sat_ID2_port => ssat_ID2, + chtm2_port => schtm2, + CNo2_port => sCNo2, + chsf2_port => schsf2, + + sat_ID3_port => ssat_ID3, + chtm3_port => schtm3, + CNo3_port => sCNo3, + chsf3_port => schsf3, + + sat_ID4_port => ssat_ID4, + chtm4_port => schtm4, + CNo4_port => sCNo4, + chsf4_port => schsf4, + + sat_ID5_port => ssat_ID5, + chtm5_port => schtm5, + CNo5_port => sCNo5, + chsf5_port => schsf5, + + sat_ID6_port => ssat_ID6, + chtm6_port => schtm6, + CNo6_port => sCNo6, + chsf6_port => schsf6, + + sat_ID7_port => ssat_ID7, + chtm7_port => schtm7, + CNo7_port => sCNo7, + chsf7_port => schsf7, + + sat_ID8_port => ssat_ID8, + chtm8_port => schtm8, + CNo8_port => sCNo8, + chsf8_port => schsf8, + + rsf_port => srsf, + pfifo_status => sfifo_status); + + ramp_ctrl1: entity work.ramp + generic map ( + N => 18, + M => 200000, + P => 12 + ) + port map( + clk => sclk40m, + reset => reset, + data_in => siHV1, + data_out => soHV1, + pwm_pulse => open, + led_indicador => HV1_led); + + ramp_ctrl2: entity work.ramp + generic map ( + N => 18, + M => 200000, + P => 12 + ) + port map( + clk => sclk40m, + reset => reset, + data_in => siHV2, + data_out => open, + pwm_pulse => hv2, + led_indicador => HV2_led); + + ramp_ctrl3: entity work.ramp + generic map ( + N => 18, + M => 200000, + P => 12 + ) + port map( + clk => sclk40m, + reset => reset, + data_in => siHV3, + data_out => open, + pwm_pulse => hv3, + led_indicador => HV3_led); + + baseline: entity work.baseline_control + generic map ( + W => W, + ADCBITS => ADCBITS, + RBITS => RBITS, + REFRESH_RATE => REFRESH_RATE, + NCH => NCH + ) + port map( + clk_40mhz => sclk40m, + reset => reset, + ptick_2ms => stick_2ms, + data_adc1 => ch1, + data_adc2 => ch2, + data_adc3 => ch3, + baseline1 => sBL1, + baseline2 => sBL2, + baseline3 => sBL3); + + spi_controller: entity work.interfaz_spi + port map( + clk => sclk40m, + reset => reset, + ptick_2ms => stick_2ms, + data_dac1 => sBL3, --"011010001010", + data_dac2 => sBL2,--"011010001010", + data_dac3 => soHV1, + data_dac4 => sBL1,--"011010001010", + cs_e2prom => cs_e2prom, + spi_csn => cs_max5501, + spi_sdo => spi_dout, + spi_clk => spi_sck); + + comp_trigger: entity work.trigger_in + generic map( + W => W, + ADCBITS => ADCBITS, + L_ARRAY_MUESTRAS => L_ARRAY_MUESTRAS, + L_ARRAY_PPS => L_ARRAY_PPS, + L_ARRAY_SCALERS => L_ARRAY_SCALERS + ) + port map( + clk_40mhz => sclk40m, + reset => reset, + data_adc1 => ch1, + data_adc2 => ch2, + data_adc3 => ch3, + trigg_set1 => sT1, + trigg_set2 => sT2, + trigg_set3 => sT3, + subtrigg_set1 => ssubT1, + subtrigg_set2 => ssubT2, + subtrigg_set3 => ssubT3, + pwr_enA => swr_fifo_A, + data_out => sfifo_in, + pfifo_status => sfifo_status(2 downto 0), + ptemperatura => sD2, + ppresion => sD1, + phora => shours, + pminutos => sminutes, + psegundos => sseconds, + pps_signal => pps_port, + gpsen => GPSen, + pps_falso_led => led(3), + latitude1_port => slatitude1, + latitude2_port => slatitude2, + latitude3_port => slatitude3, + latitude4_port => slatitude4, + longitude1_port => slongitude1, + longitude2_port => slongitude2, + longitude3_port => slongitude3, + longitude4_port => slongitude4, + ellipsoid1_port => sellipsoid1, + ellipsoid2_port => sellipsoid2, + ellipsoid3_port => sellipsoid3, + ellipsoid4_port => sellipsoid4, + num_vis_sat_port => sNVS, + num_track_sat_port => sNTS, + rsf_port => srsf); + + hp03_controller: entity work.HP03_cntrl + Port map ( + clk => clk_50m, + SDA => pSDA, + SCL => pSCL, + XCLR => pXCLR, + MCLK => pMCLK, + C1 => sC1, + C2 => sC2, + C3 => sC3, + C4 => sC4, + C5 => sC5, + C6 => sC6, + C7 => sC7, + A => sA, + B => sB, + C => sC, + D => sD, + D1 => sD1, + D2 => sD2); + + gps_interface: entity work.Oncore_ctrl + port map( + clk => clk_50m, + tx_female => tx_uart, + rx_female => rx_uart, + UTCnGPS => sutcngps, + month_port => smonth, + day_port => sday, + year1_port => syear1, + year2_port => syear2, + hours_port => shours, + minutes_port => sminutes, + seconds_port => sseconds, + fract_sec1_port => sfract_sec1, + fract_sec2_port => sfract_sec2, + fract_sec3_port => sfract_sec3, + fract_sec4_port => sfract_sec4, + latitude1_port => slatitude1, + latitude2_port => slatitude2, + latitude3_port => slatitude3, + latitude4_port => slatitude4, + longitude1_port => slongitude1, + longitude2_port => slongitude2, + longitude3_port => slongitude3, + longitude4_port => slongitude4, + ellipsoid1_port => sellipsoid1, + ellipsoid2_port => sellipsoid2, + ellipsoid3_port => sellipsoid3, + ellipsoid4_port => sellipsoid4, + velocity1_port => svelocity1, + velocity2_port => svelocity2, + heading1_port => sheading1, + heading2_port => sheading2, + geometry2_port => sgeometry2, + DOP_type_port => sDOP_type, + num_vis_sat_port => sNVS, + num_track_sat_port => sNTS, + + sat_ID1_port => ssat_ID1, + chtm1_port => schtm1, + CNo1_port => sCNo1, + chsf1_port => schsf1, + + sat_ID2_port => ssat_ID2, + chtm2_port => schtm2, + CNo2_port => sCNo2, + chsf2_port => schsf2, + + sat_ID3_port => ssat_ID3, + chtm3_port => schtm3, + CNo3_port => sCNo3, + chsf3_port => schsf3, + + sat_ID4_port => ssat_ID4, + chtm4_port => schtm4, + CNo4_port => sCNo4, + chsf4_port => schsf4, + + sat_ID5_port => ssat_ID5, + chtm5_port => schtm5, + CNo5_port => sCNo5, + chsf5_port => schsf5, + + sat_ID6_port => ssat_ID6, + chtm6_port => schtm6, + CNo6_port => sCNo6, + chsf6_port => schsf6, + + sat_ID7_port => ssat_ID7, + chtm7_port => schtm7, + CNo7_port => sCNo7, + chsf7_port => schsf7, + + sat_ID8_port => ssat_ID8, + chtm8_port => schtm8, + CNo8_port => sCNo8, + chsf8_port => schsf8, + + rsf_port => srsf); + +end rtl; diff --git a/lago_fpga_vhdl.vhd_orig b/lago_fpga_vhdl.vhd_orig new file mode 100644 index 0000000000000000000000000000000000000000..82c6339c585ea435b5d37df80962b3f9d436a579 --- /dev/null +++ b/lago_fpga_vhdl.vhd_orig @@ -0,0 +1,699 @@ +-- +-- Copyright (C) 2011 Horacio Arnaldi +-- e-mail: lharnaldi@cab.cnea.gov.ar +-- +-- Laboratorio de Detección de PartÃculas y Radiación +-- Centro Atómico Bariloche +-- Comisión Nacional de EnergÃa Atómica (CNEA) +-- San Carlos de Bariloche +-- Date: 26/09/2011 +-- Ver: v1r7 -- +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity lago_fpga_sync is + generic ( + VER : natural := 2; + REV : natural := 1; + RESET_POLARITY : std_logic := '1'; + W : natural := 5; + ADCBITS : natural := 10; + L_ARRAY_MUESTRAS : natural := 12; + L_ARRAY_PPS : natural := 10; + L_ARRAY_SCALERS : natural := 3, + RBITS : natural := 12; -- := 12; -- numero de bits de los registros + REFRESH_RATE : natural := 80000; -- := 80000; -- 80000 clk implican un refresh rate de 2ms (80000 * 25 ns = 2ms) + NCH : natural := 3 --:= 3 -- numero de canales de la electronica + ); + + port( + -- Main 50 MHz clk + clk_50m : in std_logic; + -- Reset button (BTN0) + reset : in std_logic; + + -- USB interface + u_ifclk : in std_logic; + + -- Data & control from the FX2 + u_flagb : in std_logic; -- EP2 empty, active low + u_flagc : in std_logic; -- EP6 full, active low + u_fd : inout std_logic_vector(7 downto 0); + + -- Control to the FX2 + u_fifoad : out std_logic_vector(1 downto 0); + u_sloe : out std_logic; + u_slrd : out std_logic; -- active low + u_slwr : out std_logic; -- active low + u_pktend : out std_logic; -- active low + -- ADC inputs and clocks + ch1 : in std_logic_vector(9 downto 0); + ch2 : in std_logic_vector(9 downto 0); + ch3 : in std_logic_vector(9 downto 0); + adc_clk1 : out std_logic; + adc_clk2 : out std_logic; + adc_clk3 : out std_logic; + + -- SPI outputs + cs_e2prom : out std_logic; + cs_max5501 : out std_logic; + spi_dout : out std_logic; + spi_sck : out std_logic; + + -- PWM outputs + hv2 : out std_logic; + hv3 : out std_logic; + + -- I2C and HP03 related signals + pSDA : inout std_logic; + pSCL : out std_logic; + pXCLR : out std_logic; + pMCLK : out std_logic; + + --GPS realted signals + GPSen : in std_logic; + + -- 1PPS signal + pps_port : in std_logic; + + --UART ports + tx_uart : out std_logic; + rx_uart : in std_logic; + + --Copy of GPS received signals to sync two Nexys + rx_uart_copy : inout std_logic; + pps_port_copy : inout std_logic; + + --BCD leds dirvers + an : out std_logic_vector(3 downto 0); + seg : out std_logic_vector(6 downto 0); + dp : out std_logic; + + + -- Status signals + led : out std_logic_vector(7 downto 0) + ); +end lago_fpga_sync; + +architecture rtl of lago_fpga_sync is + + component clk_40mhz + port( + clk_50mhz : in std_logic; + clk_40mhz : out std_logic); + end component; + + component interfaz_max5501 + port( + fpga_clk : in std_logic; + data_dac1 : in std_logic_vector(11 downto 0); + data_dac2 : in std_logic_vector(11 downto 0); + data_dac3 : in std_logic_vector(11 downto 0); + data_dac4 : in std_logic_vector(11 downto 0); + cs_e2prom : out std_logic; + cs_max5501 : out std_logic; + spi_dout : out std_logic; + spi_sck : out std_logic); + end component; + + component HP03_cntrl is + Port ( + clk : in std_logic; + SDA : inout std_logic; + SCL : out std_logic; + XCLR : out std_logic; + MCLK : out std_logic; + C1 : out std_logic_vector(15 downto 0); + C2 : out std_logic_vector(15 downto 0); + C3 : out std_logic_vector(15 downto 0); + C4 : out std_logic_vector(15 downto 0); + C5 : out std_logic_vector(15 downto 0); + C6 : out std_logic_vector(15 downto 0); + C7 : out std_logic_vector(15 downto 0); + A : out std_logic_vector(7 downto 0); + B : out std_logic_vector(7 downto 0); + C : out std_logic_vector(7 downto 0); + D : out std_logic_vector(7 downto 0); + D1 : out std_logic_vector(15 downto 0); + D2 : out std_logic_vector(15 downto 0)); + end component; + + component Oncore_ctrl is + Port ( + clk : in std_logic; + tx_female : out std_logic; + rx_female : in std_logic; + UTCnGPS : in std_logic; + month_port : out std_logic_vector(7 downto 0); + day_port : out std_logic_vector(7 downto 0); + year1_port : out std_logic_vector(7 downto 0); + year2_port : out std_logic_vector(7 downto 0); + hours_port : out std_logic_vector(7 downto 0); + minutes_port : out std_logic_vector(7 downto 0); + seconds_port : out std_logic_vector(7 downto 0); + fract_sec1_port : out std_logic_vector(7 downto 0); + fract_sec2_port : out std_logic_vector(7 downto 0); + fract_sec3_port : out std_logic_vector(7 downto 0); + fract_sec4_port : out std_logic_vector(7 downto 0); + latitude1_port : out std_logic_vector(7 downto 0); + latitude2_port : out std_logic_vector(7 downto 0); + latitude3_port : out std_logic_vector(7 downto 0); + latitude4_port : out std_logic_vector(7 downto 0); + longitude1_port : out std_logic_vector(7 downto 0); + longitude2_port : out std_logic_vector(7 downto 0); + longitude3_port : out std_logic_vector(7 downto 0); + longitude4_port : out std_logic_vector(7 downto 0); + ellipsoid1_port : out std_logic_vector(7 downto 0); + ellipsoid2_port : out std_logic_vector(7 downto 0); + ellipsoid3_port : out std_logic_vector(7 downto 0); + ellipsoid4_port : out std_logic_vector(7 downto 0); + velocity1_port : out std_logic_vector(7 downto 0); + velocity2_port : out std_logic_vector(7 downto 0); + heading1_port : out std_logic_vector(7 downto 0); + heading2_port : out std_logic_vector(7 downto 0); + geometry2_port : out std_logic_vector(7 downto 0); + DOP_type_port : out std_logic_vector(7 downto 0); + num_vis_sat_port : out std_logic_vector(7 downto 0); + num_track_sat_port : out std_logic_vector(7 downto 0); + + sat_ID1_port : out std_logic_vector(7 downto 0); + chtm1_port : out std_logic_vector(7 downto 0); + CNo1_port : out std_logic_vector(7 downto 0); + chsf1_port : out std_logic_vector(7 downto 0); + + sat_ID2_port : out std_logic_vector(7 downto 0); + chtm2_port : out std_logic_vector(7 downto 0); + CNo2_port : out std_logic_vector(7 downto 0); + chsf2_port : out std_logic_vector(7 downto 0); + + sat_ID3_port : out std_logic_vector(7 downto 0); + chtm3_port : out std_logic_vector(7 downto 0); + CNo3_port : out std_logic_vector(7 downto 0); + chsf3_port : out std_logic_vector(7 downto 0); + + sat_ID4_port : out std_logic_vector(7 downto 0); + chtm4_port : out std_logic_vector(7 downto 0); + CNo4_port : out std_logic_vector(7 downto 0); + chsf4_port : out std_logic_vector(7 downto 0); + + sat_ID5_port : out std_logic_vector(7 downto 0); + chtm5_port : out std_logic_vector(7 downto 0); + CNo5_port : out std_logic_vector(7 downto 0); + chsf5_port : out std_logic_vector(7 downto 0); + + sat_ID6_port : out std_logic_vector(7 downto 0); + chtm6_port : out std_logic_vector(7 downto 0); + CNo6_port : out std_logic_vector(7 downto 0); + chsf6_port : out std_logic_vector(7 downto 0); + + sat_ID7_port : out std_logic_vector(7 downto 0); + chtm7_port : out std_logic_vector(7 downto 0); + CNo7_port : out std_logic_vector(7 downto 0); + chsf7_port : out std_logic_vector(7 downto 0); + + sat_ID8_port : out std_logic_vector(7 downto 0); + chtm8_port : out std_logic_vector(7 downto 0); + CNo8_port : out std_logic_vector(7 downto 0); + chsf8_port : out std_logic_vector(7 downto 0); + + rsf_port : out std_logic_vector(7 downto 0)); + end component; + + signal sclk40m : std_logic; + -- Trigger related signals + signal sT1, sT2, sT3 : std_logic_vector(9 downto 0); + -- SubTrigger related signals + signal ssubT1, ssubT2, ssubT3 : std_logic_vector(9 downto 0); + signal swr_fifo_A, swr_fifo_B : std_logic; + signal sBL1, sBL2, sBL3, siHV1 : std_logic_vector(11 downto 0); + signal siHV2, siHV3, soHV1, soHV2, soHV3 : std_logic_vector(11 downto 0); + signal sfifo_in : std_logic_vector(31 downto 0); + signal sfifo_status : std_logic_vector(7 downto 0); + signal sstatus_port, srx_data, sout_port : std_logic_vector(7 downto 0); + signal swrite_to_fifo, sread_from_fifo : std_logic; + --HP03 related signals + signal sC1, sC2, sC3, sC4, sC5, sC6, sC7, sD1, sD2 : std_logic_vector(15 downto 0); + signal sA, sB, sC, sD : std_logic_vector(7 downto 0); + --GPS realted signals + signal sutcngps : std_logic; + signal smonth : std_logic_vector(7 downto 0); + signal sday : std_logic_vector(7 downto 0); + signal syear1 : std_logic_vector(7 downto 0); + signal syear2 : std_logic_vector(7 downto 0); + signal shours : std_logic_vector(7 downto 0); + signal sminutes : std_logic_vector(7 downto 0); + signal sseconds : std_logic_vector(7 downto 0); + signal sfract_sec1 : std_logic_vector(7 downto 0); + signal sfract_sec2 : std_logic_vector(7 downto 0); + signal sfract_sec3 : std_logic_vector(7 downto 0); + signal sfract_sec4 : std_logic_vector(7 downto 0); + signal slatitude1 : std_logic_vector(7 downto 0); + signal slatitude2 : std_logic_vector(7 downto 0); + signal slatitude3 : std_logic_vector(7 downto 0); + signal slatitude4 : std_logic_vector(7 downto 0); + signal slongitude1 : std_logic_vector(7 downto 0); + signal slongitude2 : std_logic_vector(7 downto 0); + signal slongitude3 : std_logic_vector(7 downto 0); + signal slongitude4 : std_logic_vector(7 downto 0); + signal sellipsoid1 : std_logic_vector(7 downto 0); + signal sellipsoid2 : std_logic_vector(7 downto 0); + signal sellipsoid3 : std_logic_vector(7 downto 0); + signal sellipsoid4 : std_logic_vector(7 downto 0); + signal svelocity1 : std_logic_vector(7 downto 0); + signal svelocity2 : std_logic_vector(7 downto 0); + signal sheading1 : std_logic_vector(7 downto 0); + signal sheading2 : std_logic_vector(7 downto 0); + signal sgeometry2 : std_logic_vector(7 downto 0); + signal sDOP_type : std_logic_vector(7 downto 0); + signal sNVS : std_logic_vector(7 downto 0); + signal sNTS : std_logic_vector(7 downto 0); + signal ssat_ID1 : std_logic_vector(7 downto 0); + signal schtm1 : std_logic_vector(7 downto 0); + signal sCNo1 : std_logic_vector(7 downto 0); + signal schsf1 : std_logic_vector(7 downto 0); + signal ssat_ID2 : std_logic_vector(7 downto 0); + signal schtm2 : std_logic_vector(7 downto 0); + signal sCNo2 : std_logic_vector(7 downto 0); + signal schsf2 : std_logic_vector(7 downto 0); + signal ssat_ID3 : std_logic_vector(7 downto 0); + signal schtm3 : std_logic_vector(7 downto 0); + signal sCNo3 : std_logic_vector(7 downto 0); + signal schsf3 : std_logic_vector(7 downto 0); + signal ssat_ID4 : std_logic_vector(7 downto 0); + signal schtm4 : std_logic_vector(7 downto 0); + signal sCNo4 : std_logic_vector(7 downto 0); + signal schsf4 : std_logic_vector(7 downto 0); + signal ssat_ID5 : std_logic_vector(7 downto 0); + signal schtm5 : std_logic_vector(7 downto 0); + signal sCNo5 : std_logic_vector(7 downto 0); + signal schsf5 : std_logic_vector(7 downto 0); + signal ssat_ID6 : std_logic_vector(7 downto 0); + signal schtm6 : std_logic_vector(7 downto 0); + signal sCNo6 : std_logic_vector(7 downto 0); + signal schsf6 : std_logic_vector(7 downto 0); + signal ssat_ID7 : std_logic_vector(7 downto 0); + signal schtm7 : std_logic_vector(7 downto 0); + signal sCNo7 : std_logic_vector(7 downto 0); + signal schsf7 : std_logic_vector(7 downto 0); + signal ssat_ID8 : std_logic_vector(7 downto 0); + signal schtm8 : std_logic_vector(7 downto 0); + signal sCNo8 : std_logic_vector(7 downto 0); + signal schsf8 : std_logic_vector(7 downto 0); + signal srsf : std_logic_vector(7 downto 0); + signal HV1_led, HV2_led, HV3_led : std_logic; + +begin + + -- BCD drivers + an <= (others => '0'); + seg <= (others => '1'); + dp <= '1'; + + rx_uart_copy <= rx_uart; + pps_port_copy <= pps_port; + led(0) <= sfifo_status(0); + led(1) <= sfifo_status(1); + led(2) <= sfifo_status(2); + led(4) <= pps_port; + led(5) <= HV3_led; + led(6) <= HV2_led; + led(7) <= HV1_led; + adc_clk1 <= sclk40m; + adc_clk2 <= sclk40m; + adc_clk3 <= sclk40m; + + clk40mgen: clk_40mhz + port map( + clk_50mhz => clk_50m, + clk_40mhz => sclk40m); + + USB_interface: entity work.usb_if_ctrl + generic map( + VER => VER, + REV => REV, + RESET_POLARITY => RESET_POLARITY + ) + + port map( + reset => reset, + u_ifclk => u_ifclk, + u_fd => u_fd, + u_flagc => u_flagc, + u_flagb => u_flagb, + u_sloe => u_sloe, + u_slrd => u_slrd, + u_slwr => u_slwr, + u_fifoad => u_fifoad, + u_pktend => u_pktend, + T1 => sT1, + T2 => sT2, + T3 => sT3, + subT1 => ssubT1, + subT2 => ssubT2, + subT3 => ssubT3, + BL1 => sBL1, + BL2 => sBL2, + BL3 => sBL3, + HV1 => siHV1, + HV2 => siHV2, + HV3 => siHV3, + clk40m => sclk40m, + fifo_A => sfifo_in, + we_A => swr_fifo_A, + --HP03 signals + pC1 => sC1, + pC2 => sC2, + pC3 => sC3, + pC4 => sC4, + pC5 => sC5, + pC6 => sC6, + pC7 => sC7, + pA => sA, + pB => sB, + pC => sC, + pD => sD, + pD1 => sD1, + pD2 => sD2, + --GPS signals + UTCnGPS => sutcngps, + month_port => smonth, + day_port => sday, + year1_port => syear1, + year2_port => syear2, + hours_port => shours, + minutes_port => sminutes, + seconds_port => sseconds, + fract_sec1_port => sfract_sec1, + fract_sec2_port => sfract_sec2, + fract_sec3_port => sfract_sec3, + fract_sec4_port => sfract_sec4, + latitude1_port => slatitude1, + latitude2_port => slatitude2, + latitude3_port => slatitude3, + latitude4_port => slatitude4, + longitude1_port => slongitude1, + longitude2_port => slongitude2, + longitude3_port => slongitude3, + longitude4_port => slongitude4, + ellipsoid1_port => sellipsoid1, + ellipsoid2_port => sellipsoid2, + ellipsoid3_port => sellipsoid3, + ellipsoid4_port => sellipsoid4, + velocity1_port => svelocity1, + velocity2_port => svelocity2, + heading1_port => sheading1, + heading2_port => sheading2, + geometry2_port => sgeometry2, + DOP_type_port => sDOP_type, + num_vis_sat_port => sNVS, + num_track_sat_port => sNTS, + + sat_ID1_port => ssat_ID1, + chtm1_port => schtm1, + CNo1_port => sCNo1, + chsf1_port => schsf1, + + sat_ID2_port => ssat_ID2, + chtm2_port => schtm2, + CNo2_port => sCNo2, + chsf2_port => schsf2, + + sat_ID3_port => ssat_ID3, + chtm3_port => schtm3, + CNo3_port => sCNo3, + chsf3_port => schsf3, + + sat_ID4_port => ssat_ID4, + chtm4_port => schtm4, + CNo4_port => sCNo4, + chsf4_port => schsf4, + + sat_ID5_port => ssat_ID5, + chtm5_port => schtm5, + CNo5_port => sCNo5, + chsf5_port => schsf5, + + sat_ID6_port => ssat_ID6, + chtm6_port => schtm6, + CNo6_port => sCNo6, + chsf6_port => schsf6, + + sat_ID7_port => ssat_ID7, + chtm7_port => schtm7, + CNo7_port => sCNo7, + chsf7_port => schsf7, + + sat_ID8_port => ssat_ID8, + chtm8_port => schtm8, + CNo8_port => sCNo8, + chsf8_port => schsf8, + + rsf_port => srsf, + pfifo_status => sfifo_status); + + ramp_ctrl1: entity work.ramp + generic map ( + N => 18, + M => 200000, + P => 12 + ) + port map( + clk => sclk40m, + reset => reset, + data_in => siHV1, + data_out => soHV1, + led_indicador => HV1_led); + + ramp_ctrl2: entity work.ramp + generic map ( + N => 18, + M => 200000, + P => 12 + ) + port map( + clk => sclk40m, + reset => reset, + data_in => siHV2, + data_out => soHV2, + led_indicador => HV2_led); + + ramp_ctrl3: entity work.ramp + generic map ( + N => 18, + M => 200000, + P => 12 + ) + port map( + clk => sclk40m, + reset => reset, + data_in => siHV3, + data_out => soHV3, + led_indicador => HV3_led); + + baseline: entity work.baseline_control + generic map ( + RESET_POLARITY => RESET_POLARITY, + W => W, + ADCBITS => ADCBITS, + RBITS => RBITS, + REFRESH_RATE => REFRESH_RATE, + NCH => NCH + ) + port map( + clk_40mhz => sclk40m, + data_adc1 => ch1, + data_adc2 => ch2, + data_adc3 => ch3, + baseline1 => sBL1, + baseline2 => sBL2, + baseline3 => sBL3); + + comp_trigger: entity work.trigger_in + generic map( + W => W, + ADCBITS => ADCBITS, + L_ARRAY_MUESTRAS => L_ARRAY_MUESTRAS, + L_ARRAY_PPS => L_ARRAY_PPS, + L_ARRAY_SCALERS => L_ARRAY_SCALERS + ) + port map( + clk_40mhz => sclk40m, + reset => reset, + data_adc1 => ch1, + data_adc2 => ch2, + data_adc3 => ch3, + trigg_set1 => sT1, + trigg_set2 => sT2, + trigg_set3 => sT3, + subtrigg_set1 => ssubT1, + subtrigg_set2 => ssubT2, + subtrigg_set3 => ssubT3, + pwr_enA => swr_fifo_A, + data_out => sfifo_in, + pfifo_status => sfifo_status(2 downto 0), + ptemperatura => sD2, + ppresion => sD1, + phora => shours, + pminutos => sminutes, + psegundos => sseconds, + pps_signal => pps_port, + gpsen => GPSen, + pps_falso_led => led(3), + latitude1_port => slatitude1, + latitude2_port => slatitude2, + latitude3_port => slatitude3, + latitude4_port => slatitude4, + longitude1_port => slongitude1, + longitude2_port => slongitude2, + longitude3_port => slongitude3, + longitude4_port => slongitude4, + ellipsoid1_port => sellipsoid1, + ellipsoid2_port => sellipsoid2, + ellipsoid3_port => sellipsoid3, + ellipsoid4_port => sellipsoid4, + num_vis_sat_port => sNVS, + num_track_sat_port => sNTS, + rsf_port => srsf); + + hp03_controller: HP03_cntrl + Port map ( + clk => clk_50m, + SDA => pSDA, + SCL => pSCL, + XCLR => pXCLR, + MCLK => pMCLK, + C1 => sC1, + C2 => sC2, + C3 => sC3, + C4 => sC4, + C5 => sC5, + C6 => sC6, + C7 => sC7, + A => sA, + B => sB, + C => sC, + D => sD, + D1 => sD1, + D2 => sD2); + + gps_interface: Oncore_ctrl + port map( + clk => clk_50m, + tx_female => tx_uart, + rx_female => rx_uart, + UTCnGPS => sutcngps, + month_port => smonth, + day_port => sday, + year1_port => syear1, + year2_port => syear2, + hours_port => shours, + minutes_port => sminutes, + seconds_port => sseconds, + fract_sec1_port => sfract_sec1, + fract_sec2_port => sfract_sec2, + fract_sec3_port => sfract_sec3, + fract_sec4_port => sfract_sec4, + latitude1_port => slatitude1, + latitude2_port => slatitude2, + latitude3_port => slatitude3, + latitude4_port => slatitude4, + longitude1_port => slongitude1, + longitude2_port => slongitude2, + longitude3_port => slongitude3, + longitude4_port => slongitude4, + ellipsoid1_port => sellipsoid1, + ellipsoid2_port => sellipsoid2, + ellipsoid3_port => sellipsoid3, + ellipsoid4_port => sellipsoid4, + velocity1_port => svelocity1, + velocity2_port => svelocity2, + heading1_port => sheading1, + heading2_port => sheading2, + geometry2_port => sgeometry2, + DOP_type_port => sDOP_type, + num_vis_sat_port => sNVS, + num_track_sat_port => sNTS, + + sat_ID1_port => ssat_ID1, + chtm1_port => schtm1, + CNo1_port => sCNo1, + chsf1_port => schsf1, + + sat_ID2_port => ssat_ID2, + chtm2_port => schtm2, + CNo2_port => sCNo2, + chsf2_port => schsf2, + + sat_ID3_port => ssat_ID3, + chtm3_port => schtm3, + CNo3_port => sCNo3, + chsf3_port => schsf3, + + sat_ID4_port => ssat_ID4, + chtm4_port => schtm4, + CNo4_port => sCNo4, + chsf4_port => schsf4, + + sat_ID5_port => ssat_ID5, + chtm5_port => schtm5, + CNo5_port => sCNo5, + chsf5_port => schsf5, + + sat_ID6_port => ssat_ID6, + chtm6_port => schtm6, + CNo6_port => sCNo6, + chsf6_port => schsf6, + + sat_ID7_port => ssat_ID7, + chtm7_port => schtm7, + CNo7_port => sCNo7, + chsf7_port => schsf7, + + sat_ID8_port => ssat_ID8, + chtm8_port => schtm8, + CNo8_port => sCNo8, + chsf8_port => schsf8, + + rsf_port => srsf); + + spi_controller: interfaz_max5501 + port map( + fpga_clk => clk_50m, + data_dac1 => sBL3, + data_dac2 => sBL2, + data_dac3 => soHV1, + data_dac4 => sBL1, + cs_e2prom => cs_e2prom, + cs_max5501 => cs_max5501, + spi_dout => spi_dout, + spi_sck => spi_sck); + + hv2_controller: entity work.pwm + port map( + clk => clk_50m, + w => soHV2, + pwm_pulse => hv2); + + hv3_controller: entity work.pwm + port map( + clk => clk_50m, + w => soHV3, + pwm_pulse => hv3); + +end rtl; diff --git a/lago_fpga_vhdl.xise b/lago_fpga_vhdl.xise new file mode 100755 index 0000000000000000000000000000000000000000..cf9c87a557b33457ba1af5473aa116ee7815f992 --- /dev/null +++ b/lago_fpga_vhdl.xise @@ -0,0 +1,404 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema"> + + <header> + <!-- ISE source project file created by Project Navigator. --> + <!-- --> + <!-- This file contains project source information including a list of --> + <!-- project source files, project and process properties. This file, --> + <!-- along with the project source files, is sufficient to open and --> + <!-- implement in ISE Project Navigator. --> + <!-- --> + <!-- Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. --> + </header> + + <version xil_pn:ise_version="14.3" xil_pn:schema_version="2"/> + + <files> + <file xil_pn:name="clk_40mhz.v" xil_pn:type="FILE_VERILOG"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="1"/> + <association xil_pn:name="Implementation" xil_pn:seqID="17"/> + </file> + <file xil_pn:name="dcm_200mhz.v" xil_pn:type="FILE_VERILOG"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="2"/> + <association xil_pn:name="Implementation" xil_pn:seqID="10"/> + </file> + <file xil_pn:name="usb_if_ctrl.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="6"/> + <association xil_pn:name="Implementation" xil_pn:seqID="11"/> + </file> + <file xil_pn:name="ipcore_dir/fifo.xco" xil_pn:type="FILE_COREGEN"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="7"/> + <association xil_pn:name="Implementation" xil_pn:seqID="7"/> + </file> + <file xil_pn:name="kcpsm3.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="9"/> + <association xil_pn:name="Implementation" xil_pn:seqID="6"/> + </file> + <file xil_pn:name="kcuart_rx.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="10"/> + <association xil_pn:name="Implementation" xil_pn:seqID="2"/> + </file> + <file xil_pn:name="kcuart_tx.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="11"/> + <association xil_pn:name="Implementation" xil_pn:seqID="1"/> + </file> + <file xil_pn:name="bbfifo_16x8.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="12"/> + <association xil_pn:name="Implementation" xil_pn:seqID="3"/> + </file> + <file xil_pn:name="uart_rx.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="13"/> + <association xil_pn:name="Implementation" xil_pn:seqID="5"/> + </file> + <file xil_pn:name="uart_tx.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="14"/> + <association xil_pn:name="Implementation" xil_pn:seqID="4"/> + </file> + <file xil_pn:name="GPSNFIFO.VHD" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="15"/> + <association xil_pn:name="Implementation" xil_pn:seqID="9"/> + </file> + <file xil_pn:name="GPS_n_fifo.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="16"/> + <association xil_pn:name="Implementation" xil_pn:seqID="16"/> + </file> + <file xil_pn:name="HP_LAGO.VHD" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="17"/> + <association xil_pn:name="Implementation" xil_pn:seqID="8"/> + </file> + <file xil_pn:name="HP03_par_control.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="18"/> + <association xil_pn:name="Implementation" xil_pn:seqID="15"/> + </file> + <file xil_pn:name="trigger.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="23"/> + <association xil_pn:name="Implementation" xil_pn:seqID="12"/> + </file> + <file xil_pn:name="rampa_hv.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="23"/> + <association xil_pn:name="Implementation" xil_pn:seqID="13"/> + </file> + <file xil_pn:name="baseline.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="25"/> + <association xil_pn:name="Implementation" xil_pn:seqID="18"/> + </file> + <file xil_pn:name="lago_fpga_vhdl.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="22"/> + <association xil_pn:name="Implementation" xil_pn:seqID="19"/> + </file> + <file xil_pn:name="lago_fpga_vhdl.ucf" xil_pn:type="FILE_UCF"> + <association xil_pn:name="Implementation" xil_pn:seqID="0"/> + </file> + <file xil_pn:name="interfaz_spi.vhd" xil_pn:type="FILE_VHDL"> + <association xil_pn:name="BehavioralSimulation" xil_pn:seqID="22"/> + <association xil_pn:name="Implementation" xil_pn:seqID="14"/> + </file> + </files> + + <properties> + <property xil_pn:name="Add I/O Buffers" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Logic Optimization Across Hierarchy" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow SelectMAP Pins to Persist" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Unexpanded Blocks" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Unmatched LOC Constraints" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Allow Unmatched Timing Group Constraints" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Asynchronous To Synchronous" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Auto Implementation Compile Order" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Auto Implementation Top" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Automatic BRAM Packing" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Automatically Insert glbl Module in the Netlist" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Automatically Run Generate Target PROM/ACE File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="BRAM Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Bring Out Global Set/Reset Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Bring Out Global Tristate Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Bus Delimiter" xil_pn:value="<>" xil_pn:valueState="default"/> + <property xil_pn:name="CLB Pack Factor Percentage" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Case" xil_pn:value="Maintain" xil_pn:valueState="default"/> + <property xil_pn:name="Case Implementation Style" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Change Device Speed To" xil_pn:value="-4" xil_pn:valueState="default"/> + <property xil_pn:name="Change Device Speed To Post Trace" xil_pn:value="-4" xil_pn:valueState="default"/> + <property xil_pn:name="Combinatorial Logic Optimization" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Compile EDK Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile SIMPRIM (Timing) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile UNISIM (Functional) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile XilinxCoreLib (CORE Generator) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Compile for HDL Debugging" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin Done" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Pin Program" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Configuration Rate" xil_pn:value="Default (1)" xil_pn:valueState="default"/> + <property xil_pn:name="Correlate Output to Input Design" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create ASCII Configuration File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Binary Configuration File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Bit File" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Create I/O Pads from Ports" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create IEEE 1532 Configuration File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Logic Allocation File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create Mask File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Create ReadBack Data Files" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Cross Clock Analysis" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Decoder Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Delay Values To Be Read from SDF" xil_pn:value="Setup Time" xil_pn:valueState="default"/> + <property xil_pn:name="Device" xil_pn:value="xc3s500e" xil_pn:valueState="non-default"/> + <property xil_pn:name="Device Family" xil_pn:value="Spartan3E" xil_pn:valueState="non-default"/> + <property xil_pn:name="Device Speed Grade/Select ABS Minimum" xil_pn:value="-4" xil_pn:valueState="default"/> + <property xil_pn:name="Do Not Escape Signal and Instance Names in Netlist" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Done (Output Events)" xil_pn:value="Default (4)" xil_pn:valueState="default"/> + <property xil_pn:name="Drive Done Pin High" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable BitStream Compression" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Cyclic Redundancy Checking (CRC)" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Debugging of Serial Mode BitStream" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Hardware Co-Simulation" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Internal Done Pipe" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Message Filtering" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Enable Outputs (Output Events)" xil_pn:value="Default (5)" xil_pn:valueState="default"/> + <property xil_pn:name="Equivalent Register Removal XST" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Evaluation Development Board" xil_pn:value="None Specified" xil_pn:valueState="default"/> + <property xil_pn:name="Exclude Compilation of Deprecated EDK Cores" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Exclude Compilation of EDK Sub-Libraries" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Extra Effort" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Extra Effort (Highest PAR level only)" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="FPGA Start-Up Clock" xil_pn:value="JTAG Clock" xil_pn:valueState="non-default"/> + <property xil_pn:name="FSM Encoding Algorithm" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="FSM Style" xil_pn:value="LUT" xil_pn:valueState="default"/> + <property xil_pn:name="Filter Files From Compile Order" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Flatten Output Netlist" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Functional Model Target Language ArchWiz" xil_pn:value="VHDL" xil_pn:valueState="default"/> + <property xil_pn:name="Functional Model Target Language Coregen" xil_pn:value="VHDL" xil_pn:valueState="default"/> + <property xil_pn:name="Functional Model Target Language Schematic" xil_pn:value="VHDL" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Architecture Only (No Entity Declaration)" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Asynchronous Delay Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Clock Region Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Constraints Interaction Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Constraints Interaction Report Post Trace" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Datasheet Section" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Datasheet Section Post Trace" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Detailed MAP Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Multiple Hierarchical Netlist Files" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Post-Place & Route Power Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Post-Place & Route Simulation Model" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate RTL Schematic" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Generate SAIF File for Power Optimization/Estimation Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Testbench File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Timegroups Section" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generate Timegroups Section Post Trace" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Generics, Parameters" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Global Optimization Goal" xil_pn:value="AllClockNets" xil_pn:valueState="default"/> + <property xil_pn:name="Global Set/Reset Port Name" xil_pn:value="GSR_PORT" xil_pn:valueState="default"/> + <property xil_pn:name="Global Tristate Port Name" xil_pn:value="GTS_PORT" xil_pn:valueState="default"/> + <property xil_pn:name="Hierarchy Separator" xil_pn:value="/" xil_pn:valueState="default"/> + <property xil_pn:name="ISim UUT Instance Name" xil_pn:value="UUT" xil_pn:valueState="default"/> + <property xil_pn:name="Ignore User Timing Constraints Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Ignore User Timing Constraints Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Implementation Top" xil_pn:value="Architecture|lago_fpga_vhdl|rtl" xil_pn:valueState="non-default"/> + <property xil_pn:name="Implementation Top File" xil_pn:value="lago_fpga_vhdl.vhd" xil_pn:valueState="non-default"/> + <property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/lago_fpga_vhdl" xil_pn:valueState="non-default"/> + <property xil_pn:name="Include 'uselib Directive in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Include SIMPRIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Include UNISIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Include sdf_annotate task in Verilog File" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Incremental Compilation" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Insert Buffers to Prevent Pulse Swallowing" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Instantiation Template Target Language Xps" xil_pn:value="VHDL" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TCK" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TDI" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TDO" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="JTAG Pin TMS" xil_pn:value="Pull Up" xil_pn:valueState="default"/> + <property xil_pn:name="Keep Hierarchy" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="Language" xil_pn:value="VHDL" xil_pn:valueState="default"/> + <property xil_pn:name="Last Applied Goal" xil_pn:value="Balanced" xil_pn:valueState="default"/> + <property xil_pn:name="Last Applied Strategy" xil_pn:value="Xilinx Default (unlocked)" xil_pn:valueState="default"/> + <property xil_pn:name="Last Unlock Status" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Launch SDK after Export" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Library for Verilog Sources" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Load glbl" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Logical Shifter Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Manual Implementation Compile Order" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Map Effort Level" xil_pn:value="High" xil_pn:valueState="default"/> + <property xil_pn:name="Map Slice Logic into Unused Block RAMs" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Max Fanout" xil_pn:value="500" xil_pn:valueState="default"/> + <property xil_pn:name="Maximum Number of Lines in Report" xil_pn:value="1000" xil_pn:valueState="default"/> + <property xil_pn:name="Maximum Signal Name Length" xil_pn:value="20" xil_pn:valueState="default"/> + <property xil_pn:name="Move First Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Move Last Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Multiplier Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Mux Extraction" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Mux Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Netlist Hierarchy" xil_pn:value="As Optimized" xil_pn:valueState="default"/> + <property xil_pn:name="Netlist Translation Type" xil_pn:value="Timestamp" xil_pn:valueState="default"/> + <property xil_pn:name="Number of Clock Buffers" xil_pn:value="24" xil_pn:valueState="default"/> + <property xil_pn:name="Number of Paths in Error/Verbose Report" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Number of Paths in Error/Verbose Report Post Trace" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Optimization Effort" xil_pn:value="Normal" xil_pn:valueState="default"/> + <property xil_pn:name="Optimization Goal" xil_pn:value="Speed" xil_pn:valueState="default"/> + <property xil_pn:name="Optimization Strategy (Cover Mode)" xil_pn:value="Area" xil_pn:valueState="default"/> + <property xil_pn:name="Optimize Instantiated Primitives" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Other Bitgen Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options Map" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options Par" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compiler Options Translate" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Compxlib Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Map Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other NETGEN Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Ngdbuild Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Place & Route Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Behavioral" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Post-Map" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Post-Route" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other Simulator Commands Post-Translate" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other XPWR Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Other XST Command Line Options" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Output Extended Identifiers" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Output File Name" xil_pn:value="lago_ctrl" xil_pn:valueState="non-default"/> + <property xil_pn:name="Overwrite Compiled Libraries" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Overwrite Existing Symbol" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Pack I/O Registers into IOBs" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Pack I/O Registers/Latches into IOBs" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Package" xil_pn:value="fg320" xil_pn:valueState="non-default"/> + <property xil_pn:name="Perform Advanced Analysis" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Perform Advanced Analysis Post Trace" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Perform Timing-Driven Packing and Placement" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Place & Route Effort Level (Overall)" xil_pn:value="High" xil_pn:valueState="default"/> + <property xil_pn:name="Place And Route Mode" xil_pn:value="Normal Place and Route" xil_pn:valueState="default"/> + <property xil_pn:name="Placer Effort Level (Overrides Overall Level)" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Port to be used" xil_pn:value="Auto - default" xil_pn:valueState="default"/> + <property xil_pn:name="Post Map Simulation Model Name" xil_pn:value="lago_ctrl_map.vhd" xil_pn:valueState="non-default"/> + <property xil_pn:name="Post Place & Route Simulation Model Name" xil_pn:value="lago_ctrl_timesim.vhd" xil_pn:valueState="non-default"/> + <property xil_pn:name="Post Synthesis Simulation Model Name" xil_pn:value="lago_ctrl_synthesis.vhd" xil_pn:valueState="non-default"/> + <property xil_pn:name="Post Translate Simulation Model Name" xil_pn:value="lago_ctrl_translate.vhd" xil_pn:valueState="non-default"/> + <property xil_pn:name="Power Reduction Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Power Reduction Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Preferred Language" xil_pn:value="VHDL" xil_pn:valueState="non-default"/> + <property xil_pn:name="Priority Encoder Extraction" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Produce Verbose Report" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Project Description" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Property Specification in Project File" xil_pn:value="Store all values" xil_pn:valueState="default"/> + <property xil_pn:name="RAM Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="RAM Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="ROM Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="ROM Style" xil_pn:value="Auto" xil_pn:valueState="default"/> + <property xil_pn:name="Read Cores" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Regenerate Core" xil_pn:value="Under Current Project Setting" xil_pn:valueState="default"/> + <property xil_pn:name="Register Balancing" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="Register Duplication" xil_pn:value="Off" xil_pn:valueState="default"/> + <property xil_pn:name="Register Duplication Xst" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Release Write Enable (Output Events)" xil_pn:value="Default (6)" xil_pn:valueState="default"/> + <property xil_pn:name="Rename Design Instance in Testbench File to" xil_pn:value="UUT" xil_pn:valueState="default"/> + <property xil_pn:name="Rename Top Level Architecture To" xil_pn:value="Structure" xil_pn:valueState="default"/> + <property xil_pn:name="Rename Top Level Entity to" xil_pn:value="lago_ctrl" xil_pn:valueState="non-default"/> + <property xil_pn:name="Rename Top Level Module To" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Report Fastest Path(s) in Each Constraint" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Report Fastest Path(s) in Each Constraint Post Trace" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Report Paths by Endpoint" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Report Paths by Endpoint Post Trace" xil_pn:value="3" xil_pn:valueState="default"/> + <property xil_pn:name="Report Type" xil_pn:value="Verbose Report" xil_pn:valueState="default"/> + <property xil_pn:name="Report Type Post Trace" xil_pn:value="Verbose Report" xil_pn:valueState="default"/> + <property xil_pn:name="Report Unconstrained Paths" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Report Unconstrained Paths Post Trace" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Reset DCM if SHUTDOWN & AGHIGH performed" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Reset On Configuration Pulse Width" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Resource Sharing" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Retain Hierarchy" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Router Effort Level (Overrides Overall Level)" xil_pn:value="None" xil_pn:valueState="default"/> + <property xil_pn:name="Run Design Rules Checker (DRC)" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time Map" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time Par" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Run for Specified Time Translate" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Safe Implementation" xil_pn:value="No" xil_pn:valueState="default"/> + <property xil_pn:name="Security" xil_pn:value="Enable Readback and Reconfiguration" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Behavioral" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Post-Map" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Post-Route" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Root Source Node Post-Translate" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Selected Simulation Source Node" xil_pn:value="UUT" xil_pn:valueState="default"/> + <property xil_pn:name="Shift Register Extraction" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Show All Models" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Model Target" xil_pn:value="VHDL" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time ISim" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time Map" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time Par" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulation Run Time Translate" xil_pn:value="1000 ns" xil_pn:valueState="default"/> + <property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)" xil_pn:valueState="default"/> + <property xil_pn:name="Slice Packing" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Slice Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/> + <property xil_pn:name="Specify 'define Macro Name and Value" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Behavioral" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Post-Map" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Post-Route" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Specify Top Level Instance Names Post-Translate" xil_pn:value="Default" xil_pn:valueState="default"/> + <property xil_pn:name="Speed Grade" xil_pn:value="-4" xil_pn:valueState="non-default"/> + <property xil_pn:name="Starting Placer Cost Table (1-100) Map" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="Starting Placer Cost Table (1-100) Par" xil_pn:value="1" xil_pn:valueState="default"/> + <property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)" xil_pn:valueState="default"/> + <property xil_pn:name="Target Simulator" xil_pn:value="Please Specify" xil_pn:valueState="default"/> + <property xil_pn:name="Timing Mode Map" xil_pn:value="Non Timing Driven" xil_pn:valueState="default"/> + <property xil_pn:name="Timing Mode Par" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/> + <property xil_pn:name="Top-Level Module Name in Output Netlist" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL" xil_pn:valueState="default"/> + <property xil_pn:name="Trim Unconnected Signals" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Tristate On Configuration Pulse Width" xil_pn:value="0" xil_pn:valueState="default"/> + <property xil_pn:name="Unused IOB Pins" xil_pn:value="Pull Down" xil_pn:valueState="default"/> + <property xil_pn:name="Use 64-bit PlanAhead on 64-bit Systems" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Use Clock Enable" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Post-Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Post-Route" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Project File Post-Translate" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Simulation Command File Translate" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Behav" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Map" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Par" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Custom Waveform Configuration File Translate" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use LOC Constraints" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Use RLOC Constraints" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use Smart Guide" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Use Synchronous Reset" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use Synchronous Set" xil_pn:value="Yes" xil_pn:valueState="default"/> + <property xil_pn:name="Use Synthesis Constraints File" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="User Browsed Strategy Files" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="UserID Code (8 Digit Hexadecimal)" xil_pn:value="0xFFFFFFFF" xil_pn:valueState="default"/> + <property xil_pn:name="VHDL Source Analysis Standard" xil_pn:value="VHDL-93" xil_pn:valueState="default"/> + <property xil_pn:name="Value Range Check" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="Verilog 2001 Xst" xil_pn:value="true" xil_pn:valueState="default"/> + <property xil_pn:name="Verilog Macros" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="Wait for DLL Lock (Output Events)" xil_pn:value="Default (NoWait)" xil_pn:valueState="default"/> + <property xil_pn:name="Working Directory" xil_pn:value="." xil_pn:valueState="non-default"/> + <property xil_pn:name="Write Timing Constraints" xil_pn:value="false" xil_pn:valueState="default"/> + <property xil_pn:name="XOR Collapsing" xil_pn:value="true" xil_pn:valueState="default"/> + <!-- --> + <!-- The following properties are for internal use only. These should not be modified.--> + <!-- --> + <property xil_pn:name="PROP_BehavioralSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_DesignName" xil_pn:value="lago2" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan3e" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_FPGAConfiguration" xil_pn:value="FPGAConfiguration" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostMapSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostParSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostSynthSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PostXlateSimTop" xil_pn:value="" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_PreSynthesis" xil_pn:value="PreSynthesis" xil_pn:valueState="default"/> + <property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2011-08-24T15:54:48" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="5F437351C311185F347F9C92BDA70986" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/> + <property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/> + </properties> + + <bindings/> + + <libraries/> + + <autoManagedFiles> + <!-- The following files are identified by `include statements in verilog --> + <!-- source files and are automatically managed by Project Navigator. --> + <!-- --> + <!-- Do not hand-edit this section, as it will be overwritten when the --> + <!-- project is analyzed based on files automatically identified as --> + <!-- include files. --> + </autoManagedFiles> + +</project> diff --git a/lago_fpga_vhdl.xst b/lago_fpga_vhdl.xst new file mode 100644 index 0000000000000000000000000000000000000000..82a9913937046eb46da05b25679d42e3f24f22b2 --- /dev/null +++ b/lago_fpga_vhdl.xst @@ -0,0 +1,57 @@ +set -tmpdir "xst/projnav.tmp" +set -xsthdpdir "xst" +run +-ifn lago_fpga_vhdl.prj +-ifmt mixed +-ofn lago_fpga_vhdl +-ofmt NGC +-p xc3s500e-4-fg320 +-top lago_fpga_vhdl +-opt_mode Speed +-opt_level 1 +-iuc NO +-keep_hierarchy No +-netlist_hierarchy As_Optimized +-rtlview Yes +-glob_opt AllClockNets +-read_cores YES +-sd {"ipcore_dir" } +-write_timing_constraints NO +-cross_clock_analysis NO +-hierarchy_separator / +-bus_delimiter <> +-case Maintain +-slice_utilization_ratio 100 +-bram_utilization_ratio 100 +-verilog2001 YES +-fsm_extract YES -fsm_encoding Auto +-safe_implementation No +-fsm_style LUT +-ram_extract Yes +-ram_style Auto +-rom_extract Yes +-mux_style Auto +-decoder_extract YES +-priority_extract Yes +-shreg_extract YES +-shift_extract YES +-xor_collapse YES +-rom_style Auto +-auto_bram_packing NO +-mux_extract Yes +-resource_sharing YES +-async_to_sync NO +-mult_style Auto +-iobuf YES +-max_fanout 500 +-bufg 24 +-register_duplication YES +-register_balancing No +-slice_packing YES +-optimize_primitives NO +-use_clock_enable Yes +-use_sync_set Yes +-use_sync_reset Yes +-iob Auto +-equivalent_register_removal YES +-slice_utilization_ratio_maxmargin 5 diff --git a/lago_fpga_vhdl_1200.ucf b/lago_fpga_vhdl_1200.ucf new file mode 100755 index 0000000000000000000000000000000000000000..53d159fc903102780dabd20da68bd52dcdbb1df4 --- /dev/null +++ b/lago_fpga_vhdl_1200.ucf @@ -0,0 +1,183 @@ +# +#Copyright 2011 - Lab DPR (CAB-CNEA). All rights reserved. +# +#Redistribution and use in source and binary forms, with or without +#modification, are permitted provided that the following conditions +#are met: +# +# 1. Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials +# provided with the distribution. +# +#THIS SOFTWARE IS PROVIDED BY LAB DPR ''AS IS'' AND ANY EXPRESS OR IMPLIED +#WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +#MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +#IN NO EVENT SHALL LAB DPR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +#INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +#(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +#HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +#STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +#IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +#POSSIBILITY OF SUCH DAMAGE. +# +#The views and conclusions contained in the software and documentation +#are those of the authors and should not be interpreted as representing +#official policies, either expressed or implied, of Lab DPR. +# +#***************************************************************************** + +# Clock pin for Nexys 2 Board +NET "clk_50m" LOC = "B8"; +NET "clk_50m" TNM_NET = clk_50m; +TIMESPEC TS_clk = PERIOD "clk_50m" 20 ns HIGH 50%; + +# USB Interface. +# CY7C68013A Port A +NET "U_SLOE" LOC = "V15" | IOSTANDARD = LVCMOS33 ; # has external pull-up +NET "U_FIFOAD<0>" LOC = "T14" | IOSTANDARD = LVCMOS33 ; +NET "U_FIFOAD<1>" LOC = "V13" | IOSTANDARD = LVCMOS33 ; +NET "U_PKTEND" LOC = "V12" | IOSTANDARD = LVCMOS33 ; # no external pull-up + +# CY7C68013A Port B +NET "U_FD<0>" LOC = "R14" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<1>" LOC = "R13" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<2>" LOC = "P13" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<3>" LOC = "T12" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<4>" LOC = "N11" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<5>" LOC = "R11" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<6>" LOC = "P10" | IOSTANDARD = LVCMOS33 ; +NET "U_FD<7>" LOC = "R10" | IOSTANDARD = LVCMOS33 ; + +# CY7C68013A Misc +NET "U_IFCLK" LOC = "T15" | IOSTANDARD = LVCMOS33 | PERIOD = 20.833; +NET "U_IFCLK" CLOCK_DEDICATED_ROUTE = FALSE; # Xilinx WebPACK version 10+ needs this. + +NET "U_FLAGB" LOC = "U14" | IOSTANDARD = LVCMOS33 ; +NET "U_FLAGC" LOC = "V16" | IOSTANDARD = LVCMOS33 ; + +NET "U_SLRD" LOC = "N9" | IOSTANDARD = LVCMOS33 ; # has external pull-up +NET "U_SLWR" LOC = "V9" | IOSTANDARD = LVCMOS33 ; # has external pull-up + +# 7 segment display +NET "seg<0>" LOC = "L18"; # Bank = 1, Pin name = IO_L10P_1, Type = I/O, Sch name = CA +NET "seg<1>" LOC = "F18"; # Bank = 1, Pin name = IO_L19P_1, Type = I/O, Sch name = CB +NET "seg<2>" LOC = "D17"; # Bank = 1, Pin name = IO_L23P_1/HDC, Type = DUAL, Sch name = CC +NET "seg<3>" LOC = "D16"; # Bank = 1, Pin name = IO_L23N_1/LDC0, Type = DUAL, Sch name = CD +NET "seg<4>" LOC = "G14"; # Bank = 1, Pin name = IO_L20P_1, Type = I/O, Sch name = CE +NET "seg<5>" LOC = "J17"; # Bank = 1, Pin name = IO_L13P_1/A6/RHCLK4/IRDY1, Type = RHCLK/DUAL, Sch name = CF +NET "seg<6>" LOC = "H14"; # Bank = 1, Pin name = IO_L17P_1, Type = I/O, Sch name = CG +NET "dp" LOC = "C17"; # Bank = 1, Pin name = IO_L24N_1/LDC2, Type = DUAL, Sch name = DP +# +NET "an<0>" LOC = "F17"; # Bank = 1, Pin name = IO_L19N_1, Type = I/O, Sch name = AN0 +NET "an<1>" LOC = "H17"; # Bank = 1, Pin name = IO_L16N_1/A0, Type = DUAL, Sch name = AN1 +NET "an<2>" LOC = "C18"; # Bank = 1, Pin name = IO_L24P_1/LDC1, Type = DUAL, Sch name = AN2 +NET "an<3>" LOC = "F15"; # Bank = 1, Pin name = IO_L21P_1, Type = I/O, Sch name = AN3 +# +# Leds +NET "led<0>" LOC = "J14"; # Bank = 1, Pin name = IO_L14N_1/A3/RHCLK7, Type = RHCLK/DUAL, Sch name = JD10/LD0 +NET "led<1>" LOC = "J15"; # Bank = 1, Pin name = IO_L14P_1/A4/RHCLK6, Type = RHCLK/DUAL, Sch name = JD9/LD1 +NET "led<2>" LOC = "K15"; # Bank = 1, Pin name = IO_L12P_1/A8/RHCLK2, Type = RHCLK/DUAL, Sch name = JD8/LD2 +NET "led<3>" LOC = "K14"; # Bank = 1, Pin name = IO_L12N_1/A7/RHCLK3/TRDY1, Type = RHCLK/DUAL, Sch name = JD7/LD3 +NET "led<4>" LOC = "E16"; # Bank = 1, Pin name = N.C., Type = N.C., Sch name = LD4? other than s3e500 +NET "led<5>" LOC = "P16"; # Bank = 1, Pin name = N.C., Type = N.C., Sch name = LD5? other than s3e500 +NET "led<6>" LOC = "E4"; # Bank = 3, Pin name = N.C., Type = N.C., Sch name = LD6? other than s3e500 +NET "led<7>" LOC = "P4"; # Bank = 3, Pin name = N.C., Type = N.C., Sch name = LD7? other than s3e500 +#NET "led<4>" LOC = "E17"; # Bank = 1, Pin name = IO, Type = I/O, Sch name = LD4? s3e500 only +#NET "led<5>" LOC = "P15"; # Bank = 1, Pin name = IO, Type = I/O, Sch name = LD5? s3e500 only +#NET "led<6>" LOC = "F4"; # Bank = 3, Pin name = IO, Type = I/O, Sch name = LD6? s3e500 only +#NET "led<7>" LOC = "R4"; # Bank = 3, Pin name = IO/VREF_3, Type = VREF, Sch name = LD7? s3e500 only + +# Leds +#NET "led<0>" LOC = "J14"; # Bank = 1, Pin name = IO_L14N_1/A3/RHCLK7, Type = RHCLK/DUAL, Sch name = JD10/LD0 +#NET "led<1>" LOC = "J15"; # Bank = 1, Pin name = IO_L14P_1/A4/RHCLK6, Type = RHCLK/DUAL, Sch name = JD9/LD1 +#NET "led<2>" LOC = "K15"; # Bank = 1, Pin name = IO_L12P_1/A8/RHCLK2, Type = RHCLK/DUAL, Sch name = JD8/LD2 +#NET "led<3>" LOC = "K14"; # Bank = 1, Pin name = IO_L12N_1/A7/RHCLK3/TRDY1, Type = RHCLK/DUAL, Sch name = JD7/LD3 +#NET "led<4>" LOC = "R4" ; # Bank = 3, Pin name = IO/VREF_3, Type = VREF, Sch name = LD7? s3e500 only +#NET "led<5>" LOC = "F4"; # Bank = 3, Pin name = IO, Type = I/O, Sch name = LD6? s3e500 only +#NET "led<6>" LOC = "E17"; # Bank = 3, Pin name = IO, Type = I/O, Sch name = LD6? s3e500 only + +#PWM Signals +NET "hv2" LOC = "A16"; # Bank = 0, Pin name = IO_L01N_0, Type = I/O, Sch name = R-IO39 +NET "hv3" LOC = "B16"; # Bank = 0, Pin name = IO_L01P_0, Type = I/O, Sch name = R-IO40 + +# Buttons +NET "reset" LOC = "B18"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = BTN0 + +# FX2 connector ch1 +NET "adc_clk1" LOC = "B4"; +NET "ch1<9>" LOC = "A4"; +NET "ch1<8>" LOC = "C3"; +NET "ch1<7>" LOC = "C4"; +NET "ch1<6>" LOC = "B6"; +NET "ch1<5>" LOC = "D5"; +NET "ch1<4>" LOC = "C5"; +NET "ch1<3>" LOC = "F7"; +NET "ch1<2>" LOC = "E7"; +NET "ch1<1>" LOC = "A6"; +NET "ch1<0>" LOC = "C7"; + +# FX2 connector ch2 +NET "adc_clk2" LOC = "F8"; +NET "ch2<9>" LOC = "D7"; +NET "ch2<8>" LOC = "E8"; +NET "ch2<7>" LOC = "E9"; +NET "ch2<6>" LOC = "C9"; +NET "ch2<5>" LOC = "A8"; +NET "ch2<4>" LOC = "G9"; +NET "ch2<3>" LOC = "F9"; +NET "ch2<2>" LOC = "D10"; +NET "ch2<1>" LOC = "A10"; +NET "ch2<0>" LOC = "B10"; + +# FX2 connector ch3 +NET "adc_clk3" LOC = "A11"; +NET "ch3<9>" LOC = "D11"; +NET "ch3<8>" LOC = "E10"; +NET "ch3<7>" LOC = "B11"; +NET "ch3<6>" LOC = "C11"; +NET "ch3<5>" LOC = "E11"; +NET "ch3<4>" LOC = "F11"; +NET "ch3<3>" LOC = "E12"; +NET "ch3<2>" LOC = "F12"; +NET "ch3<1>" LOC = "A13"; +NET "ch3<0>" LOC = "B13"; + +# MAX5501 Interface +NET "cs_e2prom" LOC = "B14"; +NET "cs_max5501" LOC = "A14"; +NET "spi_dout" LOC = "C14"; +NET "spi_sck" LOC = "D14"; + +# HP03 Interface +# It is in JB 6 pin expansion connector +NET "pMCLK" LOC = "R18"; # Bank = 1, Pin name = IO_L02P_1/A14, Type = DUAL, Sch name = JB2 +NET "pXCLR" LOC = "R16"; # Bank = 1, Pin name = IO_L03N_1/VREF_1, Type = VREF, Sch name = JB8 +NET "pSDA" LOC = "T18"; # Bank = 1, Pin name = IO_L02N_1/A13, Type = DUAL, Sch name = JB9 +NET "pSCL" LOC = "U18"; # Bank = 1, Pin name = IO_L01P_1/A16, Type = DUAL, Sch name = JB10 + +# GPS Interface +# It is in JC 6 pin expansion connector +NET "tx_uart" LOC = "G15"; # Bank = 1, Pin name = IO_L18P_1, Type = I/O, Sch name = JC1 +NET "pps_port" LOC = "G13"; # Bank = 1, Pin name = IO_L20N_1, Type = I/O, Sch name = JC3 +NET "rx_uart" LOC = "H16"; # Bank = 1, Pin name = IO_L16P_1, Type = I/O, Sch name = JC4 + +#Para VHP, esto es para que funcione con el cable que armé, NO con la fuente SWITCHING +#NET "rx_uart" LOC = "G13"; # Bank = 1, Pin name = IO_L20N_1, Type = I/O, Sch name = JC3 +#NET "pps_port" LOC = "H16"; # Bank = 1, Pin name = IO_L16P_1, Type = I/O, Sch name = JC4 +#NET "tx_uart" LOC = "F14"; # Bank = 1, Pin name = IO_L21N_1, Type = I/O, Sch name = JC8 + + +# Switches +NET "GPSen" LOC = "R17"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = SW7 + +#GPS signals extension (for VHP telescope) +NET "rx_uart_copy" LOC = "J13"; # Bank = 1, Pin name = IO_L15N_1/A1, Type = DUAL, Sch name = JD1 +NET "pps_port_copy" LOC = "M18"; # Bank = 1, Pin name = IO_L08N_1, Type = I/O, Sch name = JD2 +#NET "JD<2>" LOC = "N18"; # Bank = 1, Pin name = IO_L08P_1, Type = I/O, Sch name = JD3 +#NET "JD<3>" LOC = "P18"; # Bank = 1, Pin name = IO_L06N_1, Type = I/O, Sch name = JD4 diff --git a/nexys2_1200.batch b/nexys2_1200.batch new file mode 100644 index 0000000000000000000000000000000000000000..d20e9f410f63e5e3a363d8e1a899f0821215163a --- /dev/null +++ b/nexys2_1200.batch @@ -0,0 +1,6 @@ +setMode -bs +setCable -port xsvf -file lago_fpga_sync.xsvf +addDevice -p 1 -file lago_fpga_sync.bit +addDevice -p 2 -file ${XILINX}/xcf/data/xcf04s.bsd +program -p 1 +quit diff --git a/nexys2_500.batch b/nexys2_500.batch new file mode 100644 index 0000000000000000000000000000000000000000..9ffe28bdb125735ea7746cd9703d93a456cfc61b --- /dev/null +++ b/nexys2_500.batch @@ -0,0 +1,7 @@ +setMode -bs +setCable -port xsvf -file lago_fpga_vhdl.xsvf +addDevice -p 1 -file lago_fpga_vhdl.bit +addDevice -p 2 -file ${XILINX}/xcf/data/xcf04s.bsd +program -p 1 +quit + diff --git a/rampa_hv.vhd b/rampa_hv.vhd new file mode 100644 index 0000000000000000000000000000000000000000..9ada5800e1d0d24d6a7ad57f52e712482cee95ea --- /dev/null +++ b/rampa_hv.vhd @@ -0,0 +1,107 @@ +-- +-- Copyright (C) 2012 Horacio Arnaldi +-- e-mail: lharnaldi@cab.cnea.gov.ar +-- +-- Laboratorio de Detección de PartÃculas y Radiación +-- Centro Atómico Bariloche +-- Comisión Nacional de EnergÃa Atómica (CNEA) +-- San Carlos de Bariloche +-- Date: 12/02/2012 +-- Ver: v0r2 -- +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity ramp is + generic( + N: integer := 18; -- numero de bits del contador + M: integer := 200000; -- mod-M + P: integer := 12); -- numero de bits para los datos + port( + -- Main clock + clk : in std_logic; + reset : in std_logic; + data_in : in std_logic_vector(P-1 downto 0); + data_out : out std_logic_vector(P-1 downto 0); + pwm_pulse : out std_logic; + led_indicador : out std_logic); +end ramp; + +architecture rtl of ramp is + signal count_reg, count_next : unsigned(N-1 downto 0); + signal in_reg, in_next : unsigned(P-1 downto 0); + signal r_reg, r_next : unsigned(P-1 downto 0); + signal out_reg, out_next : unsigned(P-1 downto 0); + signal buff_reg, buff_next : std_logic; + signal max_tick : std_logic; + +begin + -- Drive inputs + in_next <= unsigned(data_in); + + --registers + process (clk, reset) + begin + if (reset = '1') then + count_reg <= (others => '0'); + in_reg <= (others => '0'); + out_reg <= (others => '0'); + r_reg <= (others => '0'); + buff_reg <= '0'; + + elsif (clk'event and clk = '1') then + count_reg <= count_next; + r_reg <= r_next; + buff_reg <= buff_next; + in_reg <= in_next; + out_reg <= out_next; + end if; + end process; + --next-state logic for counter + count_next <= (others => '0') when count_reg = (M-1) else + count_reg + 1; + + buff_next <= '1' when (r_reg < out_reg) else '0'; + + r_next <= r_reg + 1; + + --output logic + max_tick <= '1' when count_reg = (M-1) else '0'; + + process(max_tick, in_reg, out_reg) + begin + if (max_tick = '1') then + if (in_reg > out_reg) then + out_next <= out_reg + 1; + elsif (in_reg < out_reg) then + out_next <= out_reg - 1; + else + out_next <= out_reg; -- default + end if; + else + out_next <= out_reg; + end if; + end process; + + --next-state logic for output + data_out <= std_logic_vector(out_reg); + led_indicador <= '0' when (out_reg = 0) else + '1'; + pwm_pulse <= buff_reg; + +end rtl; diff --git a/spi_dac.vhd b/spi_dac.vhd new file mode 100644 index 0000000000000000000000000000000000000000..c7572a2fc6ec24f8521fd37f4bdf01a9b70bfd4a --- /dev/null +++ b/spi_dac.vhd @@ -0,0 +1,178 @@ +--**************************************************************************** +-- SPI_DAC.vhd +-- +-- Horacio Arnaldi <lharnaldi@gmail.com> +-- 20/11/2013 +-- +-- For MAX5501 DAC control. +-- +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +------------------------------------------------------------------------------- + +entity spi_dac is -- MSB first + generic ( + iCLK : boolean := false; + iCNV : boolean := false; + iDIN : boolean := false; + iDOU : boolean := false; + NB : positive := 16; -- number of bits of DAC + NDIV : positive := 10); -- divide the clock to get the spi clock + port ( + clk : in std_logic; + srst : in std_logic; + valid : in std_logic; + din : in std_logic_vector(NB-1 downto 0); + rdy : out std_logic; + + busy : out std_logic; + + spi_sdo : out std_logic; + spi_clk : out std_logic; + spi_csn : out std_logic); +end spi_dac; + +------------------------------------------------------------------------------- + +architecture arch of spi_dac is + + + + signal bits : integer range 0 to NB-1; + signal bcnt : integer range 0 to NDIV-1; + +-- 12 data bits and 4 configuration bit. +-- Bit 15 should be 0 +-- Bit 14 Vref 1 buffered, 0 unbuffered +-- Bit 13 Gain 1 1x , 0 2x +-- Bit 12 Gain 1 output enables, 0 output disabled + + type sm_type is (idle, clk0, clk1, finish); + + signal sm : sm_type; + + signal dac : std_logic_vector(NB-1 downto 0); + + signal din_i : std_logic_vector(NB-1 downto 0); + signal spi_cnv_i : std_logic; + signal spi_clk_i : std_logic; + signal busy_i : std_logic; + signal start : std_logic; + signal shift_out : std_logic; + +begin +-- -- Data selector +-- process (din) +-- begin +-- case din is --MSB - LSB +-- when "0000" => din_i <= "0111000000000000"; +-- when "0001" => din_i <= "0111000000000001"; +-- when "0010" => din_i <= "0111000000000111"; +-- when "0011" => din_i <= "0111000000001111"; +-- when "0100" => din_i <= "0111000000011111"; +-- when "0101" => din_i <= "0111000000111111"; +-- when "0110" => din_i <= "0111000001111111"; +-- when "0111" => din_i <= "0111000011111111"; +-- when "1000" => din_i <= "0111000111111111"; +-- when "1001" => din_i <= "0111001111111111"; +-- when "1010" => din_i <= "0111011111111111"; +-- when "1011" => din_i <= "0111111111111111"; +-- when "1100" => din_i <= "0111111111110000"; +-- when "1101" => din_i <= "0111111111100000"; +-- when "1110" => din_i <= "0111111111000000"; +-- when "1111" => din_i <= "0111111110000000"; +-- when others => din_i <= "0111111100000000"; +-- end case; +-- end process; + + -- write to the DAC shift register, only if not busy! + -- else shift + process(clk) + begin + if clk'event and clk = '1' then + start <= '0'; + -- write the new values to the dac registers + if valid = '1' and busy_i = '0' then + --dac <= din_i; + dac <= din; + start <= '1'; + busy_i <= '1'; + else + if shift_out = '1' then + dac <= dac(dac'high-1 downto 0) & dac(dac'high); + end if; + end if; + + if start = '1' then + busy_i <= '1'; + elsif sm = idle then + busy_i <= '0'; + end if; + + end if; + end process; + + spi_sdo <= not dac(dac'high) when iDOU else dac(dac'high); + busy <= busy_i; + + process(clk) + begin + if clk'event and clk = '1' then + shift_out <= '0'; + spi_clk_i <= '1'; + spi_cnv_i <= '1'; + rdy <= '0'; + if srst = '1' then + sm <= idle; + bcnt <= NDIV - 1; + bits <= NB-1; + else + case sm is + when idle => + bcnt <= NDIV - 1; + bits <= NB - 1; + + if start = '1' then + sm <= clk0; + end if; + when clk0 => + bcnt <= bcnt - 1; + spi_clk_i <= '0'; + spi_cnv_i <= '0'; + + if bcnt = Ndiv/2 then + sm <= clk1; + end if; + when clk1 => + spi_cnv_i <= '0'; + if bcnt = 0 then + bcnt <= Ndiv - 1; + if bits = 0 then + sm <= finish; + rdy <= '1'; + else + sm <= clk0; + shift_out <= '1'; + bits <= bits - 1; + end if; + else + bcnt <= bcnt - 1; + end if; + + when finish => + if bcnt = 0 then + sm <= idle; + else + bcnt <= bcnt - 1; + end if; + end case; + end if; + end if; + end process; + + spi_clk <= not spi_clk_i when iCLK else spi_clk_i; + spi_csn <= not spi_cnv_i when iCNV else spi_cnv_i; +end arch; diff --git a/trigger.vhd b/trigger.vhd new file mode 100644 index 0000000000000000000000000000000000000000..56081c9755d618c3c671ea306cc136cbffa40b96 --- /dev/null +++ b/trigger.vhd @@ -0,0 +1,455 @@ +library ieee; +use ieee.std_logic_1164.ALL; +use ieee.numeric_std.all; +-- +entity trigger_in is + generic( + W : natural; --:=5; -- numero de bits de direcciones. 2**W = 32 direcciones para W=5 + ADCBITS : natural; -- := 10; -- numero de bits en los datos + L_ARRAY_MUESTRAS : natural; -- := 12; + L_ARRAY_PPS : natural; -- := 10; + L_ARRAY_SCALERS : natural --:= 3 + ); + + port( + clk_40mhz : in std_logic; + reset : in std_logic; + data_adc1 : in std_logic_vector(ADCBITS-1 downto 0); + data_adc2 : in std_logic_vector(ADCBITS-1 downto 0); + data_adc3 : in std_logic_vector(ADCBITS-1 downto 0); + trigg_set1 : in std_logic_vector(ADCBITS-1 downto 0); + trigg_set2 : in std_logic_vector(ADCBITS-1 downto 0); + trigg_set3 : in std_logic_vector(ADCBITS-1 downto 0); + subtrigg_set1 : in std_logic_vector(ADCBITS-1 downto 0); + subtrigg_set2 : in std_logic_vector(ADCBITS-1 downto 0); + subtrigg_set3 : in std_logic_vector(ADCBITS-1 downto 0); + pwr_enA : out std_logic; + data_out : out std_logic_vector(2**W-1 downto 0); + pfifo_status : in std_logic_vector(2 downto 0); + ptemperatura : in std_logic_vector(15 downto 0); + ppresion : in std_logic_vector(15 downto 0); + phora : in std_logic_vector(7 downto 0); + pminutos : in std_logic_vector(7 downto 0); + psegundos : in std_logic_vector(7 downto 0); + pps_signal : in std_logic; + gpsen : in std_logic; + pps_falso_led : out std_logic; + latitude1_port : in std_logic_vector(7 downto 0); + latitude2_port : in std_logic_vector(7 downto 0); + latitude3_port : in std_logic_vector(7 downto 0); + latitude4_port : in std_logic_vector(7 downto 0); + longitude1_port : in std_logic_vector(7 downto 0); + longitude2_port : in std_logic_vector(7 downto 0); + longitude3_port : in std_logic_vector(7 downto 0); + longitude4_port : in std_logic_vector(7 downto 0); + ellipsoid1_port : in std_logic_vector(7 downto 0); + ellipsoid2_port : in std_logic_vector(7 downto 0); + ellipsoid3_port : in std_logic_vector(7 downto 0); + ellipsoid4_port : in std_logic_vector(7 downto 0); + num_vis_sat_port : in std_logic_vector(7 downto 0); + num_track_sat_port : in std_logic_vector(7 downto 0); + rsf_port : in std_logic_vector(7 downto 0) + ); +end trigger_in; + +architecture rtl of trigger_in is + + type array_muestras_adc_type is array (L_ARRAY_MUESTRAS-1 downto 0) of + std_logic_vector(ADCBITS-1 downto 0); + signal muestras_adc1_reg, muestras_adc1_next : array_muestras_adc_type; + signal muestras_adc2_reg, muestras_adc2_next : array_muestras_adc_type; + signal muestras_adc3_reg, muestras_adc3_next : array_muestras_adc_type; + + type array_pps_type is array (L_ARRAY_PPS-1 downto 0) of + std_logic_vector(2**W-1 downto 0); + signal array_pps_reg, array_pps_next : array_pps_type; + + type array_scalers_type is array (L_ARRAY_SCALERS-1 downto 0) of + std_logic_vector(2**W-1 downto 0); + signal array_scalers_reg, array_scalers_next : array_scalers_type; + + signal clk_para_pps_falso_reg, clk_para_pps_falso_next : unsigned(2**W-1 downto 0); -- contador para falso pps + signal cont_pps_reg, cont_pps_next : unsigned(15 downto 0); -- contador para pps + signal cont_clk_entre_pps_reg, cont_clk_entre_pps_next : unsigned(29 downto 0); -- contador de pulsos de clock entre cada PPS, se resetea en cada pps + signal pps, pps_falso : std_logic; + + type statepps_type is (zero, edge, one); + signal statepps_reg, statepps_next: statepps_type; + signal one_clk_pps : std_logic; + + signal s_tr1, s_tr2, s_tr3, s_tr : std_logic; --Triggers + signal s_subtr1, s_subtr2, s_subtr3, s_subtr : std_logic; --Sub-Triggers + + signal tr_status_reg, tr_status_next : std_logic_vector(2**W-1 downto 0); + signal ctr_status_reg, ctr_status_next : std_logic_vector(2**W-1 downto 0); + + signal cont_trigger_reg, cont_trigger_next : unsigned(29 downto 0); -- contador de triggers + signal cont_bines_reg, cont_bines_next : unsigned(2**W-1 downto 0); -- contador de bines + + signal charge1_reg, charge1_next : unsigned(ADCBITS-1 downto 0); + signal charge2_reg, charge2_next : unsigned(ADCBITS-1 downto 0); + signal charge3_reg, charge3_next : unsigned(ADCBITS-1 downto 0); + + type state_type is (STATE_IDLE, + STATE_ATT_TR, + STATE_SEND_TR_STATUS, + STATE_SEND_CTR_STATUS, + STATE_ATT_SUBTR, + STATE_ATT_PPS); + signal state_reg, state_next: state_type; + + signal wr_count_reg, wr_count_next : unsigned(7 downto 0); + signal data_to_fifo_reg, data_to_fifo_next : std_logic_vector(2**W-1 downto 0); + signal wr_fifo_en_reg, wr_fifo_en_next : std_logic; + signal status : std_logic_vector(2 downto 0); + +begin + +-------------------------------------------------------------------------- + -- PPS falso + -- registers + process(clk_40mhz, reset) + begin + if (reset = '1') then + clk_para_pps_falso_reg <= (others => '0'); -- Contador de clocks entre PPS's + cont_pps_reg <= (others => '0'); -- Contador de PPS's + cont_clk_entre_pps_reg <= (others => '0'); -- Contador de muestras adquiridas entre cada PPS + elsif (clk_40mhz'event and clk_40mhz = '1') then + clk_para_pps_falso_reg <= clk_para_pps_falso_next; + cont_pps_reg <= cont_pps_next; + cont_clk_entre_pps_reg <= cont_clk_entre_pps_next; + end if; + end process; + --next state logic + clk_para_pps_falso_next <= (others => '0') when (clk_para_pps_falso_reg = 39999999) else + clk_para_pps_falso_reg + 1; + + pps_falso <= '1' when (clk_para_pps_falso_reg < 8000000) else + '0'; + + cont_pps_next <= cont_pps_reg + 1 when (one_clk_pps = '1') else + cont_pps_reg; + + cont_clk_entre_pps_next <= (others => '0') when (one_clk_pps = '1') else + cont_clk_entre_pps_reg + 1; + +--------------------------------------------------------------------------- + +--------------------------------------------------------------------------- + --MUX de PPS + pps <= pps_falso when (gpsen = '1') else + pps_signal; + + pps_falso_led <= pps_falso when (gpsen = '1') else + '0'; +--------------------------------------------------------------------------- + +--------------------------------------------------------------------------- + -- one clock pps: en cada pps se mantiene en alto la bandera one_clk_pps durante un ciclo de reloj de 40MHz + -- detector de flancos + -- state register + process(clk_40mhz,reset) + begin + if (reset='1') then + statepps_reg <= zero; + elsif (clk_40mhz'event and clk_40mhz='1') then + statepps_reg <= statepps_next; + end if; + end process; + -- next-state/output logic + process(statepps_reg,pps) + begin + statepps_next <= statepps_reg; + one_clk_pps <= '0'; + case statepps_reg is + when zero=> + if pps= '1' then + statepps_next <= edge; + end if; + when edge => + one_clk_pps <= '1'; + if pps= '1' then + statepps_next <= one; + else + statepps_next <= zero; + end if; + when one => + if pps= '0' then + statepps_next <= zero; + end if; + end case; + end process; + +----------------------------------------------------------------------------- + +----------------------------------------------------------------------------- + + -- registros de datos por segundo + process(clk_40mhz, reset) + begin + for i in L_ARRAY_PPS-1 downto 0 loop + if (reset = '1') then + array_pps_reg(i) <= (others => '0'); + elsif (clk_40mhz'event and clk_40mhz = '1') then + array_pps_reg(i) <= array_pps_next(i); + end if; + end loop; + end process; + --next state logic + array_pps_next(L_ARRAY_PPS-10)<= x"FFFFFFFF" when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-10); + array_pps_next(L_ARRAY_PPS-9)<= "11" & "000" & std_logic_vector(cont_clk_entre_pps_reg(26 downto 0)) when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-9); + array_pps_next(L_ARRAY_PPS-8)<= "11" & "001" & "00000000000" & ptemperatura when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-8); + array_pps_next(L_ARRAY_PPS-7)<= "11" & "010" & "00000000000" & ppresion when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-7); + array_pps_next(L_ARRAY_PPS-6)<= "11" & "011" & "000" & phora & pminutos & psegundos when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-6); + array_pps_next(L_ARRAY_PPS-5)<= "11" & "100" & "000" & latitude1_port & latitude2_port & latitude3_port when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-5); + array_pps_next(L_ARRAY_PPS-4)<= "11" & "100" & "001" & longitude1_port & longitude2_port & latitude4_port when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-4); + array_pps_next(L_ARRAY_PPS-3)<= "11" & "100" & "010" & ellipsoid1_port & longitude3_port & longitude4_port when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-3); + array_pps_next(L_ARRAY_PPS-2)<= "11" & "100" & "011" & ellipsoid2_port & ellipsoid3_port & ellipsoid4_port when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-2); + array_pps_next(L_ARRAY_PPS-1)<= "11" & "100" & "100" & num_track_sat_port & num_vis_sat_port & rsf_port when (one_clk_pps = '1') else array_pps_reg(L_ARRAY_PPS-1); + +------------------------------------------------------------------------------------------------------ + +------------------------------------------------------------------------------------------------------ + --adquisicion de las muestras de los canales + process(clk_40mhz, reset) + begin + for i in (L_ARRAY_MUESTRAS-1) downto 0 loop + if (reset='1') then + muestras_adc1_reg(i) <= (others=>'0'); + muestras_adc2_reg(i) <= (others=>'0'); + muestras_adc3_reg(i) <= (others=>'0'); + elsif (clk_40mhz'event and clk_40mhz='1') then + muestras_adc1_reg(i) <= muestras_adc1_next(i); + muestras_adc2_reg(i) <= muestras_adc2_next(i); + muestras_adc3_reg(i) <= muestras_adc3_next(i); + end if; + -- next state logic + if (i = (L_ARRAY_MUESTRAS-1)) then + muestras_adc1_next(i) <= data_adc1; + muestras_adc2_next(i) <= data_adc2; + muestras_adc3_next(i) <= data_adc3; + else + muestras_adc1_next(i) <= muestras_adc1_reg(i+1); + muestras_adc2_next(i) <= muestras_adc2_reg(i+1); + muestras_adc3_next(i) <= muestras_adc3_reg(i+1); + end if; + end loop; + end process; + +----------------------------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------------------------- + --trigger + process(clk_40mhz, reset) + begin + if (reset='1') then + tr_status_reg <= (others => '0'); + ctr_status_reg <= (others => '0'); + cont_trigger_reg <= (others => '0'); + elsif (clk_40mhz'event and clk_40mhz='1') then + tr_status_reg <= tr_status_next; + ctr_status_reg <= ctr_status_next; + cont_trigger_reg <= cont_trigger_next; + end if; + end process; + -- El trigger lo hago en el bin 4 porque luego pierdo un clock en la maquina de estados + -- next state logic + s_tr1 <= '1' when ((unsigned(muestras_adc1_reg(4)) >= unsigned(subtrigg_set1)) and + (unsigned(muestras_adc1_reg(3)) >= unsigned(trigg_set1)) and + (unsigned(muestras_adc1_reg(2)) < unsigned(trigg_set1)) and + (unsigned(muestras_adc1_reg(1)) < unsigned(trigg_set1)) ) else + '0'; + s_tr2 <= '1' when ((unsigned(muestras_adc2_reg(4)) >= unsigned(subtrigg_set2)) and + (unsigned(muestras_adc2_reg(3)) >= unsigned(trigg_set2)) and + (unsigned(muestras_adc2_reg(2)) < unsigned(trigg_set2)) and + (unsigned(muestras_adc2_reg(1)) < unsigned(trigg_set2)) ) else + '0'; + s_tr3 <= '1' when ((unsigned(muestras_adc3_reg(4)) >= unsigned(subtrigg_set3)) and + (unsigned(muestras_adc3_reg(3)) >= unsigned(trigg_set3)) and + (unsigned(muestras_adc3_reg(2)) < unsigned(trigg_set3)) and + (unsigned(muestras_adc3_reg(1)) < unsigned(trigg_set3)) ) else + '0'; + s_tr <= '1' when ((s_tr1 = '1') or + (s_tr2 = '1') or + (s_tr3 = '1') ) else + '0'; + + tr_status_next <= "01" & s_tr3 & s_tr2 & s_tr1 & std_logic_vector(cont_clk_entre_pps_reg(26 downto 0)) when (s_tr = '1') else + tr_status_reg; + ctr_status_next <= "10" & std_logic_vector(cont_trigger_reg) when (s_tr = '1') else + ctr_status_reg; + + cont_trigger_next <= cont_trigger_reg + 1 when (s_tr = '1') else + cont_trigger_reg; + +---------------------------------------------------------------------------------------------------------- + +---------------------------------------------------------------------------------------------------------- + --scalers + -- sub-trigger: se controla que tengamos un subtrigger y que no tengamos un trigger en los proximos dos clocks + process(clk_40mhz, reset) + begin + if (reset='1') then + charge1_reg <= (others => '0'); + charge2_reg <= (others => '0'); + charge3_reg <= (others => '0'); + array_scalers_reg(L_ARRAY_SCALERS-1) <= (others => '0'); + array_scalers_reg(L_ARRAY_SCALERS-2) <= (others => '0'); + array_scalers_reg(L_ARRAY_SCALERS-3) <= (others => '0'); + elsif (clk_40mhz'event and clk_40mhz='1') then + charge1_reg <= charge1_next; + charge2_reg <= charge2_next; + charge3_reg <= charge3_next; + array_scalers_reg(L_ARRAY_SCALERS-1) <= array_scalers_reg(L_ARRAY_SCALERS-1); + array_scalers_reg(L_ARRAY_SCALERS-2) <= array_scalers_reg(L_ARRAY_SCALERS-2); + array_scalers_reg(L_ARRAY_SCALERS-3) <= array_scalers_reg(L_ARRAY_SCALERS-3); + end if; + end process; + -- next state logic + --s_subtr1 <= '1' when unsigned(muestras_adc1_reg(2)) >= unsigned(subtrigg_set1) and + s_subtr1 <= '1' when unsigned(muestras_adc1_reg(2)) > to_unsigned(1023, muestras_adc1_reg'length) and + unsigned(muestras_adc1_reg(1)) < unsigned(muestras_adc1_reg(2)) and + (unsigned(muestras_adc1_reg(3)) < unsigned(muestras_adc1_reg(2)) or + (unsigned(muestras_adc1_reg(3)) = unsigned(muestras_adc1_reg(2)) and + unsigned(muestras_adc1_reg(4)) < unsigned(muestras_adc1_reg(2)))) and + unsigned(muestras_adc1_reg(2)) < unsigned(trigg_set1) and + unsigned(muestras_adc1_reg(3)) < unsigned(trigg_set1) and + unsigned(muestras_adc1_reg(4)) < unsigned(trigg_set1) else + '0'; + --s_subtr2 <= '1' when unsigned(muestras_adc2_reg(2)) >= unsigned(subtrigg_set2) and + s_subtr2 <= '1' when unsigned(muestras_adc2_reg(2)) > to_unsigned(1023, muestras_adc2_reg'length) and + unsigned(muestras_adc2_reg(1)) < unsigned(muestras_adc2_reg(2)) and + (unsigned(muestras_adc2_reg(3)) < unsigned(muestras_adc2_reg(2)) or + (unsigned(muestras_adc2_reg(3)) = unsigned(muestras_adc2_reg(2)) and + unsigned(muestras_adc2_reg(4)) < unsigned(muestras_adc2_reg(2)))) and + unsigned(muestras_adc2_reg(2)) < unsigned(trigg_set2) and + unsigned(muestras_adc2_reg(3)) < unsigned(trigg_set2) and + unsigned(muestras_adc2_reg(4)) < unsigned(trigg_set2) else + '0'; + --s_subtr3 <= '1' when unsigned(muestras_adc3_reg(2)) >= unsigned(subtrigg_set3) and + s_subtr3 <= '1' when unsigned(muestras_adc3_reg(2)) > to_unsigned(1023, muestras_adc3_reg'length) and + unsigned(muestras_adc3_reg(1)) < unsigned(muestras_adc3_reg(2)) and + (unsigned(muestras_adc3_reg(3)) < unsigned(muestras_adc3_reg(2)) or + (unsigned(muestras_adc3_reg(3)) = unsigned(muestras_adc3_reg(2)) and + unsigned(muestras_adc3_reg(4)) < unsigned(muestras_adc3_reg(2)))) and + unsigned(muestras_adc3_reg(2)) < unsigned(trigg_set3) and + unsigned(muestras_adc3_reg(3)) < unsigned(trigg_set3) and + unsigned(muestras_adc3_reg(4)) < unsigned(trigg_set3) else + '0'; + s_subtr <= '1' when ( (s_subtr1 = '1') or (s_subtr2 = '1') or (s_subtr3 = '1') ) else + '0'; + charge1_next <= charge1_reg + muestras_adc1_reg'left - muestras_adc1_reg'right; + charge2_next <= charge2_reg + muestras_adc2_reg'left - muestras_adc2_reg'right; + charge3_next <= charge3_reg + muestras_adc3_reg'left - muestras_adc3_reg'right; + + array_scalers_next(L_ARRAY_SCALERS-1) <= "01" & s_subtr3 & s_subtr2 & s_subtr1 & std_logic_vector(cont_clk_entre_pps_reg(26 downto 0)) when (s_subtr = '1') else + array_scalers_reg(L_ARRAY_SCALERS-1); + array_scalers_next(L_ARRAY_SCALERS-2) <= "00" & std_logic_vector(charge1_reg) & std_logic_vector(charge2_reg) & std_logic_vector(charge3_reg) when (s_subtr = '1') else + array_scalers_reg(L_ARRAY_SCALERS-2); --valores de carga por canal + array_scalers_next(L_ARRAY_SCALERS-3) <= "00" & muestras_adc1_reg(2) & muestras_adc2_reg(2) & muestras_adc3_reg(2) when (s_subtr = '1') else + array_scalers_reg(L_ARRAY_SCALERS-3); --se manda el maximo del pulso tambien + +---------------------------------------------------------------------------------------------------------------- + +---------------------------------------------------------------------------------------------------------------- + -- FSM que controla todo + --================================================================ +-- state and data registers +--================================================================ + process (clk_40mhz, reset) + begin + if (reset = '1') then + state_reg <= STATE_IDLE; + wr_fifo_en_reg <= '0'; + wr_count_reg <= (others => '0'); + data_to_fifo_reg <= (others => '0'); + elsif (clk_40mhz'event and clk_40mhz = '1') then + state_reg <= state_next; + wr_fifo_en_reg <= wr_fifo_en_next; + wr_count_reg <= wr_count_next; + data_to_fifo_reg <= data_to_fifo_next; + end if; + end process; +--================================================================= +--next-state logic & data path functional units/routing +--================================================================= + --process(state_reg, s_tr, s_subtr, one_clk_pps, wr_count_reg, pfifo_status) + process(state_reg, status, wr_count_reg, pfifo_status) + begin + state_next <= state_reg; -- default volver al estado inicial + wr_fifo_en_next <= '0'; -- default deshabilitar la escritura en la fifo + wr_count_next <= (others => '0'); + data_to_fifo_next <= data_to_fifo_reg; --default mantener el valor + case state_reg is + when STATE_IDLE => + if (pfifo_status(2) = '0') then -- si la FIFO no esta llena pfifo_status <= full & pfull & empy + case status is + when "001" | "011" | "101" | "111" => -- le doy prioridad a la escritura de los datos pps cada segundo + state_next <= STATE_ATT_PPS; + when "100" | "110" => + state_next <= STATE_ATT_TR; + when "010" => + state_next <= STATE_ATT_SUBTR; + when others => --"000" + state_next <= STATE_IDLE; + end case; +-- if s_tr = '1' then +-- state_next <= STATE_ATT_TR; +-- elsif s_subtr = '1' then +-- state_next <= STATE_ATT_SUBTR; +-- elsif one_clk_pps = '1' then +-- state_next <= STATE_ATT_PPS; +-- end if; + else + state_next <= STATE_IDLE; + end if; + + when STATE_ATT_TR => + wr_fifo_en_next <= '1'; + wr_count_next <= wr_count_reg + 1; + data_to_fifo_next <= "00" & muestras_adc1_reg(0) & muestras_adc2_reg(0) & muestras_adc3_reg(0); + if (wr_count_reg = (L_ARRAY_MUESTRAS - 1)) then + state_next <= STATE_SEND_TR_STATUS; + else + state_next <= STATE_ATT_TR; + end if; + + when STATE_SEND_TR_STATUS => + wr_fifo_en_next <= '1'; + data_to_fifo_next <= tr_status_reg; + state_next <= STATE_SEND_CTR_STATUS; + + when STATE_SEND_CTR_STATUS => + wr_fifo_en_next <= '1'; + data_to_fifo_next <= ctr_status_reg; + state_next <= STATE_IDLE; + + when STATE_ATT_SUBTR => + wr_fifo_en_next <= '1'; + wr_count_next <= wr_count_reg + 1; + data_to_fifo_next <= array_scalers_reg(to_integer(wr_count_reg)); + if (wr_count_reg = (L_ARRAY_SCALERS - 1)) then + state_next <= STATE_IDLE; + else + state_next <= STATE_ATT_SUBTR; + end if; + + when STATE_ATT_PPS => + wr_fifo_en_next <= '1'; + wr_count_next <= wr_count_reg + 1; + data_to_fifo_next <= array_pps_reg(to_integer(wr_count_reg)); + if (wr_count_reg = (L_ARRAY_PPS - 1)) then + state_next <= STATE_IDLE; + else + state_next <= STATE_ATT_PPS; + end if; + end case; + end process; + + status <= s_tr & s_subtr & one_clk_pps; + data_out <= data_to_fifo_reg; + pwr_enA <= wr_fifo_en_reg; + + +end architecture rtl; + diff --git a/uart_rx.vhd b/uart_rx.vhd new file mode 100644 index 0000000000000000000000000000000000000000..b1374e6891b2d4032d8296ac03fd109609afb6b6 --- /dev/null +++ b/uart_rx.vhd @@ -0,0 +1,146 @@ +-- UART Receiver with integral 16 byte FIFO buffer +-- +-- 8 bit, no parity, 1 stop bit +-- +-- Version : 1.00 +-- Version Date : 16th October 2002 +-- +-- Start of design entry : 16th October 2002 +-- +-- Ken Chapman +-- Xilinx Ltd +-- Benchmark House +-- 203 Brooklands Road +-- Weybridge +-- Surrey KT13 ORH +-- United Kingdom +-- +-- chapman@xilinx.com +-- +------------------------------------------------------------------------------------ +-- +-- NOTICE: +-- +-- Copyright Xilinx, Inc. 2002. This code may be contain portions patented by other +-- third parties. By providing this core as one possible implementation of a standard, +-- Xilinx is making no representation that the provided implementation of this standard +-- is free from any claims of infringement by any third party. Xilinx expressly +-- disclaims any warranty with respect to the adequacy of the implementation, including +-- but not limited to any warranty or representation that the implementation is free +-- from claims of any third party. Futhermore, Xilinx is providing this core as a +-- courtesy to you and suggests that you contact all third parties to obtain the +-- necessary rights to use this implementation. +-- +------------------------------------------------------------------------------------ +-- +-- Library declarations +-- +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library unisim; +use unisim.vcomponents.all; +-- +------------------------------------------------------------------------------------ +-- +-- Main Entity for UART_RX +-- +entity uart_rx is + Port ( serial_in : in std_logic; + data_out : out std_logic_vector(7 downto 0); + read_buffer : in std_logic; + reset_buffer : in std_logic; + en_16_x_baud : in std_logic; + buffer_data_present : out std_logic; + buffer_full : out std_logic; + buffer_half_full : out std_logic; + clk : in std_logic); + end uart_rx; +-- +------------------------------------------------------------------------------------ +-- +-- Start of Main Architecture for UART_RX +-- +architecture macro_level_definition of uart_rx is +-- +------------------------------------------------------------------------------------ +-- +-- Components used in UART_RX and defined in subsequent entities. +-- +------------------------------------------------------------------------------------ +-- +-- Constant (K) Compact UART Receiver +-- +component kcuart_rx + Port ( serial_in : in std_logic; + data_out : out std_logic_vector(7 downto 0); + data_strobe : out std_logic; + en_16_x_baud : in std_logic; + clk : in std_logic); + end component; +-- +-- 'Bucket Brigade' FIFO +-- +component bbfifo_16x8 + Port ( data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + reset : in std_logic; + write : in std_logic; + read : in std_logic; + full : out std_logic; + half_full : out std_logic; + data_present : out std_logic; + clk : in std_logic); + end component; +-- +------------------------------------------------------------------------------------ +-- +-- Signals used in UART_RX +-- +------------------------------------------------------------------------------------ +-- +signal uart_data_out : std_logic_vector(7 downto 0); +signal fifo_write : std_logic; +-- +------------------------------------------------------------------------------------ +-- +-- Start of UART_RX circuit description +-- +------------------------------------------------------------------------------------ +-- +begin + + -- 8 to 1 multiplexer to convert parallel data to serial + + kcuart: kcuart_rx + port map ( serial_in => serial_in, + data_out => uart_data_out, + data_strobe => fifo_write, + en_16_x_baud => en_16_x_baud, + clk => clk ); + + + buf: bbfifo_16x8 + port map ( data_in => uart_data_out, + data_out => data_out, + reset => reset_buffer, + write => fifo_write, + read => read_buffer, + full => buffer_full, + half_full => buffer_half_full, + data_present => buffer_data_present, + clk => clk); + +end macro_level_definition; + +------------------------------------------------------------------------------------ +-- +-- END OF FILE UART_RX.VHD +-- +------------------------------------------------------------------------------------ + + diff --git a/uart_tx.vhd b/uart_tx.vhd new file mode 100644 index 0000000000000000000000000000000000000000..4018c929d6fa8de69b70af29f784c0fa07b03d49 --- /dev/null +++ b/uart_tx.vhd @@ -0,0 +1,148 @@ +-- UART Transmitter with integral 16 byte FIFO buffer +-- +-- 8 bit, no parity, 1 stop bit +-- +-- Version : 1.00 +-- Version Date : 14th October 2002 +-- +-- Start of design entry : 14th October 2002 +-- +-- Ken Chapman +-- Xilinx Ltd +-- Benchmark House +-- 203 Brooklands Road +-- Weybridge +-- Surrey KT13 ORH +-- United Kingdom +-- +-- chapman@xilinx.com +-- +------------------------------------------------------------------------------------ +-- +-- NOTICE: +-- +-- Copyright Xilinx, Inc. 2002. This code may be contain portions patented by other +-- third parties. By providing this core as one possible implementation of a standard, +-- Xilinx is making no representation that the provided implementation of this standard +-- is free from any claims of infringement by any third party. Xilinx expressly +-- disclaims any warranty with respect to the adequacy of the implementation, including +-- but not limited to any warranty or representation that the implementation is free +-- from claims of any third party. Futhermore, Xilinx is providing this core as a +-- courtesy to you and suggests that you contact all third parties to obtain the +-- necessary rights to use this implementation. +-- +------------------------------------------------------------------------------------ +-- +-- Library declarations +-- +-- The Unisim Library is used to define Xilinx primitives. It is also used during +-- simulation. The source can be viewed at %XILINX%\vhdl\src\unisims\unisim_VCOMP.vhd +-- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library unisim; +use unisim.vcomponents.all; +-- +------------------------------------------------------------------------------------ +-- +-- Main Entity for UART_TX +-- +entity uart_tx is + Port ( data_in : in std_logic_vector(7 downto 0); + write_buffer : in std_logic; + reset_buffer : in std_logic; + en_16_x_baud : in std_logic; + serial_out : out std_logic; + buffer_full : out std_logic; + buffer_half_full : out std_logic; + clk : in std_logic); + end uart_tx; +-- +------------------------------------------------------------------------------------ +-- +-- Start of Main Architecture for UART_TX +-- +architecture macro_level_definition of uart_tx is +-- +------------------------------------------------------------------------------------ +-- +-- Components used in UART_TX and defined in subsequent entities. +-- +------------------------------------------------------------------------------------ +-- +-- Constant (K) Compact UART Transmitter +-- +component kcuart_tx + Port ( data_in : in std_logic_vector(7 downto 0); + send_character : in std_logic; + en_16_x_baud : in std_logic; + serial_out : out std_logic; + Tx_complete : out std_logic; + clk : in std_logic); + end component; +-- +-- 'Bucket Brigade' FIFO +-- +component bbfifo_16x8 + Port ( data_in : in std_logic_vector(7 downto 0); + data_out : out std_logic_vector(7 downto 0); + reset : in std_logic; + write : in std_logic; + read : in std_logic; + full : out std_logic; + half_full : out std_logic; + data_present : out std_logic; + clk : in std_logic); + end component; +-- +------------------------------------------------------------------------------------ +-- +-- Signals used in UART_TX +-- +------------------------------------------------------------------------------------ +-- +signal fifo_data_out : std_logic_vector(7 downto 0); +signal fifo_data_present : std_logic; +signal fifo_read : std_logic; +-- +------------------------------------------------------------------------------------ +-- +-- Start of UART_TX circuit description +-- +------------------------------------------------------------------------------------ +-- +begin + + -- 8 to 1 multiplexer to convert parallel data to serial + + kcuart: kcuart_tx + port map ( data_in => fifo_data_out, + send_character => fifo_data_present, + en_16_x_baud => en_16_x_baud, + serial_out => serial_out, + Tx_complete => fifo_read, + clk => clk); + + + buf: bbfifo_16x8 + port map ( data_in => data_in, + data_out => fifo_data_out, + reset => reset_buffer, + write => write_buffer, + read => fifo_read, + full => buffer_full, + half_full => buffer_half_full, + data_present => fifo_data_present, + clk => clk); + +end macro_level_definition; + +------------------------------------------------------------------------------------ +-- +-- END OF FILE UART_TX.VHD +-- +------------------------------------------------------------------------------------ + + diff --git a/usb_if_ctrl.vhd b/usb_if_ctrl.vhd new file mode 100644 index 0000000000000000000000000000000000000000..7a9b95233f838dd0ab5f8122a9942db9bcd8d24f --- /dev/null +++ b/usb_if_ctrl.vhd @@ -0,0 +1,1144 @@ +-- +-- Copyright (C) 2011 Horacio Arnaldi +-- e-mail: lharnaldi@cab.cnea.gov.ar +-- +-- Laboratorio de Detección de PartÃculas y Radiación +-- Centro Atómico Bariloche +-- Comisión Nacional de EnergÃa Atómica (CNEA) +-- San Carlos de Bariloche +-- Date: 25/09/2011 +-- Ver: v2r0 -- +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity usb_if_ctrl is + generic( + VER : natural; + REV : natural; + RESET_POLARITY : std_logic); + port( + -- Reset button (BTN0) + reset : in std_logic; + + u_ifclk : in std_logic; + + -- Data & control from the FX2 + u_fd : inout std_logic_vector(7 downto 0); + u_flagc : in std_logic; -- FLAGC=EF (active-low), so '1' when there's data + u_flagb : in std_logic; -- FLAGB=FF (active-low), so '1' when there's room + + -- Control to the FX2 + u_sloe : out std_logic; -- PA2 + u_slrd : out std_logic; + u_slwr : out std_logic; + u_fifoad : out std_logic_vector(1 downto 0); -- PA4 & PA5 + u_pktend : out std_logic; -- PA6 + + -- Lago Board interface + -- Ports for settings + T1, T2, T3 : out std_logic_vector(9 downto 0); + subT1, subT2, subT3 : out std_logic_vector(9 downto 0); + BL1, BL2, BL3 : in std_logic_vector(11 downto 0); -- DAC + HV1 : out std_logic_vector(11 downto 0); -- DAC + HV2, HV3 : out std_logic_vector(11 downto 0); --PWM + + -- Inputs for data + clk40m : in std_logic; --fifo's in clk + fifo_A : in std_logic_vector(31 downto 0); + -- Enables for fifos + we_A : in std_logic; + -- Data input for HP03 + pC1, pC2, pC3, pC4, pC5 : in std_logic_vector(15 downto 0); + pC6, pC7, pD1, pD2 : in std_logic_vector(15 downto 0); + pA, pB, pC, pD : in std_logic_vector(7 downto 0); + + -- GPS receiver data + UTCnGPS : out std_logic; + month_port : in std_logic_vector(7 downto 0); + day_port : in std_logic_vector(7 downto 0); + year1_port : in std_logic_vector(7 downto 0); + year2_port : in std_logic_vector(7 downto 0); + hours_port : in std_logic_vector(7 downto 0); + minutes_port : in std_logic_vector(7 downto 0); + seconds_port : in std_logic_vector(7 downto 0); + fract_sec1_port : in std_logic_vector(7 downto 0); + fract_sec2_port : in std_logic_vector(7 downto 0); + fract_sec3_port : in std_logic_vector(7 downto 0); + fract_sec4_port : in std_logic_vector(7 downto 0); + latitude1_port : in std_logic_vector(7 downto 0); + latitude2_port : in std_logic_vector(7 downto 0); + latitude3_port : in std_logic_vector(7 downto 0); + latitude4_port : in std_logic_vector(7 downto 0); + longitude1_port : in std_logic_vector(7 downto 0); + longitude2_port : in std_logic_vector(7 downto 0); + longitude3_port : in std_logic_vector(7 downto 0); + longitude4_port : in std_logic_vector(7 downto 0); + ellipsoid1_port : in std_logic_vector(7 downto 0); + ellipsoid2_port : in std_logic_vector(7 downto 0); + ellipsoid3_port : in std_logic_vector(7 downto 0); + ellipsoid4_port : in std_logic_vector(7 downto 0); + velocity1_port : in std_logic_vector(7 downto 0); + velocity2_port : in std_logic_vector(7 downto 0); + heading1_port : in std_logic_vector(7 downto 0); + heading2_port : in std_logic_vector(7 downto 0); + geometry2_port : in std_logic_vector(7 downto 0); + DOP_type_port : in std_logic_vector(7 downto 0); + num_vis_sat_port : in std_logic_vector(7 downto 0); + num_track_sat_port: in std_logic_vector(7 downto 0); + + sat_ID1_port : in std_logic_vector(7 downto 0); + chtm1_port : in std_logic_vector(7 downto 0); + CNo1_port : in std_logic_vector(7 downto 0); + chsf1_port : in std_logic_vector(7 downto 0); + + sat_ID2_port : in std_logic_vector(7 downto 0); + chtm2_port : in std_logic_vector(7 downto 0); + CNo2_port : in std_logic_vector(7 downto 0); + chsf2_port : in std_logic_vector(7 downto 0); + + sat_ID3_port : in std_logic_vector(7 downto 0); + chtm3_port : in std_logic_vector(7 downto 0); + CNo3_port : in std_logic_vector(7 downto 0); + chsf3_port : in std_logic_vector(7 downto 0); + + sat_ID4_port : in std_logic_vector(7 downto 0); + chtm4_port : in std_logic_vector(7 downto 0); + CNo4_port : in std_logic_vector(7 downto 0); + chsf4_port : in std_logic_vector(7 downto 0); + + sat_ID5_port : in std_logic_vector(7 downto 0); + chtm5_port : in std_logic_vector(7 downto 0); + CNo5_port : in std_logic_vector(7 downto 0); + chsf5_port : in std_logic_vector(7 downto 0); + + sat_ID6_port : in std_logic_vector(7 downto 0); + chtm6_port : in std_logic_vector(7 downto 0); + CNo6_port : in std_logic_vector(7 downto 0); + chsf6_port : in std_logic_vector(7 downto 0); + + sat_ID7_port : in std_logic_vector(7 downto 0); + chtm7_port : in std_logic_vector(7 downto 0); + CNo7_port : in std_logic_vector(7 downto 0); + chsf7_port : in std_logic_vector(7 downto 0); + + sat_ID8_port : in std_logic_vector(7 downto 0); + chtm8_port : in std_logic_vector(7 downto 0); + CNo8_port : in std_logic_vector(7 downto 0); + chsf8_port : in std_logic_vector(7 downto 0); + + rsf_port : in std_logic_vector(7 downto 0); + + --Fifo status port + pfifo_status : out std_logic_vector(7 downto 0) + ); +end usb_if_ctrl; + +architecture sync of usb_if_ctrl is + + component fifo + port( + din : in std_logic_vector(31 downto 0); + rd_clk : in std_logic; + rd_en : in std_logic; + wr_clk : in std_logic; + wr_en : in std_logic; + dout : out std_logic_vector(7 downto 0); + rst : in std_logic; + empty : out std_logic; + full : out std_logic; + prog_full: OUT std_logic); + end component; + + attribute box_type : string; + attribute box_type of fifo : component is "black_box"; + + type StateType is ( + STATE_IDLE, + STATE_GET_COUNT0, + STATE_GET_COUNT1, + STATE_GET_COUNT2, + STATE_GET_COUNT3, + STATE_BEGIN_WRITE, + STATE_WRITE, + STATE_END_WRITE_ALIGNED, + STATE_END_WRITE_NONALIGNED, + STATE_READ); + + signal state, state_next : StateType; + signal count, count_next : unsigned(31 downto 0); -- Read/Write count + signal addr, addr_next : std_logic_vector(6 downto 0); + signal isWrite, isWrite_next : std_logic; + signal isAligned, isAligned_next: std_logic; + signal fifoOp : std_logic_vector(2 downto 0); + constant FIFO_READ : std_logic_vector(2 downto 0) := "100"; -- assert u_slrd & u_sloe + constant FIFO_WRITE : std_logic_vector(2 downto 0) := "011"; -- assert u_slwr + constant FIFO_NOP : std_logic_vector(2 downto 0) := "111"; -- assert nothing + constant OUT_FIFO : std_logic_vector(1 downto 0) := "10"; -- EP6OUT + constant IN_FIFO : std_logic_vector(1 downto 0) := "11"; -- EP8IN + + -- FIFO read/write enables, and data to be mux'd back to host + signal iReadEnable_A : std_logic; + signal iFifoData_A : std_logic_vector(7 downto 0); + + -- HP03 inputs + signal sC1_msb, sNext_sC1_msb : std_logic_vector(7 downto 0); + signal sC1_lsb, sNext_sC1_lsb : std_logic_vector(7 downto 0); + signal sC2_msb, sNext_sC2_msb : std_logic_vector(7 downto 0); + signal sC2_lsb, sNext_sC2_lsb : std_logic_vector(7 downto 0); + signal sC3_msb, sNext_sC3_msb : std_logic_vector(7 downto 0); + signal sC3_lsb, sNext_sC3_lsb : std_logic_vector(7 downto 0); + signal sC4_msb, sNext_sC4_msb : std_logic_vector(7 downto 0); + signal sC4_lsb, sNext_sC4_lsb : std_logic_vector(7 downto 0); + signal sC5_msb, sNext_sC5_msb : std_logic_vector(7 downto 0); + signal sC5_lsb, sNext_sC5_lsb : std_logic_vector(7 downto 0); + signal sC6_msb, sNext_sC6_msb : std_logic_vector(7 downto 0); + signal sC6_lsb, sNext_sC6_lsb : std_logic_vector(7 downto 0); + signal sC7_msb, sNext_sC7_msb : std_logic_vector(7 downto 0); + signal sC7_lsb, sNext_sC7_lsb : std_logic_vector(7 downto 0); + signal sA, sNext_sA : std_logic_vector(7 downto 0); + signal sB, sNext_sB : std_logic_vector(7 downto 0); + signal sC, sNext_sC : std_logic_vector(7 downto 0); + signal sD, sNext_sD : std_logic_vector(7 downto 0); + signal sD1_msb, sNext_sD1_msb : std_logic_vector(7 downto 0); + signal sD1_lsb, sNext_sD1_lsb : std_logic_vector(7 downto 0); + signal sD2_msb, sNext_sD2_msb : std_logic_vector(7 downto 0); + signal sD2_lsb, sNext_sD2_lsb : std_logic_vector(7 downto 0); + + -- GPS fifo signals + signal smonth, sNext_month : std_logic_vector(7 downto 0); + signal sday, sNext_day : std_logic_vector(7 downto 0); + signal syear1, sNext_year1 : std_logic_vector(7 downto 0); + signal syear2, sNext_year2 : std_logic_vector(7 downto 0); + signal shours, sNext_hours : std_logic_vector(7 downto 0); + signal sminutes, sNext_minutes : std_logic_vector(7 downto 0); + signal sseconds, sNext_seconds : std_logic_vector(7 downto 0); + signal sfract_sec1, sNext_fract_sec1 : std_logic_vector(7 downto 0); + signal sfract_sec2, sNext_fract_sec2 : std_logic_vector(7 downto 0); + signal sfract_sec3, sNext_fract_sec3 : std_logic_vector(7 downto 0); + signal sfract_sec4, sNext_fract_sec4 : std_logic_vector(7 downto 0); + signal slatitude1, sNext_latitude1 : std_logic_vector(7 downto 0); + signal slatitude2, sNext_latitude2 : std_logic_vector(7 downto 0); + signal slatitude3, sNext_latitude3 : std_logic_vector(7 downto 0); + signal slatitude4, sNext_latitude4 : std_logic_vector(7 downto 0); + signal slongitude1, sNext_longitude1 : std_logic_vector(7 downto 0); + signal slongitude2, sNext_longitude2 : std_logic_vector(7 downto 0); + signal slongitude3, sNext_longitude3 : std_logic_vector(7 downto 0); + signal slongitude4, sNext_longitude4 : std_logic_vector(7 downto 0); + signal sellipsoid1, sNext_ellipsoid1 : std_logic_vector(7 downto 0); + signal sellipsoid2, sNext_ellipsoid2 : std_logic_vector(7 downto 0); + signal sellipsoid3, sNext_ellipsoid3 : std_logic_vector(7 downto 0); + signal sellipsoid4, sNext_ellipsoid4 : std_logic_vector(7 downto 0); + signal svelocity1, sNext_velocity1 : std_logic_vector(7 downto 0); + signal svelocity2, sNext_velocity2 : std_logic_vector(7 downto 0); + signal sheading1, sNext_heading1 : std_logic_vector(7 downto 0); + signal sheading2, sNext_heading2 : std_logic_vector(7 downto 0); + signal sgeometry2, sNext_geometry2 : std_logic_vector(7 downto 0); + signal sDOP_type, sNext_DOP_type : std_logic_vector(7 downto 0); + signal sNVS, sNext_NVS : std_logic_vector(7 downto 0); + signal sNTS, sNext_NTS : std_logic_vector(7 downto 0); + signal ssat_ID1, sNext_sat_ID1 : std_logic_vector(7 downto 0); + signal schtm1, sNext_chtm1 : std_logic_vector(7 downto 0); + signal sCNo1, sNext_CNo1 : std_logic_vector(7 downto 0); + signal schsf1, sNext_chsf1 : std_logic_vector(7 downto 0); + signal ssat_ID2, sNext_sat_ID2 : std_logic_vector(7 downto 0); + signal schtm2, sNext_chtm2 : std_logic_vector(7 downto 0); + signal sCNo2, sNext_CNo2 : std_logic_vector(7 downto 0); + signal schsf2, sNext_chsf2 : std_logic_vector(7 downto 0); + signal ssat_ID3, sNext_sat_ID3 : std_logic_vector(7 downto 0); + signal schtm3, sNext_chtm3 : std_logic_vector(7 downto 0); + signal sCNo3, sNext_CNo3 : std_logic_vector(7 downto 0); + signal schsf3, sNext_chsf3 : std_logic_vector(7 downto 0); + signal ssat_ID4, sNext_sat_ID4 : std_logic_vector(7 downto 0); + signal schtm4, sNext_chtm4 : std_logic_vector(7 downto 0); + signal sCNo4, sNext_CNo4 : std_logic_vector(7 downto 0); + signal schsf4, sNext_chsf4 : std_logic_vector(7 downto 0); + signal ssat_ID5, sNext_sat_ID5 : std_logic_vector(7 downto 0); + signal schtm5, sNext_chtm5 : std_logic_vector(7 downto 0); + signal sCNo5, sNext_CNo5 : std_logic_vector(7 downto 0); + signal schsf5, sNext_chsf5 : std_logic_vector(7 downto 0); + signal ssat_ID6, sNext_sat_ID6 : std_logic_vector(7 downto 0); + signal schtm6, sNext_chtm6 : std_logic_vector(7 downto 0); + signal sCNo6, sNext_CNo6 : std_logic_vector(7 downto 0); + signal schsf6, sNext_chsf6 : std_logic_vector(7 downto 0); + signal ssat_ID7, sNext_sat_ID7 : std_logic_vector(7 downto 0); + signal schtm7, sNext_chtm7 : std_logic_vector(7 downto 0); + signal sCNo7, sNext_CNo7 : std_logic_vector(7 downto 0); + signal schsf7, sNext_chsf7 : std_logic_vector(7 downto 0); + signal ssat_ID8, sNext_sat_ID8 : std_logic_vector(7 downto 0); + signal schtm8, sNext_chtm8 : std_logic_vector(7 downto 0); + signal sCNo8, sNext_CNo8 : std_logic_vector(7 downto 0); + signal schsf8, sNext_chsf8 : std_logic_vector(7 downto 0); + signal srsf, sNext_rsf : std_logic_vector(7 downto 0); + signal sutcngps, sNextutcngps : std_logic_vector(7 downto 0); + + + -- Registers + signal iR0, iNextR0 : std_logic_vector(7 downto 0); --reserved + signal iT1_msb, iNext_T1_msb : std_logic_vector(7 downto 0); --1 + signal iT1_lsb, iNext_T1_lsb : std_logic_vector(7 downto 0); --2 + signal iT2_msb, iNext_T2_msb : std_logic_vector(7 downto 0); --3 + signal iT2_lsb, iNext_T2_lsb : std_logic_vector(7 downto 0); --4 + signal iT3_msb, iNext_T3_msb : std_logic_vector(7 downto 0); --5 + signal iT3_lsb, iNext_T3_lsb : std_logic_vector(7 downto 0); --6 + signal isubT1_msb, iNext_subT1_msb : std_logic_vector(7 downto 0); --7 + signal isubT1_lsb, iNext_subT1_lsb : std_logic_vector(7 downto 0); --8 + signal isubT2_msb, iNext_subT2_msb : std_logic_vector(7 downto 0); --9 + signal isubT2_lsb, iNext_subT2_lsb : std_logic_vector(7 downto 0); --10 + signal isubT3_msb, iNext_subT3_msb : std_logic_vector(7 downto 0); --11 + signal isubT3_lsb, iNext_subT3_lsb : std_logic_vector(7 downto 0); --12 + signal iBL1_msb, iNext_BL1_msb : std_logic_vector(7 downto 0); --13 + signal iBL1_lsb, iNext_BL1_lsb : std_logic_vector(7 downto 0); --14 + signal iBL2_msb, iNext_BL2_msb : std_logic_vector(7 downto 0); --15 + signal iBL2_lsb, iNext_BL2_lsb : std_logic_vector(7 downto 0); --16 + signal iBL3_msb, iNext_BL3_msb : std_logic_vector(7 downto 0); --17 + signal iBL3_lsb, iNext_BL3_lsb : std_logic_vector(7 downto 0); --18 + signal iHV1_msb, iNext_HV1_msb : std_logic_vector(7 downto 0); --19 + signal iHV1_lsb, iNext_HV1_lsb : std_logic_vector(7 downto 0); --20 + signal iHV2_msb, iNext_HV2_msb : std_logic_vector(7 downto 0); --21 + signal iHV2_lsb, iNext_HV2_lsb : std_logic_vector(7 downto 0); --22 + signal iHV3_msb, iNext_HV3_msb : std_logic_vector(7 downto 0); --23 + signal iHV3_lsb, iNext_HV3_lsb : std_logic_vector(7 downto 0); --24 + signal irstatus, iNext_rstatus : std_logic_vector(7 downto 0); --25 + + -- HP03 fifo status + signal iVerID, iNext_iVerID : std_logic_vector(7 downto 0); --26 + -- GPS fifo status + signal iRevID, iNext_iRevID : std_logic_vector(7 downto 0); --27 + signal sfull_A : std_logic; + signal sempty_A : std_logic; + signal spf_A : std_logic; -- prog full A and B + +begin + + -- Drive mixed signals... + pfifo_status <= "00000" & sfull_A & spf_A & sempty_A; + iNext_rstatus <= spf_A & "0" & sfull_A & "000" & sempty_A & "0"; + iNext_iVerID <= std_logic_vector(to_unsigned(VER, 8)); -- Actual Soft Version + iNext_iRevID <= std_logic_vector(to_unsigned(REV, 8)); -- Actual Soft Revision + UTCnGPS <= sutcngps(0); + -- Drive module outputs + -- Trigger levels + T1 <= iT1_msb(1 downto 0) & iT1_lsb; + T2 <= iT2_msb(1 downto 0) & iT2_lsb; + T3 <= iT3_msb(1 downto 0) & iT3_lsb; + -- subTrigger levels + subT1 <= isubT1_msb(1 downto 0) & isubT1_lsb; + subT2 <= isubT2_msb(1 downto 0) & isubT2_lsb; + subT3 <= isubT3_msb(1 downto 0) & isubT3_lsb; + iNext_BL1_msb <= x"0" & BL1(11 downto 8); + iNext_BL1_lsb <= BL1(7 downto 0); + iNext_BL2_msb <= x"0" & BL2(11 downto 8); + iNext_BL2_lsb <= BL2(7 downto 0); + iNext_BL3_msb <= x"0" & BL3(11 downto 8); + iNext_BL3_lsb <= BL3(7 downto 0); + + -- High Voltages + HV1 <= iHV1_msb(3 downto 0) & iHV1_lsb; + HV2 <= iHV2_msb(3 downto 0) & iHV2_lsb; + HV3 <= iHV3_msb(3 downto 0) & iHV3_lsb; + + -- Drive HP03 inputs + sNext_sC1_msb <= pC1(15 downto 8); + sNext_sC1_lsb <= pC1(7 downto 0); + sNext_sC2_msb <= pC2(15 downto 8); + sNext_sC2_lsb <= pC2(7 downto 0); + sNext_sC3_msb <= pC3(15 downto 8); + sNext_sC3_lsb <= pC3(7 downto 0); + sNext_sC4_msb <= pC4(15 downto 8); + sNext_sC4_lsb <= pC4(7 downto 0); + sNext_sC5_msb <= pC5(15 downto 8); + sNext_sC5_lsb <= pC5(7 downto 0); + sNext_sC6_msb <= pC6(15 downto 8); + sNext_sC6_lsb <= pC6(7 downto 0); + sNext_sC7_msb <= pC7(15 downto 8); + sNext_sC7_lsb <= pC7(7 downto 0); + sNext_sA <= pA; + sNext_sB <= pB; + sNext_sC <= pC; + sNext_sD <= pD; + sNext_sD1_msb <= pD1(15 downto 8); + sNext_sD1_lsb <= pD1(7 downto 0); + sNext_sD2_msb <= pD2(15 downto 8); + sNext_sD2_lsb <= pD2(7 downto 0); + + -- Drive GPS inputs + sNext_month <= month_port; + sNext_day <= day_port; + sNext_year1 <= year1_port; + sNext_year2 <= year2_port; + sNext_hours <= hours_port; + sNext_minutes <= minutes_port; + sNext_seconds <= seconds_port; + sNext_fract_sec1<= fract_sec1_port; + sNext_fract_sec2<= fract_sec2_port; + sNext_fract_sec3<= fract_sec3_port; + sNext_fract_sec4<= fract_sec4_port; + sNext_latitude1 <= latitude1_port; + sNext_latitude2 <= latitude2_port; + sNext_latitude3 <= latitude3_port; + sNext_latitude4 <= latitude4_port; + sNext_longitude1<= longitude1_port; + sNext_longitude2<= longitude2_port; + sNext_longitude3<= longitude3_port; + sNext_longitude4<= longitude4_port; + sNext_ellipsoid1<= ellipsoid1_port; + sNext_ellipsoid2<= ellipsoid2_port; + sNext_ellipsoid3<= ellipsoid3_port; + sNext_ellipsoid4<= ellipsoid4_port; + sNext_velocity1 <= velocity1_port; + sNext_velocity2 <= velocity2_port; + sNext_heading1 <= heading1_port; + sNext_heading2 <= heading2_port; + sNext_geometry2 <= geometry2_port; + sNext_DOP_type <= DOP_type_port; + sNext_NVS <= num_vis_sat_port; + sNext_NTS <= num_track_sat_port; + sNext_sat_ID1 <= sat_ID1_port; + sNext_chtm1 <= chtm1_port; + sNext_CNo1 <= CNo1_port; + sNext_chsf1 <= chsf1_port; + sNext_sat_ID2 <= sat_ID2_port; + sNext_chtm2 <= chtm2_port; + sNext_CNo2 <= CNo2_port; + sNext_chsf2 <= chsf2_port; + sNext_sat_ID3 <= sat_ID3_port; + sNext_chtm3 <= chtm3_port; + sNext_CNo3 <= CNo3_port; + sNext_chsf3 <= chsf3_port; + sNext_sat_ID4 <= sat_ID4_port; + sNext_chtm4 <= chtm4_port; + sNext_CNo4 <= CNo4_port; + sNext_chsf4 <= chsf4_port; + sNext_sat_ID5 <= sat_ID5_port; + sNext_chtm5 <= chtm5_port; + sNext_CNo5 <= CNo5_port; + sNext_chsf5 <= chsf5_port; + sNext_sat_ID6 <= sat_ID6_port; + sNext_chtm6 <= chtm6_port; + sNext_CNo6 <= CNo6_port; + sNext_chsf6 <= chsf6_port; + sNext_sat_ID7 <= sat_ID7_port; + sNext_chtm7 <= chtm7_port; + sNext_CNo7 <= CNo7_port; + sNext_chsf7 <= chsf7_port; + sNext_sat_ID8 <= sat_ID8_port; + sNext_chtm8 <= chtm8_port; + sNext_CNo8 <= CNo8_port; + sNext_chsf8 <= chsf8_port; + sNext_rsf <= rsf_port; + --End of GPS signals + + --FIFO's + fifoA : fifo + port map( + din => fifo_A, + rd_clk => u_ifclk, + rd_en => iReadEnable_A, + wr_clk => clk40m, + wr_en => we_A, + dout => iFifoData_A, + rst => reset, + empty => sempty_A, + full => sfull_A, + prog_full => spf_A + ); + + -- Infer registers + process(u_ifclk, reset) + begin + if ( reset = RESET_POLARITY) then + state <= STATE_IDLE; + count <= (others => '0'); + addr <= (others => '0'); + isWrite <= '0'; + isAligned <= '0'; + iR0 <= (others => '0'); + iT1_msb <= x"03"; + iT1_lsb <= x"E8"; + iT2_msb <= x"03"; + iT2_lsb <= x"E8"; + iT3_msb <= x"03"; + iT3_lsb <= x"E8"; + isubT1_msb <= x"03"; + isubT1_lsb <= x"E8"; + isubT2_msb <= x"03"; + isubT2_lsb <= x"E8"; + isubT3_msb <= x"03"; + isubT3_lsb <= x"E8"; + iBL1_msb <= (others => '0'); + iBL1_lsb <= (others => '0'); + iBL2_msb <= (others => '0'); + iBL2_lsb <= (others => '0'); + iBL3_msb <= (others => '0'); + iBL3_lsb <= (others => '0'); + iHV1_msb <= (others => '0'); + iHV1_lsb <= (others => '0'); + iHV2_msb <= (others => '0'); + iHV2_lsb <= (others => '0'); + iHV3_msb <= (others => '0'); + iHV3_lsb <= (others => '0'); + irstatus <= (others => '0'); + --HP03 signals + sC1_msb <= (others => '0'); + sC1_lsb <= (others => '0'); + sC2_msb <= (others => '0'); + sC2_lsb <= (others => '0'); + sC3_msb <= (others => '0'); + sC3_lsb <= (others => '0'); + sC4_msb <= (others => '0'); + sC4_lsb <= (others => '0'); + sC5_msb <= (others => '0'); + sC5_lsb <= (others => '0'); + sC6_msb <= (others => '0'); + sC6_lsb <= (others => '0'); + sC7_msb <= (others => '0'); + sC7_lsb <= (others => '0'); + sA <= (others => '0'); + sB <= (others => '0'); + sC <= (others => '0'); + sD <= (others => '0'); + sD1_msb <= (others => '0'); + sD1_lsb <= (others => '0'); + sD2_msb <= (others => '0'); + sD2_lsb <= (others => '0'); + --GPS signals + smonth <= (others => '0'); + sday <= (others => '0'); + syear1 <= (others => '0'); + syear2 <= (others => '0'); + shours <= (others => '0'); + sminutes <= (others => '0'); + sseconds <= (others => '0'); + sfract_sec1 <= (others => '0'); + sfract_sec2 <= (others => '0'); + sfract_sec3 <= (others => '0'); + sfract_sec4 <= (others => '0'); + slatitude1 <= (others => '0'); + slatitude2 <= (others => '0'); + slatitude3 <= (others => '0'); + slatitude4 <= (others => '0'); + slongitude1 <= (others => '0'); + slongitude2 <= (others => '0'); + slongitude3 <= (others => '0'); + slongitude4 <= (others => '0'); + sellipsoid1 <= (others => '0'); + sellipsoid2 <= (others => '0'); + sellipsoid3 <= (others => '0'); + sellipsoid4 <= (others => '0'); + svelocity1 <= (others => '0'); + svelocity2 <= (others => '0'); + sheading1 <= (others => '0'); + sheading2 <= (others => '0'); + sgeometry2 <= (others => '0'); + sDOP_type <= (others => '0'); + sNVS <= (others => '0'); + sNTS <= (others => '0'); + ssat_ID1 <= (others => '0'); + schtm1 <= (others => '0'); + sCNo1 <= (others => '0'); + schsf1 <= (others => '0'); + ssat_ID2 <= (others => '0'); + schtm2 <= (others => '0'); + sCNo2 <= (others => '0'); + schsf2 <= (others => '0'); + ssat_ID3 <= (others => '0'); + schtm3 <= (others => '0'); + sCNo3 <= (others => '0'); + schsf3 <= (others => '0'); + ssat_ID4 <= (others => '0'); + schtm4 <= (others => '0'); + sCNo4 <= (others => '0'); + schsf4 <= (others => '0'); + ssat_ID5 <= (others => '0'); + schtm5 <= (others => '0'); + sCNo5 <= (others => '0'); + schsf5 <= (others => '0'); + ssat_ID6 <= (others => '0'); + schtm6 <= (others => '0'); + sCNo6 <= (others => '0'); + schsf6 <= (others => '0'); + ssat_ID7 <= (others => '0'); + schtm7 <= (others => '0'); + sCNo7 <= (others => '0'); + schsf7 <= (others => '0'); + ssat_ID8 <= (others => '0'); + schtm8 <= (others => '0'); + sCNo8 <= (others => '0'); + schsf8 <= (others => '0'); + srsf <= (others => '0'); + sutcngps <= (others => '0'); + + elsif rising_edge(u_ifclk) then + state <= state_next; + count <= count_next; + addr <= addr_next; + isWrite <= isWrite_next; + isAligned <= isAligned_next; + iR0 <= iNextR0; + iT1_msb <= iNext_T1_msb; + iT1_lsb <= iNext_T1_lsb; + iT2_msb <= iNext_T2_msb; + iT2_lsb <= iNext_T2_lsb; + iT3_msb <= iNext_T3_msb; + iT3_lsb <= iNext_T3_lsb; + isubT1_msb <= iNext_subT1_msb; + isubT1_lsb <= iNext_subT1_lsb; + isubT2_msb <= iNext_subT2_msb; + isubT2_lsb <= iNext_subT2_lsb; + isubT3_msb <= iNext_subT3_msb; + isubT3_lsb <= iNext_subT3_lsb; + iBL1_msb <= iNext_BL1_msb; + iBL1_lsb <= iNext_BL1_lsb; + iBL2_msb <= iNext_BL2_msb; + iBL2_lsb <= iNext_BL2_lsb; + iBL3_msb <= iNext_BL3_msb; + iBL3_lsb <= iNext_BL3_lsb; + iHV1_msb <= iNext_HV1_msb; + iHV1_lsb <= iNext_HV1_lsb; + iHV2_msb <= iNext_HV2_msb; + iHV2_lsb <= iNext_HV2_lsb; + iHV3_msb <= iNext_HV3_msb; + iHV3_lsb <= iNext_HV3_lsb; + irstatus <= iNext_rstatus; + --HP03 signals + sC1_msb <= sNext_sC1_msb; + sC1_lsb <= sNext_sC1_lsb; + sC2_msb <= sNext_sC2_msb; + sC2_lsb <= sNext_sC2_lsb; + sC3_msb <= sNext_sC3_msb; + sC3_lsb <= sNext_sC3_lsb; + sC4_msb <= sNext_sC4_msb; + sC4_lsb <= sNext_sC4_lsb; + sC5_msb <= sNext_sC5_msb; + sC5_lsb <= sNext_sC5_lsb; + sC6_msb <= sNext_sC6_msb; + sC6_lsb <= sNext_sC6_lsb; + sC7_msb <= sNext_sC7_msb; + sC7_lsb <= sNext_sC7_lsb; + sA <= sNext_sA; + sB <= sNext_sB; + sC <= sNext_sC; + sD <= sNext_sD; + sD1_msb <= sNext_sD1_msb; + sD1_lsb <= sNext_sD1_lsb; + sD2_msb <= sNext_sD2_msb; + sD2_lsb <= sNext_sD2_lsb; + --GPS signals + smonth <= sNext_month; + sday <= sNext_day; + syear1 <= sNext_year1; + syear2 <= sNext_year2; + shours <= sNext_hours; + sminutes <= sNext_minutes; + sseconds <= sNext_seconds; + sfract_sec1 <= sNext_fract_sec1; + sfract_sec2 <= sNext_fract_sec2; + sfract_sec3 <= sNext_fract_sec3; + sfract_sec4 <= sNext_fract_sec4; + slatitude1 <= sNext_latitude1; + slatitude2 <= sNext_latitude2; + slatitude3 <= sNext_latitude3; + slatitude4 <= sNext_latitude4; + slongitude1 <= sNext_longitude1; + slongitude2 <= sNext_longitude2; + slongitude3 <= sNext_longitude3; + slongitude4 <= sNext_longitude4; + sellipsoid1 <= sNext_ellipsoid1; + sellipsoid2 <= sNext_ellipsoid2; + sellipsoid3 <= sNext_ellipsoid3; + sellipsoid4 <= sNext_ellipsoid4; + svelocity1 <= sNext_velocity1; + svelocity2 <= sNext_velocity2; + sheading1 <= sNext_heading1; + sheading2 <= sNext_heading2; + sgeometry2 <= sNext_geometry2; + sDOP_type <= sNext_DOP_type; + sNVS <= sNext_NVS; + sNTS <= sNext_NTS; + ssat_ID1 <= sNext_sat_ID1; + schtm1 <= sNext_chtm1; + sCNo1 <= sNext_CNo1; + schsf1 <= sNext_chsf1; + ssat_ID2 <= sNext_sat_ID2; + schtm2 <= sNext_chtm2; + sCNo2 <= sNext_CNo2; + schsf2 <= sNext_chsf2; + ssat_ID3 <= sNext_sat_ID3; + schtm3 <= sNext_chtm3; + sCNo3 <= sNext_CNo3; + schsf3 <= sNext_chsf3; + ssat_ID4 <= sNext_sat_ID4; + schtm4 <= sNext_chtm4; + sCNo4 <= sNext_CNo4; + schsf4 <= sNext_chsf4; + ssat_ID5 <= sNext_sat_ID5; + schtm5 <= sNext_chtm5; + sCNo5 <= sNext_CNo5; + schsf5 <= sNext_chsf5; + ssat_ID6 <= sNext_sat_ID6; + schtm6 <= sNext_chtm6; + sCNo6 <= sNext_CNo6; + schsf6 <= sNext_chsf6; + ssat_ID7 <= sNext_sat_ID7; + schtm7 <= sNext_chtm7; + sCNo7 <= sNext_CNo7; + schsf7 <= sNext_chsf7; + ssat_ID8 <= sNext_sat_ID8; + schtm8 <= sNext_chtm8; + sCNo8 <= sNext_CNo8; + schsf8 <= sNext_chsf8; + srsf <= sNext_rsf; + sutcngps <= sNextutcngps; + iVerID <= iNext_iVerID; + iRevID <= iNext_iRevID; + end if; + end process; + + -- Next state logic + process( + state, u_fd, u_flagc, u_flagb, count, isAligned, isWrite, addr, + + iR0, iT1_msb, iT1_lsb, iT2_msb, iT2_lsb, iT3_msb, iT3_lsb, + isubT1_msb, isubT1_lsb, isubT2_msb, isubT2_lsb, isubT3_msb, + isubT3_lsb, iBL1_msb, iBL1_lsb, iBL2_msb, iBL2_lsb, iBL3_msb, + iBL3_lsb, iHV1_msb, iHV1_lsb, iHV2_msb, iHV2_lsb, iHV3_msb, + iHV3_lsb, irstatus, iVerID, iRevID, sutcngps) + begin + state_next <= state; + count_next <= count; + addr_next <= addr; + isWrite_next <= isWrite; + isAligned_next <= isAligned; -- does this FIFO write end on a block (512-byte) boundary? + u_fd <= (others => 'Z'); -- Tristated unless explicitly driven + fifoOp <= FIFO_READ; -- read the FX2LP FIFO by default + u_pktend <= '1'; -- inactive: FPGA does not commit a short packet. + + iNextR0 <= iR0; + iNext_T1_msb <= iT1_msb; + iNext_T1_lsb <= iT1_lsb; + iNext_T2_msb <= iT2_msb; + iNext_T2_lsb <= iT2_lsb; + iNext_T3_msb <= iT3_msb; + iNext_T3_lsb <= iT3_lsb; + iNext_subT1_msb <= isubT1_msb; + iNext_subT1_lsb <= isubT1_lsb; + iNext_subT2_msb <= isubT2_msb; + iNext_subT2_lsb <= isubT2_lsb; + iNext_subT3_msb <= isubT3_msb; + iNext_subT3_lsb <= isubT3_lsb; + iNext_HV1_msb <= iHV1_msb; + iNext_HV1_lsb <= iHV1_lsb; + iNext_HV2_msb <= iHV2_msb; + iNext_HV2_lsb <= iHV2_lsb; + iNext_HV3_msb <= iHV3_msb; + iNext_HV3_lsb <= iHV3_lsb; + sNextutcngps <= sutcngps; + -- No read from FIFO + iReadEnable_A <= '0'; + + case state is + when STATE_IDLE => + u_fifoad <= OUT_FIFO; -- Reading from FX2LP + if ( u_flagc = '1' ) then + -- The read/write flag and a seven-bit register address + -- will be available on the next clock edge. + addr_next <= u_fd(6 downto 0); + isWrite_next <= u_fd(7); + state_next <= STATE_GET_COUNT0; + end if; + + when STATE_GET_COUNT0 => + u_fifoad <= OUT_FIFO; -- Reading from FX2LP + if ( u_flagc = '1' ) then + -- The count high word high byte will be available on the + -- next clock edge. + count_next(31 downto 24) <= unsigned(u_fd); + state_next <= STATE_GET_COUNT1; + end if; + + when STATE_GET_COUNT1 => + u_fifoad <= OUT_FIFO; -- Reading from FX2LP + if ( u_flagc = '1' ) then + -- The count high word low byte will be available on the + -- next clock edge. + count_next(23 downto 16) <= unsigned(u_fd); + state_next <= STATE_GET_COUNT2; + end if; + + when STATE_GET_COUNT2 => + u_fifoad <= OUT_FIFO; -- Reading from FX2LP + if ( u_flagc = '1' ) then + -- The count low word high byte will be available on the + -- next clock edge. + count_next(15 downto 8) <= unsigned(u_fd); + state_next <= STATE_GET_COUNT3; + end if; + + when STATE_GET_COUNT3 => + u_fifoad <= OUT_FIFO; -- Reading from FX2LP + if ( u_flagc = '1' ) then + -- The count low word low byte will be available on the + -- next clock edge. + count_next(7 downto 0) <= unsigned(u_fd); + if ( isWrite = '1' ) then + state_next <= STATE_BEGIN_WRITE; + else + state_next <= STATE_READ; + end if; + end if; + + when STATE_BEGIN_WRITE => + u_fifoad <= IN_FIFO; -- Writing to FX2LP + fifoOp <= FIFO_NOP; + isAligned_next <= not(count(0) or count(1) or count(2) or count(3) + or count(4) or count(5) or count(6) or count(7) + or count(8)); + state_next <= STATE_WRITE; + + when STATE_WRITE => + u_fifoad <= IN_FIFO; -- Writing to FX2LP + if ( u_flagb = '1' ) then + fifoOp <= FIFO_WRITE; + case addr is + when "0000000" => --reserved + u_fd <= iR0; + when "0000001" => --1 + u_fd <= iT1_msb; + when "0000010" => --2 + u_fd <= iT1_lsb; + when "0000011" => --3 + u_fd <= iT2_msb; + when "0000100" => --4 + u_fd <= iT2_lsb; + when "0000101" => --5 + u_fd <= iT3_msb; + when "0000110" => --6 + u_fd <= iT3_lsb; + when "0000111" => --7 + u_fd <= isubT1_msb; + when "0001000" => --8 + u_fd <= isubT1_lsb; + when "0001001" => --9 + u_fd <= isubT2_msb; + when "0001010" => --10 + u_fd <= isubT2_lsb; + when "0001011" => --11 + u_fd <= isubT3_msb; + when "0001100" => --12 + u_fd <= isubT3_lsb; + when "0001101" => --13 + u_fd <= iBL1_msb; + when "0001110" => --14 + u_fd <= iBL1_lsb; + when "0001111" => --15 + u_fd <= iBL2_msb; + when "0010000" => --16 + u_fd <= iBL2_lsb; + when "0010001" => --17 + u_fd <= iBL3_msb; + when "0010010" => --18 + u_fd <= iBL3_lsb; + when "0010011" => --19 + u_fd <= iHV1_msb; + when "0010100" => --20 + u_fd <= iHV1_lsb; + when "0010101" => --21 + u_fd <= iHV2_msb; + when "0010110" => --22 + u_fd <= iHV2_lsb; + when "0010111" => --23 + u_fd <= iHV3_msb; + when "0011000" => --24 + u_fd <= iHV3_lsb; + when "0011001" => --25 + u_fd <= sutcngps; + when "0011010" => --26 + u_fd <= irstatus; + when "0011011" => --27 + iReadEnable_A <= '1'; -- Enable read FIFO + u_fd <= iFifoData_A; -- Read FIFO A when addr=1B + --HP03 signals + when "0011101" => --29 + u_fd <= sC1_msb; + when "0011110" => --30 + u_fd <= sC1_lsb; + when "0011111" => --31 + u_fd <= sC2_msb; + when "0100000" => --32 + u_fd <= sC2_lsb; + when "0100001" => --33 + u_fd <= sC3_msb; + when "0100010" => --34 + u_fd <= sC3_lsb; + when "0100011" => --35 + u_fd <= sC4_msb; + when "0100100" => --36 + u_fd <= sC4_lsb; + when "0100101" => --37 + u_fd <= sC5_msb; + when "0100110" => --38 + u_fd <= sC5_lsb; + when "0100111" => --39 + u_fd <= sC6_msb; + when "0101000" => --40 + u_fd <= sC6_lsb; + when "0101001" => --41 + u_fd <= sC7_msb; + when "0101010" => --42 + u_fd <= sC7_lsb; + when "0101011" => --43 + u_fd <= sA; + when "0101100" => --44 + u_fd <= sB; + when "0101101" => --45 + u_fd <= sC; + when "0101110" => --46 + u_fd <= sD; + when "0101111" => --47 + u_fd <= sD1_msb; + when "0110000" => --48 + u_fd <= sD1_lsb; + when "0110001" => --49 + u_fd <= sD2_msb; + when "0110010" => --50 + u_fd <= sD2_lsb; + --GPS signals + when "0110011" => --51 + u_fd <= smonth; + when "0110100" => --52 + u_fd <= sday; + when "0110101" => --53 + u_fd <= syear1; + when "0110110" => --54 + u_fd <= syear2; + when "0110111" => --55 + u_fd <= shours; + when "0111000" => --56 + u_fd <= sminutes; + when "0111001" => --57 + u_fd <= sseconds; + when "0111010" => --58 + u_fd <= sfract_sec1; + when "0111011" => --59 + u_fd <= sfract_sec2; + when "0111100" => --60 + u_fd <= sfract_sec3; + when "0111101" => --61 + u_fd <= sfract_sec4; + when "0111110" => --62 + u_fd <= slatitude1; + when "0111111" => --63 + u_fd <= slatitude2; + when "1000000" => --64 + u_fd <= slatitude3; + when "1000001" => --65 + u_fd <= slatitude4; + when "1000010" => --66 + u_fd <= slongitude1; + when "1000011" => --67 + u_fd <= slongitude2; + when "1000100" => --68 + u_fd <= slongitude3; + when "1000101" => --69 + u_fd <= slongitude4; + when "1000110" => --70 + u_fd <= sellipsoid1; + when "1000111" => --71 + u_fd <= sellipsoid2; + when "1001000" => --72 + u_fd <= sellipsoid3; + when "1001001" => --73 + u_fd <= sellipsoid4; + when "1001010" => --74 + u_fd <= svelocity1; + when "1001011" => --75 + u_fd <= svelocity2; + when "1001100" => --76 + u_fd <= sheading1; + when "1001101" => --77 + u_fd <= sheading2; + when "1001110" => --78 + u_fd <= sgeometry2; + when "1001111" => --79 + u_fd <= sDOP_type; + when "1010000" => --80 + u_fd <= sNVS; + when "1010001" => --81 + u_fd <= sNTS; + when "1010010" => --82 + u_fd <= ssat_ID1; + when "1010011" => --83 + u_fd <= schtm1; + when "1010100" => --84 + u_fd <= sCNo1; + when "1010101" => --85 + u_fd <= schsf1; + when "1010110" => --86 + u_fd <= ssat_ID2; + when "1010111" => --87 + u_fd <= schtm2; + when "1011000" => --88 + u_fd <= sCNo2; + when "1011001" => --89 + u_fd <= schsf2; + when "1011010" => --90 + u_fd <= ssat_ID3; + when "1011011" => --91 + u_fd <= schtm3; + when "1011100" => --92 + u_fd <= sCNo3; + when "1011101" => --93 + u_fd <= schsf3; + when "1011110" => --94 + u_fd <= ssat_ID4; + when "1011111" => --95 + u_fd <= schtm4; + when "1100000" => --96 + u_fd <= sCNo4; + when "1100001" => --97 + u_fd <= schsf4; + when "1100010" => --98 + u_fd <= ssat_ID5; + when "1100011" => --99 + u_fd <= schtm5; + when "1100100" => --100 + u_fd <= sCNo5; + when "1100101" => --101 + u_fd <= schsf5; + when "1100110" => --102 + u_fd <= ssat_ID6; + when "1100111" => --103 + u_fd <= schtm6; + when "1101000" => --104 + u_fd <= sCNo6; + when "1101001" => --105 + u_fd <= schsf6; + when "1101010" => --106 + u_fd <= ssat_ID7; + when "1101011" => --107 + u_fd <= schtm7; + when "1101100" => --108 + u_fd <= sCNo7; + when "1101101" => --109 + u_fd <= schsf7; + when "1101110" => --110 + u_fd <= ssat_ID8; + when "1101111" => --111 + u_fd <= schtm8; + when "1110000" => --112 + u_fd <= sCNo8; + when "1110001" => --113 + u_fd <= schsf8; + when "1110010" => --114 + u_fd <= srsf; + when "1110011" => --115 + u_fd <= iVerID; + when "1110100" => --116 + u_fd <= iRevID; + when others => + u_fd <= "00000000"; + end case; + count_next <= count - 1; + if ( count = 1 ) then + if ( isAligned = '1' ) then + state_next <= STATE_END_WRITE_ALIGNED; -- don't assert u_pktend + else + state_next <= STATE_END_WRITE_NONALIGNED; -- assert u_pktend to commit small packet + end if; + end if; + else + fifoOp <= FIFO_NOP; + end if; + + when STATE_END_WRITE_ALIGNED => + u_fifoad <= IN_FIFO; -- Writing to FX2LP + fifoOp <= FIFO_NOP; + state_next <= STATE_IDLE; + + when STATE_END_WRITE_NONALIGNED => + u_fifoad <= IN_FIFO; -- Writing to FX2LP + fifoOp <= FIFO_NOP; + u_pktend <= '0'; -- Active: FPGA commits the packet. + state_next <= STATE_IDLE; + + when STATE_READ => + u_fifoad <= OUT_FIFO; -- Reading from FX2LP + if ( u_flagc = '1' ) then + -- A data byte will be available on the next clock edge + case addr is + when "0000000" => + iNextR0 <= u_fd; + when "0000001" => + iNext_T1_msb <= u_fd; + when "0000010" => + iNext_T1_lsb <= u_fd; + when "0000011" => + iNext_T2_msb <= u_fd; + when "0000100" => + iNext_T2_lsb <= u_fd; + when "0000101" => + iNext_T3_msb <= u_fd; + when "0000110" => + iNext_T3_lsb <= u_fd; + when "0000111" => + iNext_subT1_msb <= u_fd; + when "0001000" => + iNext_subT1_lsb <= u_fd; + when "0001001" => + iNext_subT2_msb <= u_fd; + when "0001010" => + iNext_subT2_lsb <= u_fd; + when "0001011" => + iNext_subT3_msb <= u_fd; + when "0001100" => + iNext_subT3_lsb <= u_fd; + when "0001101" => + iNext_HV1_msb <= u_fd; + when "0001110" => + iNext_HV1_lsb <= u_fd; + when "0001111" => + iNext_HV2_msb <= u_fd; + when "0010000" => + iNext_HV2_lsb <= u_fd; + when "0010001" => + iNext_HV3_msb <= u_fd; + when "0010010" => + iNext_HV3_lsb <= u_fd; + when "0010011" => --19 + --Do nothing, this is for c code + when "0010100" => --20 + sNextutcngps <= u_fd; + + when others => + + end case; + count_next <= count - 1; + if ( count = 1 ) then + state_next <= STATE_IDLE; + end if; + end if; + end case; + end process; + + -- Breakout fifoOp + u_sloe <= fifoOp(0); + u_slrd <= fifoOp(1); + u_slwr <= fifoOp(2); + +end sync;