Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/kokoro/continuous-db-kintexus.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Format: //devtools/kokoro/config/proto/build.proto

build_file: "symbiflow-prjuray-continuous-db-kintexus/.github/kokoro/nothing.sh"
build_file: "symbiflow-prjuray-continuous-db-kintexus/.github/kokoro/db-full.sh"

timeout_mins: 4320

Expand Down
3 changes: 0 additions & 3 deletions .github/kokoro/nothing.sh

This file was deleted.

2 changes: 1 addition & 1 deletion .github/kokoro/presubmit-db-kintexus.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Format: //devtools/kokoro/config/proto/build.proto

build_file: "symbiflow-prjuray-presubmit-db-kintexus/.github/kokoro/nothing.sh"
build_file: "symbiflow-prjuray-presubmit-db-kintexus/.github/kokoro/db-full.sh"

timeout_mins: 4320

Expand Down
2 changes: 1 addition & 1 deletion fuzzers/001-part-yaml/Makefile.specimen
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
part.yaml: design.perframecrc.bit
${URAY_TOOLS_DIR}/gen_part_base_yaml $< -f -architecture UltraScalePlus > $@
${URAY_TOOLS_DIR}/gen_part_base_yaml $< -f -architecture ${URAY_ARCH} > $@

design.bit design.perframecrc.bit: ../../generate.tcl
${URAY_VIVADO} -mode batch -source ../../generate.tcl
13 changes: 8 additions & 5 deletions fuzzers/002-tilegrid/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,15 @@ BUILD_FOLDER=build_${URAY_PART}
BUILD_DIR=$(FUZDIR)/$(BUILD_FOLDER)
TILEGRID_TDB_DEPENDENCIES=
TILEGRID_TDB_DEPENDENCIES += cle/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
clem_r/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
clel_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
clem_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
clem_r/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
rclk_int/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
rclk_other/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
bram/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
bram_block/$(BUILD_FOLDER)/segbits_tilegrid.tdb

ifeq (${URAY_ARCH}, UltraScalePlus)
TILEGRID_TDB_DEPENDENCIES += rclk_other/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
rclk_hdio/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
rclk_pss_alto/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
cmt_right/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
Expand All @@ -26,9 +30,8 @@ TILEGRID_TDB_DEPENDENCIES += cle/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
hpio_right/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
rclk_dsp_intf_clkbuf/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
ps8_intf/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
bitslice_tiles/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
bram/$(BUILD_FOLDER)/segbits_tilegrid.tdb \
bram_block/$(BUILD_FOLDER)/segbits_tilegrid.tdb
bitslice_tiles/$(BUILD_FOLDER)/segbits_tilegrid.tdb
endif

GENERATE_FULL_ARGS=

Expand Down
72 changes: 44 additions & 28 deletions fuzzers/002-tilegrid/add_tdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@
import util as localutil
import os

BITS_PER_WORD = 16
if os.getenv('URAY_ARCH') == 'UltraScale':
BITS_PER_WORD = 32
else:
BITS_PER_WORD = 16


def check_frames(tagstr, addrlist):
Expand Down Expand Up @@ -60,7 +63,8 @@ def load_db(fn):
for part in tparts[1:]:
# Auto align the frame address to the next lowest multiple of 0x100.
if part == 'AUTO_FRAME':
frame -= (frame % 0x100)
frame -= (frame % (
0x80 if os.getenv('URAY_ARCH') == 'UltraScale' else 0x100))
continue

k, v = part.split(':')
Expand All @@ -79,50 +83,62 @@ def load_db(fn):
if not bitidx_up:
bitidx = 0
assert bitidx == 0, l
assert frame % 0x100 == 0, "Unaligned frame at 0x%08X" % frame
assert frame % (0x80 if os.getenv('URAY_ARCH') == 'UltraScale' else
0x100) == 0, "Unaligned frame at 0x%08X" % frame
yield (tile, frame, wordidx)


def run(fn_in, fn_out, verbose=False):
database = json.load(open(fn_in, "r"))

cle_frames, cle_words = localutil.get_entry('CLE', 'CLB_IO_CLK')
int_frames, int_words = localutil.get_entry('INT', 'CLB_IO_CLK')
rclk_frames, rclk_words = localutil.get_entry('RCLK_INT_L', 'CLB_IO_CLK')
ps8_intf_frames, ps8_intf_words = localutil.get_entry(
"PS8_INTF", "CLB_IO_CLK")
xiphy_frames, xiphy_words = localutil.get_entry("XIPHY", "CLB_IO_CLK")
bram_frames, bram_words = localutil.get_entry('BRAM', 'CLB_IO_CLK')
bram_block_frames, bram_block_words = localutil.get_entry(
'BRAM', 'BRAM_BLOCK')
if os.getenv('URAY_ARCH') == 'UltraScalePlus':
ps8_intf_frames, ps8_intf_words = localutil.get_entry(
"PS8_INTF", "CLB_IO_CLK")

