- Clone this repository
- Update info.yaml with your project details
- Make a post in the UWASIC Discord server under #onboarding/posts to kick things off!
- Read the full documentation and specifications here
The final implementation will be integrated into an FPGA fabric of a larger SoC. This TinyTapeout template serves as a trackable starting point for initial prototyping and team training purposes.
- Add your Verilog files to the
srcfolder. - Edit the info.yaml and update information about your project, paying special attention to the
source_filesandtop_moduleproperties. - Edit docs/info.md weekly and document your weekly progress on RTL and Verification, along with any comments or concerns you may have.
The GitHub action will automatically build the ASIC files using OpenLane.
This project has a hierarchical design structure:
frame_sync_tx_rx(final top module): Complete Ethernet frame transceiver - currently not being modifiedcontrol_transceiver(submodule): Control logic connecting TX and RXRX_frame(current verification target): Receiver frame processing logicTX_frame(submodule): Transmitter frame processing logic
For the initial phase of verification, the testbench instantiates RX_frame as the default DUT. This allows you to thoroughly verify the receiver functionality and frame synchronization before integrating it into the higher-level control_transceiver and frame_sync_tx_rx modules. The test files you complete at test/test.py should contain cocotb test cases that drive the testbench and verify:
- Frame reception and synchronization
- Byte extraction and state management
- Receiver status signals
Once the receiver is fully verified, the next phase will integrate with the transmitter (TX_frame) and control logic (control_transceiver), then finally with the top-level module (frame_sync_tx_rx).
Note: If you're more comfortable using Verilog or SystemVerilog testbenches for verification, feel free to use those instead of cocotb.