Merge pull request #1172 from antmicro/stepdown

Enabling of STEPDOWN feature on unused IOBs
This commit is contained in:
litghost 2019-12-11 16:48:10 -08:00 committed by GitHub
commit b3fea9c07b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 4683 additions and 3 deletions

View File

@ -3,7 +3,7 @@ set_property design_mode PinPlanning [current_fileset]
open_io_design -name io_1
set fp [open $::env(XRAY_PART)_package_pins.csv w]
puts $fp "pin,site,tile,pin_function"
puts $fp "pin,bank,site,tile,pin_function"
foreach pin [get_package_pins] {
set site [get_sites -quiet -of_object $pin]
if { $site == "" } {
@ -11,7 +11,8 @@ foreach pin [get_package_pins] {
}
set tile [get_tiles -of_object $site]
set pin_bank [get_property BANK [get_package_pins $pin]]
set pin_function [get_property PIN_FUNC [get_package_pins $pin]]
puts $fp "$pin,$site,$tile,$pin_function"
puts $fp "$pin,$pin_bank,$site,$tile,$pin_function"
}

View File

@ -7,6 +7,9 @@ import argparse
import json
import os
import os.path
import csv
from collections import defaultdict
from prjxray import fasm_assembler
from prjxray.db import Database
@ -79,6 +82,18 @@ def find_pudc_b(db):
return pudc_b_tile_site
def get_iob_sites(db, tile_name):
"""
Yields prjxray site names for given IOB tile name
"""
grid = db.grid()
gridinfo = grid.gridinfo_at_tilename(tile_name)
for site in gridinfo.sites:
site_y = int(site[-1]) % 2
yield "IOB_Y{}".format(site_y)
def run(
db_root,
part,
@ -91,6 +106,27 @@ def run(
db = Database(db_root)
assembler = fasm_assembler.FasmAssembler(db)
set_features = set()
def feature_callback(feature):
set_features.add(feature)
assembler.set_feature_callback(feature_callback)
# Build mapping of tile to IO bank
tile_to_bank = {}
bank_to_tile = defaultdict(lambda: set())
if part is not None:
with open(os.path.join(db_root, part + "_package_pins.csv"),
"r") as fp:
reader = csv.DictReader(fp)
package_pins = [l for l in reader]
for pin in package_pins:
bank_to_tile[pin["bank"]].add(pin["tile"])
tile_to_bank[pin["tile"]] = pin["bank"]
if emit_pudc_b_pullup:
pudc_b_in_use = False
pudc_b_tile_site = find_pudc_b(db)
@ -147,6 +183,46 @@ def run(
if missing_features:
raise fasm_assembler.FasmLookupError('\n'.join(missing_features))
if part is not None:
# Make a set of all used IOB tiles and sites. Look for the "STEPDOWN"
# feature. If one is set for an IOB then set it for all other IOBs of
# the same bank.
stepdown_tags = set()
stepdown_banks = set()
used_iob_sites = set()
for set_feature in set_features:
feature = set_feature.feature
parts = feature.split(".")
if len(parts) >= 3:
tile, site, tag = feature.split(".", maxsplit=2)
if "IOB33" in tile:
used_iob_sites.add((
tile,
site,
))
if "STEPDOWN" in tag:
stepdown_banks.add(tile_to_bank[tile])
stepdown_tags.add(tag)
# Set the feature for unused IOBs
missing_features = []
for bank in stepdown_banks:
for tile in bank_to_tile[bank]:
for site in get_iob_sites(db, tile):
if (tile, site) in used_iob_sites:
continue
for tag in stepdown_tags:
feature = "{}.{}.{}".format(tile, site, tag)
for line in fasm.parse_fasm_string(feature):
assembler.add_fasm_line(line, missing_features)
if missing_features:
raise fasm_assembler.FasmLookupError('\n'.join(missing_features))
frames = assembler.get_frames(sparse=sparse)
if debug:

View File

@ -0,0 +1,6 @@
LIOB33.IOB_Y0.SOMETHING.IN 00_01
LIOB33.IOB_Y0.SOMETHING.OUT 00_02
LIOB33.IOB_Y0.SOMETHING.STEPDOWN 00_03
LIOB33.IOB_Y1.SOMETHING.IN 00_01
LIOB33.IOB_Y1.SOMETHING.OUT 00_02
LIOB33.IOB_Y1.SOMETHING.STEPDOWN 00_03

View File

@ -0,0 +1,6 @@
RIOB33.IOB_Y0.SOMETHING.IN 00_01
RIOB33.IOB_Y0.SOMETHING.OUT 00_02
RIOB33.IOB_Y0.SOMETHING.STEPDOWN 00_03
RIOB33.IOB_Y1.SOMETHING.IN 00_01
RIOB33.IOB_Y1.SOMETHING.OUT 00_02
RIOB33.IOB_Y1.SOMETHING.STEPDOWN 00_03

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,655 @@
{
"pips": {},
"sites": [
{
"name": "X0Y0",
"prefix": "IOB",
"site_pins": {
"DIFFI_IN": null,
"DIFFO_IN": null,
"DIFFO_OUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_DIFFO_OUT0"
},
"DIFF_TERM_INT_EN": null,
"I": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_IBUF0"
},
"IBUFDISABLE": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_IBUF_DISABLE0"
},
"INTERMDISABLE": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "LIOB_IN_TERM0"
},
"KEEPER_INT_EN": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_KEEPER_INT_EN_1"
},
"O": {
"cap": "0.001",
"delay": [
"0.001",
"0.001",
"0.001",
"0.001"
],
"wire": "IOB_O0"
},
"O_IN": null,
"O_OUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_O_OUT0"
},
"PADOUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_PADOUT0"
},
"PD_INT_EN": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_PD_INT_EN_1"
},
"PU_INT_EN": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_PU_INT_EN_1"
},
"T": {
"cap": "0.001",
"delay": [
"0.001",
"0.001",
"0.001",
"0.001"
],
"wire": "IOB_T0"
},
"T_IN": null,
"T_OUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_T_OUT0"
}
},
"type": "IOB33",
"x_coord": 0,
"y_coord": 0
}
],
"tile_type": "LIOB33_SING",
"wires": {
"IOB_DIFFI_IN0": null,
"IOB_DIFFO_IN0": null,
"IOB_DIFFO_OUT0": null,
"IOB_DIFF_TERM_INT_EN_STUB": null,
"IOB_IBUF0": null,
"IOB_IBUF_DISABLE0": null,
"IOB_KEEPER_INT_EN_1": null,
"IOB_O0": null,
"IOB_O_IN0": null,
"IOB_O_OUT0": null,
"IOB_PADOUT0": null,
"IOB_PD_INT_EN_1": null,
"IOB_PU_INT_EN_1": null,
"IOB_T0": null,
"IOB_T_IN0": null,
"IOB_T_OUT0": null,
"LIOB_EE2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE2BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE2BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE2BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE2BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4B0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4B1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4B2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4B3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EE4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EL1BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EL1BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EL1BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_EL1BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_ER1BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_ER1BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_ER1BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_ER1BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_IN_TERM0": null,
"LIOB_LH10_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH11_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH12_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH1_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH2_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH3_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH4_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH5_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH6_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH7_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH8_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_LH9_0": {
"cap": "194.420",
"res": "48.990"
},
"LIOB_NE2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NE4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_NW4END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SE4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_SW4END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WL1END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WL1END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WL1END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WL1END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WR1END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WR1END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WR1END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WR1END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW2END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4B0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4B1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4B2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4B3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"LIOB_WW4END3_0": {
"cap": "150.000",
"res": "1024.400"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,655 @@
{
"pips": {},
"sites": [
{
"name": "X0Y0",
"prefix": "IOB",
"site_pins": {
"DIFFI_IN": null,
"DIFFO_IN": null,
"DIFFO_OUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_DIFFO_OUT0"
},
"DIFF_TERM_INT_EN": null,
"I": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_IBUF0"
},
"IBUFDISABLE": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_IBUF_DISABLE0"
},
"INTERMDISABLE": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "LIOB_IN_TERM0"
},
"KEEPER_INT_EN": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_KEEPER_INT_EN_1"
},
"O": {
"cap": "0.001",
"delay": [
"0.001",
"0.001",
"0.001",
"0.001"
],
"wire": "IOB_O0"
},
"O_IN": null,
"O_OUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_O_OUT0"
},
"PADOUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_PADOUT0"
},
"PD_INT_EN": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_PD_INT_EN_1"
},
"PU_INT_EN": {
"cap": "0.000",
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"wire": "IOB_PU_INT_EN_1"
},
"T": {
"cap": "0.001",
"delay": [
"0.001",
"0.001",
"0.001",
"0.001"
],
"wire": "IOB_T0"
},
"T_IN": null,
"T_OUT": {
"delay": [
"0.000",
"0.000",
"0.000",
"0.000"
],
"res": "0.0",
"wire": "IOB_T_OUT0"
}
},
"type": "IOB33",
"x_coord": 0,
"y_coord": 0
}
],
"tile_type": "RIOB33_SING",
"wires": {
"IOB_DIFFI_IN0": null,
"IOB_DIFFO_IN0": null,
"IOB_DIFFO_OUT0": null,
"IOB_DIFF_TERM_INT_EN_STUB": null,
"IOB_IBUF0": null,
"IOB_IBUF_DISABLE0": null,
"IOB_KEEPER_INT_EN_1": null,
"IOB_O0": null,
"IOB_O_IN0": null,
"IOB_O_OUT0": null,
"IOB_PADOUT0": null,
"IOB_PD_INT_EN_1": null,
"IOB_PU_INT_EN_1": null,
"IOB_T0": null,
"IOB_T_IN0": null,
"IOB_T_OUT0": null,
"LIOB_IN_TERM0": null,
"RIOB_EE2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE2BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE2BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE2BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE2BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4B0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4B1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4B2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4B3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EE4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EL1BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EL1BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EL1BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_EL1BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_ER1BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_ER1BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_ER1BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_ER1BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_LH10_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH11_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH12_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH1_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH2_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH3_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH4_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH5_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH6_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH7_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH8_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_LH9_0": {
"cap": "194.420",
"res": "48.990"
},
"RIOB_NE2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NE4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_NW4END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4BEG0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4BEG1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4BEG2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4BEG3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SE4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_SW4END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WL1END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WL1END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WL1END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WL1END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WR1END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WR1END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WR1END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WR1END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW2END3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4A0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4A1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4A2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4A3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4B0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4B1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4B2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4B3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4C0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4C1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4C2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4C3_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4END0_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4END1_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4END2_0": {
"cap": "150.000",
"res": "1024.400"
},
"RIOB_WW4END3_0": {
"cap": "150.000",
"res": "1024.400"
}
}
}

