mirror of https://github.com/YosysHQ/nextpnr.git
145 lines
8.7 KiB
C++
145 lines
8.7 KiB
C++
/*
|
|
* nextpnr -- Next Generation Place and Route
|
|
*
|
|
* Copyright (C) 2019-2023 gatecat <gatecat@ds0.me>
|
|
* Copyright (C) 2023 Hans Baier <hansfbaier@gmail.com>
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*
|
|
*/
|
|
|
|
#include "nextpnr.h"
|
|
#include "xilinx.h"
|
|
|
|
NEXTPNR_NAMESPACE_BEGIN
|
|
|
|
namespace Xc7MMCM {
|
|
extern const uint16_t filter_lookup_low[] = {
|
|
0b0010111100, // 1
|
|
0b0010111100, // 2
|
|
0b0010111100, // 3
|
|
0b0010111100, // 4
|
|
0b0010011100, // ....
|
|
0b0010101100, 0b0010110100, 0b0010001100, 0b0010010100, 0b0010010100, 0b0010100100, 0b0010111000, 0b0010111000,
|
|
0b0010111000, 0b0010111000, 0b0010000100, 0b0010000100, 0b0010000100, 0b0010011000, 0b0010011000, 0b0010011000,
|
|
0b0010011000, 0b0010011000, 0b0010011000, 0b0010011000, 0b0010101000, 0b0010101000, 0b0010101000, 0b0010101000,
|
|
0b0010101000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000,
|
|
0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000, 0b0010110000,
|
|
0b0010110000, 0b0010110000, 0b0010001000, 0b0010001000, 0b0010001000, 0b0010001000, 0b0010001000, 0b0010001000,
|
|
0b0010001000, 0b0010001000, 0b0010001000, 0b0010001000, 0b0010001000, 0b0010001000,
|
|
0b0010001000, // ....
|
|
0b0010001000, // 61
|
|
0b0010001000, // 62
|
|
0b0010001000, // 63
|
|
0b0010001000 // 64
|
|
};
|
|
|
|
extern const uint16_t filter_lookup_low_ss[] = {
|
|
0b0010111111, // 1
|
|
0b0010111111, // 2
|
|
0b0010111111, // 3
|
|
0b0010111111, // 4
|
|
0b0010011111, // ....
|
|
0b0010101111, 0b0010110111, 0b0010001111, 0b0010010111, 0b0010010111, 0b0010100111, 0b0010111011, 0b0010111011,
|
|
0b0010111011, 0b0010111011, 0b0010000111, 0b0010000111, 0b0010000111, 0b0010011011, 0b0010011011, 0b0010011011,
|
|
0b0010011011, 0b0010011011, 0b0010011011, 0b0010011011, 0b0010101011, 0b0010101011, 0b0010101011, 0b0010101011,
|
|
0b0010101011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011,
|
|
0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011, 0b0010110011,
|
|
0b0010110011, 0b0010110011, 0b0010001011, 0b0010001011, 0b0010001011, 0b0010001011, 0b0010001011, 0b0010001011,
|
|
0b0010001011, 0b0010001011, 0b0010001011, 0b0010001011, 0b0010001011, 0b0010001011,
|
|
0b0010001011, // ....
|
|
0b0010001011, // 61
|
|
0b0010001011, // 62
|
|
0b0010001011, // 63
|
|
0b0010001011 // 64
|
|
};
|
|
|
|
extern const uint16_t filter_lookup_high[] = {
|
|
0b0010111100, // 1
|
|
0b0100111100, // 2
|
|
0b0101101100, // 3
|
|
0b0111011100, // 4
|
|
0b1101011100, // ....
|
|
0b1110101100, 0b1110110100, 0b1111001100, 0b1110010100, 0b1111010100, 0b1111100100, 0b1101000100, 0b1111100100,
|
|
0b1111100100, 0b1111100100, 0b1111100100, 0b1111010100, 0b1111010100, 0b1100000100, 0b1100000100, 0b1100000100,
|
|
0b0101110000, 0b0101110000, 0b0101110000, 0b0101110000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000,
|
|
0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000,
|
|
0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0010100000, 0b0010100000, 0b0010100000, 0b0010100000,
|
|
0b0010100000, 0b0111000100, 0b0111000100, 0b0100110000, 0b0100110000, 0b0100110000, 0b0100110000, 0b0110000100,
|
|
0b0110000100, 0b0101011000, 0b0101011000, 0b0101011000, 0b0010010000, 0b0010010000,
|
|
0b0010010000, // ....
|
|
0b0010010000, // 61
|
|
0b0100101000, // 62
|
|
0b0011110000, // 63
|
|
0b0011110000 // 64
|
|
};
|
|
|
|
extern const uint16_t filter_lookup_optimized[] = {
|
|
0b0010111100, // 1
|
|
0b0100111100, // 2
|
|
0b0101101100, // 3
|
|
0b0111011100, // 4
|
|
0b1101011100, // ....
|
|
0b1110101100, 0b1110110100, 0b1111001100, 0b1110010100, 0b1111010100, 0b1111100100, 0b1101000100, 0b1111100100,
|
|
0b1111100100, 0b1111100100, 0b1111100100, 0b1111010100, 0b1111010100, 0b1100000100, 0b1100000100, 0b1100000100,
|
|
0b0101110000, 0b0101110000, 0b0101110000, 0b0101110000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000,
|
|
0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000,
|
|
0b0011010000, 0b0011010000, 0b0011010000, 0b0011010000, 0b0010100000, 0b0010100000, 0b0010100000, 0b0010100000,
|
|
0b0010100000, 0b0111000100, 0b0111000100, 0b0100110000, 0b0100110000, 0b0100110000, 0b0100110000, 0b0110000100,
|
|
0b0110000100, 0b0101011000, 0b0101011000, 0b0101011000, 0b0010010000, 0b0010010000,
|
|
0b0010010000, // ....
|
|
0b0010010000, // 61
|
|
0b0100101000, // 62
|
|
0b0011110000, // 63
|
|
0b0011110000 // 64
|
|
};
|
|
|
|
extern const int64_t lk_table[] = {
|
|
// LockRefDly(5) LockFBDly(5) LockCnt(10) LockSatHigh(10) UnlockCnt(10)
|
|
0b0011000110111110100011111010010000000001UL, 0b0011000110111110100011111010010000000001UL,
|
|
0b0100001000111110100011111010010000000001UL, 0b0101101011111110100011111010010000000001UL,
|
|
0b0111001110111110100011111010010000000001UL, 0b1000110001111110100011111010010000000001UL,
|
|
0b1001110011111110100011111010010000000001UL, 0b1011010110111110100011111010010000000001UL,
|
|
0b1100111001111110100011111010010000000001UL, 0b1110011100111110100011111010010000000001UL,
|
|
0b1111111111111000010011111010010000000001UL, 0b1111111111110011100111111010010000000001UL,
|
|
0b1111111111101110111011111010010000000001UL, 0b1111111111101011110011111010010000000001UL,
|
|
0b1111111111101000101011111010010000000001UL, 0b1111111111100111000111111010010000000001UL,
|
|
0b1111111111100011111111111010010000000001UL, 0b1111111111100010011011111010010000000001UL,
|
|
0b1111111111100000110111111010010000000001UL, 0b1111111111011111010011111010010000000001UL,
|
|
0b1111111111011101101111111010010000000001UL, 0b1111111111011100001011111010010000000001UL,
|
|
0b1111111111011010100111111010010000000001UL, 0b1111111111011001000011111010010000000001UL,
|
|
0b1111111111011001000011111010010000000001UL, 0b1111111111010111011111111010010000000001UL,
|
|
0b1111111111010101111011111010010000000001UL, 0b1111111111010101111011111010010000000001UL,
|
|
0b1111111111010100010111111010010000000001UL, 0b1111111111010100010111111010010000000001UL,
|
|
0b1111111111010010110011111010010000000001UL, 0b1111111111010010110011111010010000000001UL,
|
|
0b1111111111010010110011111010010000000001UL, 0b1111111111010001001111111010010000000001UL,
|
|
0b1111111111010001001111111010010000000001UL, 0b1111111111010001001111111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL, 0b1111111111001111101011111010010000000001UL,
|
|
0b1111111111001111101011111010010000000001UL};
|
|
|
|
} // namespace Xc7MMCM
|
|
|
|
NEXTPNR_NAMESPACE_END
|