Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shmuel doc #78

Merged
merged 4 commits into from
Feb 6, 2024
Merged

Shmuel doc #78

merged 4 commits into from
Feb 6, 2024

Conversation

ShmuelSfez
Copy link
Collaborator

organized all the fabric doc, MAS block diagrams etc.

MAS for all modules.
block duagram for all modules wexcept the router module
organize the mess in the files location
@ShmuelSfez ShmuelSfez requested a review from amichai-bd February 6, 2024 09:19
This document outlines the micro-architecture of the `fabric` module, responsible for managing data routing, arbitration, and communication between different tiles in a tile-based system.

**Purpose and Functionality:**
The `fabric` module serves as the interconnection fabric, enabling communication between tiles within the system. It handles data exchange in multiple directions (North, East, West, South) and facilitates UART communication. Local tile IDs are generated based on tile positions for routing.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix the "and facilitates UART communication."
And mention that each tile has an "endpoint" component, (CPU, accelerator or other IO component such as uart)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

| clk | Input | Clock signal. |
| rst | Input | Reset signal. |
| RstPc | Input | Reset for the program counter. |
| InUartValid | Input | Valid signal for UART read/write requests. |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not the correct IO - We should have uart tx,rx.
and eventually all the FPGA IO. (switch, LED, button, VGA)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i took the IO from the fabric.sv file. what other IO do we have?

**Data Flow Description:**
1. The module receives clock (`clk`) and reset (`rst`) signals for control.
2. It handles UART read/write requests through `InUartValid` and `InUart` and provides UART responses via `OutUartValid` and `OutUart`.
3. For tile-to-tile communication, it manages data exchange in all four cardinal directions (North, East, West, South) using arrays of signals (`in_` and `out_` signals) for request validity, transaction details, and ready signals.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add the "struct" detail of the transactions

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WIP, not sure what you mean


## 5. Configuration and Control

**Configuration Registers:**
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a great title - we don't have configuration register..

But we should be able to scale up the fabric to any ROW x COL + the tiles are interchangeable and can facilitate many different logic units

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generaly this documentation is missing the essence of the fabric.

A general architecture that can facilitate many types of tiles, which are all connected in a mesh fashion.
It can scale to as many tiles as you want

Each tile has its own to its Memory Map and all memory are accessible using "Direct Memory Access (DMA)" by the fabric different aganets..

Will be used for distributed computation, AI, image process, all any type of "pipe-line" computation across different cores that move data from one to another

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, but this is not the purpose of the HAS?

3. It determines the priority of different cardinal directions based on the target address and the current tile's ID.
4. The selected cardinal direction for each request is then provided as output.

# 4. Configuration and Control
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove this cahpter

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


The module is primarily configured through the `NEXT_TILE_CARDINAL` parameter, which specifies the preferred cardinal direction for forwarding requests.

# 5. Testing and Verification
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exaplain what are the cases that we should hit and validate in this block.
(coverage points")

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

| out_local_ready | Output | Ready signal indicating the availability for data exchange to the Local direction. |
| out_local_req_valid | Output | Signal indicating the validity of requests forwarded to the Local direction. |
| out_local_req | Output | Transaction details for requests forwarded to the Local direction. |

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add a 'main component chapter"
explaining what builds this module

There is a lot more to describe in this block

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there are lot of next_tile_fifo_arb and fifo_arb, should i explain each one of them? not sure what this chapter will describe.

1. The module receives requests from various directions, each with its associated validity signal, transaction details, and ready signal.
2. It performs arbitration to determine the priority of requests from different directions.
3. The selected request is then forwarded to the appropriate output direction.
4. Ready signals are asserted to indicate the availability for data exchange in the selected direction.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please mention the backpresure

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PLease describe how are solving the HOL-blocking problem

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

| in_local_next_tile_fifo_arb_card | Output | The selected cardinal direction for forwarding requests from the Local direction. |

# 3. Functional Description
Operational Modes:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PLease describe how are solving the HOL-blocking problem

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@amichai-bd amichai-bd merged commit 8a9d256 into main Feb 6, 2024
1 check passed
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great image!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants