All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add python3.11 support
- Add wrapper scripts to support different EDA tools:
hgdb-vcs
hgdb-xrun
hgdb-vsim
hgdb-verilator
hgdb-vvp
- Add performance counting
- Add namespace/process support
- Add C++ JSON DB wrapper
- Changed some debugger runtime RPC protocol interface
- Optimize for expression evaluation in @ clock edge
- Adjust some benchmark code
- Add documentation website hgdb.dev
- Add ability to escape JSON symbol scope entry
- Add support for shadow copy of memory width arbitrary depth
- Rework on expression parsing to use proper C-like PEG syntax
- Add support in indexed variables in JSON symbol table
- Add reproducable benchmark script
- String formatting is now handled in the framework rather than underlying simulator
- Various error handling changes.
- Fix some VPI calls that didn't go through VPI wrapper
- Fixed scoped variable not properly detected
- Fix context var ordering in json db
- Fix scoping issue that causes segfault in fsdb wrapper
- Add JSON-based symbol table support
- Add symbol table auto detection
- Add
hgdb-db
tool to interact with the symbol table - Add SystemVerilog native complex type support. The RTL stored in the symbol table can now be of a complex type such as interface or struct
- Data breakpoint support
- Improve
toml2hgdb
conversion - Chisel/Firrtl support stable
- Add Python implementation of symbol table provider
- Gracefully detach/exit the simulation
- iverilog and Questa support
- Add ability to pause at clock edge
- Add timeout to recv_bp in python binding
- Add design info the debugger information request
- Add support for FSDB replay
- Better out-of-order breakpoint support
- Fix index bug. Thanks Valgrind!
- Fix replay VPI emulator on new instance mapping
- Automatically reuse built VCD table if exists
- Added extended vpi call to reverse time
- Add reverse continue
- Add more scheduling unit tests
- Add hex string to vpi and runtime
- Add support for arrays in vcd-replay
- Add vcd-rewrite-vcd to rewrite VCD based on symbol tables
- Add support for slice values
- Add support for set values
- Add tool to convert toml-based symbol table description to native hgdb database
- Improve hierarchy mapping strategy (#15)
- Decouple debugger and scheduler logic
- VCD parser is refactor to be callback based
- Monitor proto is changed
- Add basename filename query support to relax absolute name requirement
- Fix hgdb-replay script args passing
- Fix scope resolution with VPI
- Fixed a bug where VCD will have extra records if a value changed multiple times in the same timestamp
- Variable minor bug fixes in vcd-replay
- Add monitor request
- Add cb lock to prevent race condition
- Add initial implementation of hgdb-replay
- Add tcl binding
- Add step back within the timestamp. If the simulator/emulator is capable, rewind time
- Response are sent to requesting channel only, except for breakpoint broadcast
- Eval request now requires context indicator
- Use shallow copy to avoid client remove callbacks during iteration
- Fix a bug where context symbol won't be read properly during bp eval
- fix a bug where if the db is invalid, subsequent logic will trigger a seg fault
- Fix a race-condition bug where the compiler/cpu reordering may introduce unexpected side-effects. Add memory fence to avoid reordering
- Fix a typo in error message
- Fix stop/detach logic
- Fix a bug where cb handles is not properly added to the handle list
Initial release. This is a complete rewrite from the old version kratos-runtime with various improvement. The list below shows the major difference between hgdb and its predecessor.
- Websocket + JSON based communication
- Improved API on different requests and responses
- Language/framework independent symbol table design
- Breakpoint emulation instead of DPI calls
- Python bindings to interact with the symbol table, as well as libhgdb
- A new expression evaluation engine for C-like expressions
- Add REPL support
- Better testing infrastructure