build_dir = "build_" + os.getenv('URAY_PART')
tdb_fns = [
("cle/" + build_dir + "/segbits_tilegrid.tdb", 16, 3),
("clem_r/" + build_dir + "/segbits_tilegrid.tdb", 16, 3),
("cle/" + build_dir + "/segbits_tilegrid.tdb", cle_frames, cle_words),
("clem_r/" + build_dir + "/segbits_tilegrid.tdb", cle_frames,
cle_words),
("clel_int/" + build_dir + "/segbits_tilegrid.tdb", int_frames,
int_words),
("clem_int/" + build_dir + "/segbits_tilegrid.tdb", int_frames,
int_words),
("rclk_int/" + build_dir + "/segbits_tilegrid.tdb", rclk_frames,
rclk_words),
("rclk_other/" + build_dir + "/segbits_tilegrid.tdb", rclk_frames,
rclk_words),
("rclk_hdio/" + build_dir + "/segbits_tilegrid.tdb", rclk_frames,
rclk_words),
("rclk_dsp_intf_clkbuf/" + build_dir + "/segbits_tilegrid.tdb",
rclk_frames, rclk_words),
("rclk_pss_alto/" + build_dir + "/segbits_tilegrid.tdb", rclk_frames,
rclk_words),
("intf_r_pcie4_hdio/" + build_dir + "/segbits_tilegrid.tdb", None, 3),
("ps8_intf/" + build_dir + "/segbits_tilegrid.tdb", ps8_intf_frames,
ps8_intf_words),
("cmt_right/" + build_dir + "/segbits_tilegrid.tdb", None, 10),
("pss_alto/" + build_dir + "/segbits_tilegrid.tdb", None, 93 * 2),
("hdio_top_right/" + build_dir + "/segbits_tilegrid.tdb", None, 87),
("hdio_bot_right/" + build_dir + "/segbits_tilegrid.tdb", None, 87),
("hpio_right/" + build_dir + "/segbits_tilegrid.tdb", None, 85),
("bitslice_tiles/" + build_dir + "/segbits_tilegrid.tdb", xiphy_frames,
xiphy_words),
("bram/" + build_dir + "/segbits_tilegrid.tdb", None, 15),
("bram_block/" + build_dir + "/segbits_tilegrid.tdb", None, 15),
("bram/" + build_dir + "/segbits_tilegrid.tdb", bram_frames,
bram_words),
("bram_block/" + build_dir + "/segbits_tilegrid.tdb",
bram_block_frames, bram_block_words),
]
if os.getenv('URAY_ARCH') == 'UltraScalePlus':
tdb_fns += [
("rclk_other/" + build_dir + "/segbits_tilegrid.tdb", rclk_frames,
rclk_words),
("rclk_hdio/" + build_dir + "/segbits_tilegrid.tdb", rclk_frames,
rclk_words),
("rclk_dsp_intf_clkbuf/" + build_dir + "/segbits_tilegrid.tdb",
rclk_frames, rclk_words),
("rclk_pss_alto/" + build_dir + "/segbits_tilegrid.tdb",
rclk_frames, rclk_words),
("intf_r_pcie4_hdio/" + build_dir + "/segbits_tilegrid.tdb", 36,
3),
("ps8_intf/" + build_dir + "/segbits_tilegrid.tdb",
ps8_intf_frames, ps8_intf_words),
("cmt_right/" + build_dir + "/segbits_tilegrid.tdb", 36, 10),
("pss_alto/" + build_dir + "/segbits_tilegrid.tdb", 36, 93 * 2),
("hdio_top_right/" + build_dir + "/segbits_tilegrid.tdb", 76, 93),
("hdio_bot_right/" + build_dir + "/segbits_tilegrid.tdb", 76, 93),
("hpio_right/" + build_dir + "/segbits_tilegrid.tdb", 76, 85),
("bitslice_tiles/" + build_dir + "/segbits_tilegrid.tdb",
xiphy_frames, xiphy_words),
]

tile_frames_map = localutil.TileFrames()
for (tdb_fn, frames, words) in tdb_fns:
Expand Down
4 changes: 4 additions & 0 deletions fuzzers/002-tilegrid/bram/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
# SPDX-License-Identifier: ISC

