50 lines
1.6 KiB
Markdown
50 lines
1.6 KiB
Markdown
## Bugs I Found
|
|
|
|
### Audio Buffer
|
|
- Forgot to assign to a delay counter
|
|
|
|
### Debouncer
|
|
- Logic was fundamentally wrong
|
|
- Found multiple logic bugs with testbench and then assertions
|
|
|
|
### Display Converter
|
|
- Found a typo in a single digit
|
|
|
|
### Low Freq Clock Gen
|
|
- Was initially trying to do modulo at max clock speed, failing timing
|
|
|
|
|
|
### sd_rom
|
|
- ROM was getting totally optimized out and was doing nothing in simulation, and
|
|
didn't show up in synthesized design
|
|
- Timing issues, ROM was one cycle slower than expected, latching takes an extra
|
|
cycle too, had to rework state machines, there are a bonus 2 delay states when
|
|
starting and ending writes
|
|
|
|
### PWM
|
|
- major design problems
|
|
- clocked too slow
|
|
- initial goal of 16-bit audio isn't feasible because 100MHz isn't fast enough
|
|
to pwm based on a 16-bit counter, would give a sample rate of 1.5khz
|
|
|
|
### command_sender
|
|
- output ready signal was delay a cycle because it was set by sequential logic,
|
|
detected in testing, changed it to a combinational output for 1 cycle speedup
|
|
- counter was being set in multiple blocks, caught by synthesis
|
|
- output phase too long, caught in hw
|
|
|
|
### read_command
|
|
- response_type was not getting correctly stored/set, breaking the module
|
|
entirely. Detected in testbench
|
|
- off-by-one error detected in the counter
|
|
|
|
### read_data
|
|
- audio buffer address to write to was never changing, caught in simulation
|
|
- some off-by-one errors in the byte shifting were found and corrected
|
|
|
|
### modular_clock
|
|
- stopped ticking on reset
|
|
- meant that every module using these clocks w/ a synchronous reset would get
|
|
stuck and never reset
|
|
- found during hw debugging
|