View File

@ -54,5 +54,141 @@
"TIEOFF_X11Y102": "TIEOFF"
},
"type": "INT_L"
},
"LIOB33_SING_X0Y0": {
"bits": {
"CLB_IO_CLK": {
"alias": {
"sites": {
"IOB33_Y0": "IOB33_Y0"
},
"start_offset": 2,
"type": "LIOB33"
},
"baseaddr": "0x00400000",
"frames": 42,
"offset": 0,
"words": 2
}
},
"grid_x": 0,
"grid_y": 155,
"pin_functions": {
"IOB_X0Y0": "IO_25_14"
},
"sites": {
"IOB_X0Y0": "IOB33"
},
"type": "LIOB33_SING"
},
"LIOB33_X0Y1": {
"bits": {
"CLB_IO_CLK": {
"baseaddr": "0x00400000",
"frames": 42,
"offset": 2,
"words": 4
}
},
"grid_x": 0,
"grid_y": 154,
"pin_functions": {
"IOB_X0Y1": "IO_L24N_T3_A00_D16_14",
"IOB_X0Y2": "IO_L24P_T3_A01_D17_14"
},
"sites": {
"IOB_X0Y1": "IOB33S",
"IOB_X0Y2": "IOB33M"
},
"type": "LIOB33"
},
"LIOB33_X0Y3": {
"bits": {
"CLB_IO_CLK": {
"baseaddr": "0x00400000",
"frames": 42,
"offset": 6,
"words": 4
}
},
"grid_x": 0,
"grid_y": 152,
"pin_functions": {
"IOB_X0Y3": "IO_L23N_T3_A02_D18_14",
"IOB_X0Y4": "IO_L23P_T3_A03_D19_14"
},
"sites": {
"IOB_X0Y3": "IOB33S",
"IOB_X0Y4": "IOB33M"
},
"type": "LIOB33"
},
"RIOB33_SING_X43Y0": {
"bits": {
"CLB_IO_CLK": {
"alias": {
"sites": {
"IOB33_Y0": "IOB33_Y0"
},
"start_offset": 2,
"type": "RIOB33"
},
"baseaddr": "0x00401580",
"frames": 42,
"offset": 0,
"words": 2
}
},
"grid_x": 114,
"grid_y": 155,
"pin_functions": {
"IOB_X1Y0": "IO_25_34"
},
"sites": {
"IOB_X1Y0": "IOB33"
},
"type": "RIOB33_SING"
},
"RIOB33_X43Y1": {
"bits": {
"CLB_IO_CLK": {
"baseaddr": "0x00401580",
"frames": 42,
"offset": 2,
"words": 4
}
},
"grid_x": 114,
"grid_y": 154,
"pin_functions": {
"IOB_X1Y1": "IO_L24N_T3_34",
"IOB_X1Y2": "IO_L24P_T3_34"
},
"sites": {
"IOB_X1Y1": "IOB33S",
"IOB_X1Y2": "IOB33M"
},
"type": "RIOB33"
},
"RIOB33_X43Y3": {
"bits": {
"CLB_IO_CLK": {
"baseaddr": "0x00401580",
"frames": 42,
"offset": 6,
"words": 4
}
},
"grid_x": 114,
"grid_y": 152,
"pin_functions": {
"IOB_X1Y3": "IO_L23N_T3_34",
"IOB_X1Y4": "IO_L23P_T3_34"
},
"sites": {
"IOB_X1Y3": "IOB33S",
"IOB_X1Y4": "IOB33M"
},
"type": "RIOB33"
}
}

