Commit Graph

35 Commits

Author SHA1 Message Date
SFangYy 22df9211f5 fix(vcs): replace LD_PRELOAD workaround with static TLS tunable check 2026-06-04 10:21:50 +08:00
Makiras e3eab27451 feat(lib): add atClone hook for post-fork state re-initialization
Add a new `atClone()` method to the simulation core and expose it through all language bindings.

This method is intended to be called in a child process after a fork() to re-initialize the state of the Verilated model. This is crucial for supporting robust multi-process simulation environments, such as Python's `multiprocessing`, where forking can lead to an inconsistent state in the simulator's child instances.

Additionally, this commit includes several stability and memory management improvements:
- Fix memory leaks in `DutUnifiedBase` and the C++ wrapper by ensuring allocated resources are properly deallocated.
- Add a null-pointer check in `FlushWaveform` to prevent crashes when a waveform dumper is not present.
- Expose the `atClone` functionality to C++, Go, Java, Lua, Python, and Scala wrappers.
2026-01-29 17:07:30 +08:00
FrankOu2001 bc3570eaaa refactor: Enhance waveform export and rename APIs
- Store waveform and coverage export settings in the DUT class.
- **BREAKING CHANGE**: Renamed waveform control APIs to clarify pause/resume semantics:
  - `OpenWaveform` -> `ResumeWaveformDump`
  - `CloseWaveform` -> `PauseWaveformDump`
  - `WaveformClosed` -> `WaveformPaused`
- Fix syntax error in `template/mem_direct/Makefile`.
2025-09-04 15:38:35 +08:00
Zhicheng 0063b63f58
Add backend simulator GSIM support (#50)
New features:

- add firrtl parser
- add gsim example
- support gsim complete
- support internal signal parse for gsim
- test gsim Nutshell success
- readme: update gsim info

---------
Co-authored-by: Makiras <xieyunlonglong@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-13 15:16:15 +08:00
yaozhicheng bbca48b8ae feat: export new API GetXClock/GetXPort/OpenWaveform/CloseWaveform 2025-04-30 11:23:00 +08:00
yaozhicheng efd44173d9 python: add more assert int GetInternalSignal 2025-04-30 11:23:00 +08:00
yaozhicheng 66ad33e179 python: support xdata array in GetInternalSignal 2025-04-30 11:23:00 +08:00
yaozhicheng 83b8e5c8c4 python: refine GetInternalSignal & GetInternalSignalList to support both memdirect and vpi 2025-04-30 11:23:00 +08:00
Makiras ddce03de56 add CacheSignalCFG example 2025-04-30 11:23:00 +08:00
Makiras 0db637f940 fix: XClock Order 2025-04-30 11:23:00 +08:00
Makiras cf35240762 refact: passthrough C pointer Step() to xcomm XClock() instead of python wrapper 2025-04-30 11:23:00 +08:00
J. Wang 2528418fe3
Fix typo of `ACondition` (#34) 2025-03-25 16:22:12 +08:00
Makiras 72d4d70490 [WIP] add golang example, waiting for xdata update 2025-01-08 11:35:10 +08:00
Makiras 7b70577b45 feat: add FlushWaveForm() to write wave immediately, for debugger
add doc: API statement
2025-01-08 11:35:10 +08:00
yaozhicheng 8cdeb3ac10 template: add GetInternalSignal for python 2025-01-08 11:35:10 +08:00
Makiras 3aa0b3ccae feat: add vpi functions export and internal signal iteration list 2025-01-08 11:35:10 +08:00
yaozhicheng 5fd42a6ecb Python DUT: add setattr assertion 2024-10-25 12:59:40 +08:00
yaozhicheng ca4a946c80 new feature: add cascaded ports for python 2024-07-29 17:46:23 +08:00
yaozhicheng ed1bd11e4a add option --cp_lib 2024-07-29 05:46:49 +00:00
yaozhicheng 5e09957aa3 fix: handle import error 2024-07-26 12:23:09 +08:00
yaozhicheng 805753f834 uniform dut.xclock, dut.xport 2024-07-17 10:34:01 +08:00
yaozhicheng 3f857c4dbb refine user APIs 2024-07-17 10:34:01 +08:00
Makiras 33e7314c73 refactor libDUT init function 2024-07-17 10:34:01 +08:00
Makiras a777499620 optimize multi-instance with hash DPI func name
also add dlclose to release namespace and flag to reuse main namespace
2024-07-17 10:34:01 +08:00
Makiras 7cdd8d576c refacted DutUnifiedBase without inhert and change dlmopen abstract level
due to dlmopen DPI library is simulator-related, we choose to dlmopen whole libUT.so without simulator-related code
2024-07-17 10:34:01 +08:00
Makiras a1192bd277 add multi-instance support with dlmopen for VERILATOR 2024-07-17 10:34:01 +08:00
Miical ad03526c25 Update the python template to change the waveform and coverage file names at initialization 2024-04-29 16:33:17 +08:00
FrankOu2001 292151ec52 Update & Fix bugs: Wrap methods `StepRis` and `StepFal` of `xclock` in `template/python/dut.py`; Fixed bugs in `template/python/dut.py` where calling async functions resulted in coroutines never being awaited. 2024-04-28 11:23:47 +08:00
FrankOu2001 eb5b4b4b06 Fix bugs: Fixed a bug in `template/python/dut.py` where it should have been "RunStep" instead of "RunSetp". 2024-04-27 13:36:42 +08:00
Makiras f61a0118b1 fix: verilator failed to dump wave in python, optimize example 2024-03-19 06:32:14 +00:00
Miical efc0a13f3d add python test after generation 2024-01-16 02:06:48 +00:00
Miical c5a10f42b6 modify the Python template, add XPin, and package the generated Python code as a Python package. 2023-12-26 11:19:24 +08:00
Makiras e900e948c3 workaround with LDPRELOAD for VCS 2023-12-14 09:09:52 +00:00
Makiras 8705b0bf10 workaround optimize python lib install, add XDATA c-function-pointer support for python swig 2023-12-14 08:20:31 +00:00
Makiras 81b5521004 [wip] for python 2023-12-14 06:34:58 +00:00