ice40: Add UltraPlus tiles to database
Signed-off-by: David Shah <davey1576@gmail.com>
This commit is contained in:
parent
b4764031d9
commit
cf78f1b0e4
@ -166,6 +166,11 @@ enum TileType : uint32_t
|
|||||||
TILE_IO = 2,
|
TILE_IO = 2,
|
||||||
TILE_RAMB = 3,
|
TILE_RAMB = 3,
|
||||||
TILE_RAMT = 4,
|
TILE_RAMT = 4,
|
||||||
|
TILE_DSP0 = 5,
|
||||||
|
TILE_DSP1 = 6,
|
||||||
|
TILE_DSP2 = 7,
|
||||||
|
TILE_DSP3 = 8,
|
||||||
|
TILE_IPCON = 9
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ConfigBitPOD
|
struct ConfigBitPOD
|
||||||
|
@ -370,6 +370,21 @@ void write_asc(const Context *ctx, std::ostream &out)
|
|||||||
case TILE_RAMT:
|
case TILE_RAMT:
|
||||||
out << ".ramt_tile";
|
out << ".ramt_tile";
|
||||||
break;
|
break;
|
||||||
|
case TILE_DSP0:
|
||||||
|
out << ".dsp0_tile";
|
||||||
|
break;
|
||||||
|
case TILE_DSP1:
|
||||||
|
out << ".dsp1_tile";
|
||||||
|
break;
|
||||||
|
case TILE_DSP2:
|
||||||
|
out << ".dsp2_tile";
|
||||||
|
break;
|
||||||
|
case TILE_DSP3:
|
||||||
|
out << ".dsp3_tile";
|
||||||
|
break;
|
||||||
|
case TILE_IPCON:
|
||||||
|
out << ".ipcon_tile";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
@ -36,10 +36,6 @@ wire_names = dict()
|
|||||||
wire_names_r = dict()
|
wire_names_r = dict()
|
||||||
wire_xy = dict()
|
wire_xy = dict()
|
||||||
|
|
||||||
num_tile_types = 5
|
|
||||||
tile_sizes = {_: (0, 0) for _ in range(num_tile_types)}
|
|
||||||
tile_bits = [[] for _ in range(num_tile_types)]
|
|
||||||
|
|
||||||
cbit_re = re.compile(r'B(\d+)\[(\d+)\]')
|
cbit_re = re.compile(r'B(\d+)\[(\d+)\]')
|
||||||
|
|
||||||
portpins = dict()
|
portpins = dict()
|
||||||
@ -69,6 +65,11 @@ tiletypes["LOGIC"] = 1
|
|||||||
tiletypes["IO"] = 2
|
tiletypes["IO"] = 2
|
||||||
tiletypes["RAMB"] = 3
|
tiletypes["RAMB"] = 3
|
||||||
tiletypes["RAMT"] = 4
|
tiletypes["RAMT"] = 4
|
||||||
|
tiletypes["DSP0"] = 5
|
||||||
|
tiletypes["DSP1"] = 6
|
||||||
|
tiletypes["DSP2"] = 7
|
||||||
|
tiletypes["DSP3"] = 8
|
||||||
|
tiletypes["IPCON"] = 9
|
||||||
|
|
||||||
wiretypes["LOCAL"] = 1
|
wiretypes["LOCAL"] = 1
|
||||||
wiretypes["GLOBAL"] = 2
|
wiretypes["GLOBAL"] = 2
|
||||||
@ -187,6 +188,16 @@ def pipdelay(src, dst):
|
|||||||
# print(src, dst, src_type, dst_type, file=sys.stderr)
|
# print(src, dst, src_type, dst_type, file=sys.stderr)
|
||||||
assert 0
|
assert 0
|
||||||
|
|
||||||
|
|
||||||
|
def init_tiletypes(device):
|
||||||
|
global num_tile_types, tile_sizes, tile_bits
|
||||||
|
if device == "5k":
|
||||||
|
num_tile_types = 10
|
||||||
|
else:
|
||||||
|
num_tile_types = 5
|
||||||
|
tile_sizes = {_: (0, 0) for _ in range(num_tile_types)}
|
||||||
|
tile_bits = [[] for _ in range(num_tile_types)]
|
||||||
|
|
||||||
with open(sys.argv[1], "r") as f:
|
with open(sys.argv[1], "r") as f:
|
||||||
mode = None
|
mode = None
|
||||||
|
|
||||||
@ -198,6 +209,7 @@ with open(sys.argv[1], "r") as f:
|
|||||||
|
|
||||||
if line[0] == ".device":
|
if line[0] == ".device":
|
||||||
dev_name = line[1]
|
dev_name = line[1]
|
||||||
|
init_tiletypes(dev_name)
|
||||||
dev_width = int(line[2])
|
dev_width = int(line[2])
|
||||||
dev_height = int(line[3])
|
dev_height = int(line[3])
|
||||||
num_wires = int(line[4])
|
num_wires = int(line[4])
|
||||||
@ -237,6 +249,31 @@ with open(sys.argv[1], "r") as f:
|
|||||||
mode = None
|
mode = None
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp0_tile":
|
||||||
|
tiles[(int(line[1]), int(line[2]))] = "dsp0"
|
||||||
|
mode = None
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp1_tile":
|
||||||
|
tiles[(int(line[1]), int(line[2]))] = "dsp1"
|
||||||
|
mode = None
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp2_tile":
|
||||||
|
tiles[(int(line[1]), int(line[2]))] = "dsp2"
|
||||||
|
mode = None
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp3_tile":
|
||||||
|
tiles[(int(line[1]), int(line[2]))] = "dsp3"
|
||||||
|
mode = None
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".ipcon_tile":
|
||||||
|
tiles[(int(line[1]), int(line[2]))] = "ipcon"
|
||||||
|
mode = None
|
||||||
|
continue
|
||||||
|
|
||||||
if line[0] == ".logic_tile_bits":
|
if line[0] == ".logic_tile_bits":
|
||||||
mode = ("bits", 1)
|
mode = ("bits", 1)
|
||||||
tile_sizes[1] = (int(line[1]), int(line[2]))
|
tile_sizes[1] = (int(line[1]), int(line[2]))
|
||||||
@ -257,6 +294,31 @@ with open(sys.argv[1], "r") as f:
|
|||||||
tile_sizes[4] = (int(line[1]), int(line[2]))
|
tile_sizes[4] = (int(line[1]), int(line[2]))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp0_tile_bits":
|
||||||
|
mode = ("bits", 5)
|
||||||
|
tile_sizes[5] = (int(line[1]), int(line[2]))
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp1_tile_bits":
|
||||||
|
mode = ("bits", 6)
|
||||||
|
tile_sizes[6] = (int(line[1]), int(line[2]))
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp2_tile_bits":
|
||||||
|
mode = ("bits", 7)
|
||||||
|
tile_sizes[7] = (int(line[1]), int(line[2]))
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".dsp3_tile_bits":
|
||||||
|
mode = ("bits", 8)
|
||||||
|
tile_sizes[8] = (int(line[1]), int(line[2]))
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0] == ".ipcon_tile_bits":
|
||||||
|
mode = ("bits", 9)
|
||||||
|
tile_sizes[9] = (int(line[1]), int(line[2]))
|
||||||
|
continue
|
||||||
|
|
||||||
if line[0] == ".ieren":
|
if line[0] == ".ieren":
|
||||||
mode = ("ieren",)
|
mode = ("ieren",)
|
||||||
continue
|
continue
|
||||||
|
Loading…
Reference in New Issue
Block a user