N ?= 12
ifeq (${URAY_DATABASE}, kintexus)
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 2 --dframe 03
else
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 3 --dframe 04
endif
include ../fuzzaddr/common.mk

5 changes: 5 additions & 0 deletions fuzzers/002-tilegrid/cle/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@
#
# SPDX-License-Identifier: ISC

ifeq (${URAY_DATABASE}, kintexus)
N ?= 24
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 0 --dframe 0
else
N ?= 15
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 0 --dframe 0B --filter_words 46
endif
include ../fuzzaddr/common.mk

2 changes: 1 addition & 1 deletion fuzzers/002-tilegrid/cle/top.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def gen_sites():
for tile_name in sorted(grid.tiles()):
loc = grid.loc_of_tilename(tile_name)
gridinfo = grid.gridinfo_at_loc(loc)
if gridinfo.tile_type in ['CLEL_L', 'CLEL_R', 'CLEM']:
if gridinfo.tile_type in ['CLEL_L', 'CLEL_R', 'CLEM', 'CLE_M']:
site_name = sorted(gridinfo.sites.keys())[0]
yield tile_name, site_name

Expand Down
6 changes: 6 additions & 0 deletions fuzzers/002-tilegrid/clel_int/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@
#
# SPDX-License-Identifier: ISC

ifeq (${URAY_DATABASE}, kintexus)
N ?= 48
SEGMATCH_ARGS?=-c 40
GENERATE_ARGS?=--oneval 0 --design params.csv --dword 1 --auto_frame --filter_frames 2D,2F
else
N ?= 20
GENERATE_ARGS?=--oneval 0 --design params.csv --dword 0 --dframe 48 --filter_words 45,46
endif
include ../fuzzaddr/common.mk

4 changes: 4 additions & 0 deletions fuzzers/002-tilegrid/clel_int/top.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ def gen_sites():
if not int_tile_name.startswith('INT_'):
continue

if os.getenv('URAY_ARCH') == 'UltraScale':
if int_tile_name.endswith('Y298'):
continue

yield int_tile_name, site_name


Expand Down
6 changes: 6 additions & 0 deletions fuzzers/002-tilegrid/clem_int/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@
#
# SPDX-License-Identifier: ISC

ifeq (${URAY_DATABASE}, kintexus)
N ?= 24
SEGMATCH_ARGS?=-c 5
GENERATE_ARGS?=--oneval 0 --design params.csv --dword 1 --auto_frame --filter_word 60,61
else
N ?= 15
GENERATE_ARGS?=--oneval 0 --design params.csv --dword 1 --dframe 0A --filter_word 45,46
endif
include ../fuzzaddr/common.mk

11 changes: 6 additions & 5 deletions fuzzers/002-tilegrid/clem_int/top.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def gen_sites():
gridinfo = grid.gridinfo_at_loc(loc)

tile_type = gridinfo.tile_type
if tile_type in ['CLEM', 'CLEM_R']:
if tile_type in ['CLEM', 'CLEM_R', 'CLE_M', 'CLE_M_R']:
# Don't fuzz the top and bottom of the grid, the interconnect
# there behaves differently.
_, _, y_min, y_max = grid.dims()
Expand All @@ -40,10 +40,11 @@ def gen_sites():
if not int_tile_name.startswith('INT_'):
continue

if int_tile_name.endswith('Y31') or \
int_tile_name.endswith('Y91') or \
int_tile_name.endswith('Y151'):
continue
if os.getenv('URAY_ARCH') == 'UltraScalePlus':
if int_tile_name.endswith('Y31') or \
int_tile_name.endswith('Y91') or \
int_tile_name.endswith('Y151'):
continue

yield int_tile_name, site_name

Expand Down
5 changes: 5 additions & 0 deletions fuzzers/002-tilegrid/clem_r/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@
#
# SPDX-License-Identifier: ISC

ifeq (${URAY_DATABASE}, kintexus)
N ?= 24
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 0 --dframe 0
else
N ?= 15
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 0 --dframe 0B --filter_words 46
endif
include ../fuzzaddr/common.mk

2 changes: 1 addition & 1 deletion fuzzers/002-tilegrid/clem_r/top.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def gen_sites():
for tile_name in sorted(grid.tiles()):
loc = grid.loc_of_tilename(tile_name)
gridinfo = grid.gridinfo_at_loc(loc)
if gridinfo.tile_type in ['CLEM_R']:
if gridinfo.tile_type in ['CLEM_R', 'CLE_M_R']:
site_name = sorted(gridinfo.sites.keys())[0]
yield tile_name, site_name

Expand Down
20 changes: 18 additions & 2 deletions fuzzers/002-tilegrid/fuzzaddr/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
# SPDX-License-Identifier: ISC

from utils import bitsmaker
import os

FRAME_ADDRESS_ALIGNMENT = 0x80 if (
os.getenv('URAY_ARCH') == 'UltraScale') else 0x100


def run(bits_fn,
Expand All @@ -22,6 +26,7 @@ def run(bits_fn,
dbit,
multi=False,
filter_words=None,
filter_frames=None,
verbose=False):
# mimicing tag names, wasn't sure if it would break things otherwise
metastr = "DWORD:%u" % dword
Expand All @@ -45,8 +50,8 @@ def run(bits_fn,

bitfilter = None

if filter_words is not None:
bitfilter = lambda frame, word: not (word in filter_words)
if filter_words is not None or filter_frames is not None:
bitfilter = lambda frame, word: not ((filter_frames is not None and (frame % FRAME_ADDRESS_ALIGNMENT) in filter_frames) or (filter_words is not None and word in filter_words))

bitsmaker.write(bits_fn, fnout, tags, bitfilter)

Expand Down Expand Up @@ -94,12 +99,22 @@ def main():
required=False,
default=None,
help="Filter out word from bit data")
parser.add_argument(
"--filter_frames",
required=False,
default=None,
help="Filter out frames from bit data")
args = parser.parse_args()

filter_words = None
if args.filter_words is not None:
filter_words = list(map(int, args.filter_words.split(',')))

filter_frames = None
if args.filter_frames is not None:
filter_frames = list(
map(lambda x: int(x, 16), args.filter_frames.split(',')))

run(args.bits_file,
args.design,
args.fnout,
Expand All @@ -110,6 +125,7 @@ def main():
None if args.dbit == "" else int(args.dbit, 10),
multi=args.multi,
filter_words=filter_words,
filter_frames=filter_frames,
verbose=args.verbose)


Expand Down
10 changes: 7 additions & 3 deletions fuzzers/002-tilegrid/generate_full.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# SPDX-License-Identifier: ISC

import json
import os
from utils import xjson
'''
Historically we grouped data into "segments"
Expand Down Expand Up @@ -55,7 +56,7 @@ def propagate_INT_bits_in_column(database, tiles_by_grid, tile_frames_map):
INT tiles next to INT tiles increase the word offset by 3.

"""
int_frames, int_words = localutil.get_entry('INT', 'CLB_IO_CLK')
int_frames, int_words = localutil.get_int_params()

propagate_bits_in_column(
database=database,
Expand Down Expand Up @@ -169,7 +170,9 @@ def propagate_bits_in_column(database, tiles_by_grid, tile_type, term_b,
next_tile = tiles_by_grid[(tile['grid_x'], tile['grid_y'] - 1)]
next_tile_type = database[next_tile]['type']

if tile['bits']['CLB_IO_CLK']['offset'] == 183:
if tile['bits']['CLB_IO_CLK']['offset'] == (
183
if os.getenv('URAY_ARCH') == 'UltraScalePlus' else 121):
assert next_tile_type in [term_t, rbrk], next_tile_type
break

Expand Down Expand Up @@ -284,7 +287,8 @@ def run(json_in_fn, json_out_fn, verbose=False):

tile_frames_map = localutil.TileFrames()
propagate_INT_bits_in_column(database, tiles_by_grid, tile_frames_map)
propagate_PS8_INTF_bits_in_column(database, tiles_by_grid, tile_frames_map)
if os.getenv('URAY_ARCH') == "UltraScalePlus":
propagate_PS8_INTF_bits_in_column(database, tiles_by_grid, tile_frames_map)
propagate_RCLK_bits_in_row(database, tiles_by_grid, tile_frames_map)
propagate_XIPHY_bits_in_column(database, tiles_by_grid, tile_frames_map)

Expand Down
6 changes: 6 additions & 0 deletions fuzzers/002-tilegrid/rclk_int/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@
#
# SPDX-License-Identifier: ISC

ifeq (${URAY_DATABASE}, kintexus)
N ?= 12
SEGMATCH_ARGS?=-c 5
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 1 --dframe 12 --filter_words 60
else
N ?= 10
SEGMATCH_ARGS?=-c 8
GENERATE_ARGS?=--oneval 1 --design params.csv --dword 0 --dframe 02
endif
include ../fuzzaddr/common.mk
Loading