Skip to content

Error on tile port mismatch #584

@mole99

Description

@mole99

Currently, FABulous connects the ports of neighboring tiles based on their order of their occurrence in the .csv file.

For example, consider this N_IO tile:

TILE,N_IO,,,,,
#direction,source_name,X-offset,Y-offset,destination_name,wires,
NORTH,NULL,0,-1,N_GBUF_END,4,# global buffers
SOUTH,S1BEG,0,1,NULL,4,
SOUTH,S2BEG,0,1,NULL,8,
SOUTH,S2BEGb,0,1,NULL,8,
SOUTH,S4BEG,0,4,NULL,4,
SOUTH,SS4BEG,0,4,NULL,4,
NORTH,NULL,0,-1,N1END,4,
NORTH,NULL,0,-1,N2MID,8,
NORTH,NULL,0,-1,N2END,8,
NORTH,NULL,0,-4,N4END,4,
NORTH,NULL,0,-4,NN4END,4,
NORTH,NULL,0,-1,Ci,1,# carry
JUMP,NULL,0,0,GND,1,
JUMP,NULL,0,0,VCC,1,
BEL,../../primitives/IOBUF/rtl/IOBUF.v,A_,,,,
MATRIX,./N_IO_switch_matrix.list,,,,,
EndTILE,,,,,,

This matches the LUT4x8_C tile:

TILE,LUT4x8_C,,,,,#carry out
NORTH,N_GBUF_BEG,0,-1,N_GBUF_END,4,# global buffers
INCLUDE,../common/Base.csv,,,,,
#direction,source_name,X-offset,Y-offset,destination_name,wires,
JUMP,GCLK_BEG,0,0,GCLK_END,1,
JUMP,GSR_BEG,0,0,GSR_END,1,
JUMP,GEN_BEG,0,0,GEN_END,1,
NORTH,CO,0,-1,CI,1,# carry
JUMP,J_SR_BEG,0,0,J_SR_END,1,
JUMP,J_EN_BEG,0,0,J_EN_END,1,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LA_,,,,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LB_,,,,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LC_,,,,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LD_,,,,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LE_,,,,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LF_,,,,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LG_,,,,
BEL,../../primitives/FABULOUS_LC/rtl/FABULOUS_LC.v,LH_,,,,
MATRIX,./LUT4x8_C_switch_matrix.list,,,,,
EndTILE,,,,,,

However, when these two lines are swapped:

INCLUDE,../common/Base.csv,,,,,
NORTH,N_GBUF_BEG,0,-1,N_GBUF_END,4,# global buffers

FABulous will connect the LUT4x8_C's north ports and the N_IO's south ports in a completely wrong order! Don't ask me how I found this out 😅
This should really be matched by name and not by order.

If the ports don't match, FABulous should abort and print an error message.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions