-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Dear @gamzeisl , @Xeratec and the rest of the ITA team,
We really like the work you've done, and it inspired us to use it as the core of our project for the AMD Open Hardware Competition.
We are writing to you today because we've encountered a significant roadblock that has halted our progress for the past three months. We are struggling to synthesize the accelerator with the default ITA_M=64 and ITA_N=16 configuration and have been unable to get simulations working for any other configuration.
You can check our work here: Link to repository
What we would like to have are the following paramters:
# --- 6. Set Verilog Defines (Macros) ---
# These macros are extracted from the Makefile and compile.tcl to align
# the Vivado project with the original compilation environment.
puts "INFO: Setting Verilog defines..."
set verilog_macros [list \
"TARGET_ITA_HWPE" \
"TARGET_ITA_HWPE_TEST" \
"TARGET_RTL" \
"TARGET_SIMULATION" \
"TARGET_TEST" \
"TARGET_VSIM" \
"NO_STALLS=0" \
"SINGLE_ATTENTION=0" \
"ITA_N=8" \
"N_PE=8" \
"ITA_M=64" \
"M_TILE_LEN=64" \
"SEQ_LENGTH=64" \
"EMBED_SIZE=128" \
"PROJ_SPACE=192" \
"FF_SIZE=256" \
"BIAS=0" \
"ACTIVATION=Identity" \
"HCI_ASSERT_DELAY=\#41ps" \
]The Synthesis Problem
When we attempt to synthesize the design with ITA_M=64 and ITA_N=16, we consistently encounter the following warning, which ultimately leads to a synthesis failure:
WARNING: [Synth 8-11357] Potential Runtime issue for 3D-RAM or RAM from Record/Structs for RAM inp1_reg with 9216 registers
We have spoken with other teams who have attempted to use ITA and they have confirmed running into the exact same issue. While we understand that this configuration might not be feasible for synthesis on our target FPGA, we have had success with other configurations, such as:
N=8,M=64N=8,M=32N=4,M=32
All of these synthesize successfully. This leads us to the simulation problem.
The Simulation Problem
Unfortunately, while we can synthesize smaller configurations, the simulation only works for the default N=16 and M=64 setting. For any other configuration, the simulation hangs. Specifically, the simulation does not advance beyond step Q, which we find very strange.
We have done some digging into the and it appears to be a deadlock issue within the FIFO logic. Some FIFOs do not consume data, leading to a situation where other FIFOs become full, stalling the entire pipeline (I will follow up with more information on this).
We have been meticulous in ensuring that all hardcoded values in the PyITA test generator are updated for our different configurations and that our project macros are set correctly.
We've also experimented with changing AccDataWidth and TCDM_DW to 512 and 256, along with all related values, but with no success.
Environment and Troubleshooting
We have tried to resolve this on our own by testing in various environments, including:
- Vivado Versions: 2023.1 and 2024.2
- Operating Systems: Windows and Linux
So far, we have not been able to change a single parameter (besides simulation data) and have the simulation complete successfully. This leads us to a broader question: is the AccDataWidth of 1024 directly related to the N and M parameters or is there a some configuration we are missing to be able to finish simulation with a smaller ITA?
Our Request
We are reaching out to you as we are running out of time for the competition, with the deadline at the end of next month. The rest of our project is complete and ready to be integrated with ITA. It would be a huge shame to have to abandon our work due to this final hurdle. Any smaller configuration that we can simulate and synthesize would work for us.
Do you have any recommendations on how to correctly modify the parameters to create a smaller design that can still complete a simulation run?
We would be incredibly grateful for any help you could provide. Even guidance on getting a design with a smaller N value to work in QuestaSim (even without Vivado) would be a massive help. We are very familiar with the architecture at this point and would be more than happy to jump on a call to discuss the issue in more detail.
Thank you for your time and for your amazing work on this project!
PD.: you can find our .tcl file in the repository I shared