testing page - jtristan123/HW-for-AI-ML-ECE-410 GitHub Wiki
sequenceDiagram
participant GA_Python as GA Software (Python)
participant LFSR_HW as LFSR (Verilog)
participant Cocotb as cocotb Testbench
participant VerilogSim as Icarus/Verilator
participant SPI as SPI Bus
GA_Python->>LFSR_HW: Request random (conceptual)
note right of GA_Python: Swaps random.random() for hw_rand()
GA_Python->>Cocotb: Send test harness (Python)
Cocotb->>VerilogSim: Compile & run lfsr16.v
VerilogSim->>LFSR_HW: Simulate LFSR logic
LFSR_HW-->>VerilogSim: Output rnd_out bits
VerilogSim-->>Cocotb: Return waveform results
Cocotb-->>GA_Python: Validate correctness
GA_Python->>SPI: (Future) Read rnd_out via SPI
SPI-->>GA_Python: Random 16-bit word (hardware output)
sequenceDiagram
participant User
participant GA
participant LFSR
User->>GA: Run generation
GA->>LFSR: Request random number
LFSR-->>GA: Return 16-bit value
- random.random()
+ hw_rand() / 65536.0
- random.random()
- hw_rand() / 65536.0
gantt
title Project Timeline
section Simulation
Setup :a1, 2024-06-01, 3d
Testing :a2, after a1, 2d
flowchart TD
A[Initialize Population] --> B[Evaluate Fitness]
B --> C{Fitness == 0?}
C -- No --> D[Select Parents → Mate → Mutate]
D --> E[Form New Generation]
E --> B
C -- Yes --> F[Output Best Solution]
- Tests pass
- Update CHANGELOG
- Tag v1.4.0
|
Why do we use Git-flow?
Because trunk-based makes Jim cry, that’s why.
(Click again to collapse)
![]() Figure 1 — GA.py Output |
**Git’s typical branching strategy lets contributors work in isolation while**
**the main
branch stays deployable. **
**New features are developed in short-lived branches, merged via pull requests,**
**and deleted once tested. Release branches and hot-fix branches follow the**
**same pattern, giving you a clean, linear history on main
.**
Because the table is using the old-school align="right"
attribute,
browsers treat it like a floating element: it hugs the right margin and later
inline content flows alongside on the left. :contentReference[oaicite:0]{index=0}
Any content that comes after this clear-break will begin on a new line beneath the image-and-caption block.
![]() Figure 1 — GA.py Output |
- find where to improve
- design chipset to improve speed
- The image on the right show the time and HW acceleration is only worth if less than T3
- measure and take to account all Ts (T5,T6,T7) make sure to benchmark
main
.
Because the table is using the old-school align="right"
attribute,
browsers treat it like a floating element: it hugs the right margin and later
inline content flows alongside on the left.
Any content that comes after this clear-break will begin on a new line beneath the image-and-caption block.