View File

@ -0,0 +1,11 @@
pin,bank,site,tile,pin_function
U14,99,IOB_X0Y0,LIOB33_SING_X0Y0,IO_25_14
V13,99,IOB_X0Y2,LIOB33_X0Y1,IO_L24P_T3_A01_D17_14
V14,99,IOB_X0Y1,LIOB33_X0Y1,IO_L24N_T3_A00_D16_14
U15,99,IOB_X0Y4,LIOB33_X0Y3,IO_L23P_T3_A03_D19_14
U16,99,IOB_X0Y3,LIOB33_X0Y3,IO_L23N_T3_A02_D18_14
X00,66,IOB_X0Y0,RIOB33_SING_X43Y0,whatever
X01,66,IOB_X0Y2,RIOB33_X43Y1,whatever
X02,66,IOB_X0Y1,RIOB33_X43Y1,whatever
X03,66,IOB_X0Y4,RIOB33_X43Y3,anything
X04,66,IOB_X0Y3,RIOB33_X43Y3,not_important
1 pin bank site tile pin_function
2 U14 99 IOB_X0Y0 LIOB33_SING_X0Y0 IO_25_14
3 V13 99 IOB_X0Y2 LIOB33_X0Y1 IO_L24P_T3_A01_D17_14
4 V14 99 IOB_X0Y1 LIOB33_X0Y1 IO_L24N_T3_A00_D16_14
5 U15 99 IOB_X0Y4 LIOB33_X0Y3 IO_L23P_T3_A03_D19_14
6 U16 99 IOB_X0Y3 LIOB33_X0Y3 IO_L23N_T3_A02_D18_14
7 X00 66 IOB_X0Y0 RIOB33_SING_X43Y0 whatever
8 X01 66 IOB_X0Y2 RIOB33_X43Y1 whatever
9 X02 66 IOB_X0Y1 RIOB33_X43Y1 whatever
10 X03 66 IOB_X0Y4 RIOB33_X43Y3 anything
11 X04 66 IOB_X0Y3 RIOB33_X43Y3 not_important

