This project contains a set of tools that process VHDL files mapped to FPGA/ASIC gates, so it is useful as a step between the synthesis of a circuit and the place&route operation.
You can:
- Simulate the circuit (for example, if your synthesiser has mapped the gates to a given PDK but you don't have the corresponding gates in VHDL)
- Perform static analysis of the netlist (spot unconnected inputs or outputs, and other common mistakes)
- Extract dynamic activity statistics (how often does a wire flip state, if at all ?)
- Verify that any internal state can be reached (thus helping with logic simplifications)
- Alter any boolean function, inject arbitrary errors and prove your BIST strategy
- Extract logic traversal depth and estimate speed/latency (roughly)
- Inspect logic cones, see what inputs and outputs affect what
- Help with replacing DFFs with transparent latches
- Ensure that the circuit is correctly initialised with the minimal amount of /RESET signals
- Detect and break unexpected logic loops or chains
Some day, it could be extended to
- Pipeline a netlist and choose the appropriate strategy (will require detailed timing information)
- Transcode/Transpile a netlist from one family/technology to another
- Import/export to EDIF or others ?
Note: Since the tool typically processes netlists before place&route, no wiring parasitics data are available yet so no precise timing extraction is possible and it doesn't even try. It can however help, in particular with extraction of the criticality of each path then the mapping of gates to the proper fanout.
The project started as #VHDL library for gate-level verification but the scope keeps extending and greatly surpasses the mere ProASIC3 domain. For example I also study the addition of the minimalist OSU FreePDK45. More unrelated libraries would be added in the near future, depending on applications : Skywater PDK, Chip4Makers' FlexCell and Alliance could follow. Contact me if you need something !
Logs:
1. First upload
2. Second upload
3. Rewrite
4. More features ! (one day)
5. Another method to create the wrapper
6. inside out
7. OSU FreePDK45 and derivatives
8. The new netlist scanner
9. Chasing a "unexpected feature" in GHDL
10. Polishing and more bash hacking
11. Completeness of a simple heuristic
12. Benchmarking with a HUGE LFSR
13. Benchmarking results
14. Wrapper rewrite
15. A smarter sinks list allocator
16. Strong typing snafu
17. Plot twist
18. Skipping the preflight check
19. Depthlist v2
20. Better detection of driver conflicts
.
TODO: export to CUDA......