View File

@ -0,0 +1,5 @@
bit_00400000_002_01
bit_00400000_002_03
bit_00400000_006_03
bit_00400000_099_03
bit_00401580_002_02

View File

@ -0,0 +1,3 @@
LIOB33_X0Y1.IOB_Y0.SOMETHING.IN
LIOB33_X0Y1.IOB_Y0.SOMETHING.STEPDOWN
RIOB33_X43Y1.IOB_Y1.SOMETHING.OUT

View File

@ -0,0 +1,5 @@
bit_00400000_006_01
bit_00401580_002_03
bit_00401580_006_03
bit_00401580_099_02
bit_00401580_099_03

View File

@ -0,0 +1,3 @@
RIOB33_SING_X43Y0.IOB_Y0.SOMETHING.OUT
RIOB33_SING_X43Y0.IOB_Y0.SOMETHING.STEPDOWN
LIOB33_X0Y3.IOB_Y0.SOMETHING.IN

View File

@ -70,7 +70,7 @@ class TestStringMethods(unittest.TestCase):
fout = StringIO()
fasm2frames.run(
self.filename_test_data('db'), None, fin.name, fout, **kw)
self.filename_test_data('db'), "xc7", fin.name, fout, **kw)
return fout.getvalue()
@ -167,6 +167,14 @@ CLBLM_L_X10Y102.SLICEM_X0.SRUSEDMUX 1
# It will still be decent size though since even sparse occupies all columns in that area
self.assertGreaterEqual(len(fout_full_txt), len(fout_sparse_txt) * 4)
def test_stepdown_1(self):
self.bitread_frm_equals(
'iob/liob_stepdown.fasm', 'iob/liob_stepdown.bits')
def test_stepdown_2(self):
self.bitread_frm_equals(
'iob/riob_stepdown.fasm', 'iob/riob_stepdown.bits')
if __name__ == '__main__':
unittest.main()