Commit Graph

61 Commits

Author SHA1 Message Date
Makiras ad05874bf8
fix: filelist and build threads (#96)
* fix: ignore linker inputs during RTL parsing

* feat: limit generated build parallelism
2026-07-28 15:18:46 +08:00
Song Fangyuan 8d8e9beb1d
feat: improve VCS waveform, coverage, and modern Verdi support (#94)
* (fix): artifacts patch

* (fix) vcs waveform: support fsdb rename and flush

* (update) yaml-cpp: move to dependence and bump to 0.9.0

* (remove) third: drop unused type_safe

* (update) slang: bump default tag to v11.0

* (update) yaml-cpp: fetch dependency during init

* (fix) vcs coverage: add runtime save control

* fix: update VCS coverage control flow

* fix: make VCS finish safe for host process

* fix: stabilize VCS coverage export

* fix: support modern Verdi integration for VCS

* example: unify output paths and add per-example test targets

* fix: resolve xspcomm from picker path in mem_direct template

---------

Co-authored-by: Makiras <22570332+Makiras@users.noreply.github.com>
2026-07-07 17:48:32 +08:00
J. Wang fa9c9bfe63
Adopt slang as default SystemVerilog frontend and clean up codegen (#80)
* feat(parser): adopt slang as the default SystemVerilog frontend

- replace export RTL parsing with slang elaboration
- replace pack transaction parsing with slang
- remove Verible from normal parser and packaging flows
- fetch pinned slang and fmt releases via make init
- refresh tests and docs for the slang-based workflow

* fix(codegen): resolve filelist-relative inputs and quiet false missing-file logs

* refact(codegen): tidy up content about `_with_slang`

* feat(verible): Remove content about verible

* fix(gcc): Fix ignored attributes in gcc

* fix(parser): avoid gcc ambiguous overload in uvm parse_sv_transactions
2026-03-27 11:04:20 +08:00
SFangYy 42844ae7ed refactor: move pack_opts defaults to picker.cpp and rename example.sv to example-uvm.sv in example folder 2026-01-04 14:47:01 +08:00
SFangYy 4a2271254d feat(pack): refactor pack structure and support DUT abstraction generation
- Update pack function structure for better maintainability:
	- Refactored `src/codegen/uvm.cpp` by modularizing directory setup and template rendering logic.

- Implement automated DUT abstraction generation:
    - Introduced `-d` flag to generate DUT abstraction classes.
	- Added support for parsing RTL module ports directly via `--from-rtl`.

- Revamp UVM and Python template architecture:
	- Introduced `dut.py`, `xagent.py` and `utils_pkg.sv` to decouple logic.
	- Standardized template output structure for easier integration.

- Reduced file duplication and cleaner project structure:
	- Removed legacy example files and unified generated output directories.
2026-01-04 14:47:01 +08:00
J. Wang 4b5842336d
Add support for macOS (#64)
Add support for macOS:

* bugfix(exprtk): Upgrade verison of exprtk to fix compile error in clang.

* refact: Remove `bits/stdc++.h` and move `src/codegen/cpp.cpp::replace_all` to `include/picker.hpp::str_replace_all`

* feat: Use `dlopen` for non-linux platform.

* fix: Add missing headers

* fix(nproc): Fix bug of missing `nproc` in MacOS

* refactor(python): Adapt python template to macOS

* refactor(mem_direct): Adapt mem_direct template to macOS

* refactor(lib_suffix): Add shared library suffix in code generator

* refactor(dut_base.cpp): Use code generator to set library suffix

* add(cpp): Add cpp support for macOS

* add(java): Add java support for macOS

* refactor(nproc): Set $NPROC to support macOS

* fix(parser/sv): Add missing header file `unordered_set`

* fix(python_macos): fix the wrong suffix of module-type library

* refactor(codegen/lib): generator template use absolute path

* fix(mem_direct): fix link error in macOS

* feat: Use LLVM Clang to compile instead of AppleClang

* feat(golang): Add golang support for macOS

* fix(rpath): fix CMAKE_BUILD_RPATH for macOS

* feat(lua): Add lua support for macOS

* fix(scala): Fix wrong use of static method in scala

* feat(scala): Add scala support for macOS

* refactor(cmake): Upgrade cmake version to 3.15

* feat(doc): Add doc about installing picker on macOS
2025-11-03 10:38:10 +08:00
Makiras 78161f16f0 fix: test_utils 2025-09-10 14:38:18 +08:00
Makiras 82ff87768f
[feat] add ci tests and workflow optimization
chore(ci,test,build): add CI/tests for GSIM, .sv and Java; xcomm fallback; test preflight
- CI: install default-jdk for Java tests
- Tests: add GSIM export smoke, .sv verilator build, Java export
- test/Makefile: add preflight to auto-clean + rebuild with python+java when missing
- Build: Makefile init falls back to latest master for xcomm when branch missing
- Wire new tests into default test targets
- Run build-and-test and appimage-build on all branches
- Restrict appimage-publish and docker-build-push to master
- Reuse build directory via artifact between jobs to avoid rebuilds
- Fix deps: install swig in CI and AppImage job
- Makefile appimage target reuses existing build/ for install & packing
- Remove standalone AppImage/docker workflows to prevent duplicate runs
- build-and-test: install base toolchain and Kitware CMake
- Build and install SWIG v4.2.1 from source
- Build and install Verilator v5.018 from source
- appimage-build: reuse build/ artifact; minimal deps (appimagetool, linuxdeploy)
- Keep: appimage-build on all branches; publish/docker only on master
- 在 test/Makefile 中让 smoke、sv_build、gsim_smoke 依赖 preflight
- 避免 preflight 执行 clean/rebuild 时其他并发目标找不到构建产物
- preflight 完成后仍保留测试阶段的并行度
2025-09-03 14:24:53 +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
Makiras ba5127bd4b
add new feat: appimage (#43)
* [fix] performance analysis and internal signal config

* add dockerfile and ci builder

* [feat] add appimage building process, basic cpp support

* [fix] appimage multi-language support, appimage mode detection

* [feat] integrate verible-verilog-syntax in appiamge, fix dynamic lib search priority

* try ci appimages

* [fix] cmake CMP0171 for codegen keyword

* [fix] cmake CMP0171 for codegen keyword

* [fix] cmake CMP0171 for codegen keyword

* [fix] cmake CMP0171 for codegen keyword

* [fix] cmake CMP0171 for codegen keyword

* [fix] arm64 autobuild

* [fix] arm64 autobuild

* [fix] tag right release

* [fix] format and typos

* [fix] typo explaination should be corrected to 'explanation'

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-08 16:04:14 +08:00
Makiras 4a7efd9701 feat: verilator direct memory access for internal 2025-04-30 11:23:00 +08:00
yaozhicheng fef01d0b27 native: fix sv/cpp template 2025-04-30 11:23:00 +08:00
yaozhicheng bac81768d5 native: support native signal for python 2025-04-30 11:23:00 +08:00
yaozhicheng 3c1e6cc43f multi-lang: add Lua support 2025-01-08 11:35:10 +08:00
Makiras 6071bbb72b feat: add new options --vpi, --checkpoints for features control
--vpi: enable internal signal access
--checkpoints: using simulator capabilities for save/restore module status
2025-01-08 11:35:10 +08:00
Makiras 3af0f4f195 fix #24 : remove dpi set function for output signal, which case multi-driven
change clang-format line break from 80 characters to 120, and reformat the project cpp/hpp
2024-12-12 06:11:36 +00:00
yaozhicheng ddcf412ad9 add get_hostname & get_node_uuid 2024-10-23 14:40:18 +08:00
yaozhicheng 8c3049fcde add util function get_env 2024-09-26 04:41:28 +00:00
yaozhicheng 2dc1901e60 support static multi-rtl-module 2024-09-18 15:20:00 +08:00
yaozhicheng a203b2452f mis: save draft code for multimodule 2024-09-18 15:20:00 +08:00
yaozhicheng b6625990a5 commfunc: fix trim 2024-08-30 17:34:34 +08:00
Jiuyue Ma b81973bd56 codegen: Support multiple `--filelist <listfile>` options
Signed-off-by: Jiuyue Ma <majiuyue@bosc.ac.cn>
2024-08-02 10:21:21 +08:00
yaozhicheng 4f9aab6c02 func: pass arg signal_tree_json 2024-07-29 16:29:49 +08:00
yaozhicheng df99c5776e Merge branch 'master' of https://github.com/XS-MLVP/picker 2024-07-29 07:34:59 +00:00
yaozhicheng e8df27a2be refine: add PK_/X prefix to info/message/error/fatal 2024-07-29 07:24:59 +00:00
Makiras 39e0f27ea1 add signal_tree_json for internal usage 2024-07-29 13:50:16 +08:00
yaozhicheng ed1bd11e4a add option --cp_lib 2024-07-29 05:46:49 +00:00
yaozhicheng 33ac831b7a refine: refine template/lib search locations 2024-07-25 15:26:49 +08:00
yaozhicheng e019d26198 auto add prefix 'pin_' to confilcted pins (eg: xclock) 2024-07-17 10:34:01 +08:00
yaozhicheng 743969874d add option --check 2024-07-17 10:34:01 +08:00
yaozhicheng c9ac25ad09 add red color to ERROR 2024-07-17 10:34:01 +08:00
yaozhicheng 78975838a9 support golang & test pass 2024-07-17 10:34:01 +08:00
yaozhicheng 55241b5a83 add scala suppor & test Adder pass 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
yaozhicheng cc532efb36 fix options 2024-06-25 19:16:25 +08:00
yaozhicheng 3f2697749d add java support 2024-06-25 13:54:54 +08:00
SFangYy eebad90ff0 add parse uvm transaction 2024-06-12 16:52:11 +08:00
Makiras 9055071c58 change cli library for pack function 2024-06-07 06:47:50 +00:00
Makiras aadfa3ab1a update version func with cmake version variable and git status detect 2024-04-23 11:15:28 +08:00
Makiras 731eb34b90 rename mcv to picker 2024-01-16 02:05:56 +00:00
Makiras 7c275b40ce add quick start example 2023-12-29 10:05:07 +00:00
Makiras 81b5521004 [wip] for python 2023-12-14 06:34:58 +00:00
Makiras 06751a12f8 optimize mcv output content
add verbose mode and example project mode
todo: add python support ,finetune vcs support
2023-12-11 08:36:32 +00:00
Makiras 4e42790dfb add VCS freq support 2023-11-28 07:25:22 +00:00
Makiras 532e7f72b7 [WIP] cast dpi function to void* for escape verilator & vcs compatibility 2023-11-21 03:14:49 +00:00
Makiras c673f03c13 add support for internal signal configured by yaml
refacted code
2023-11-17 07:56:14 +00:00
Makiras e0aa79ed03 optimize performance 2023-11-10 08:04:34 +00:00
Makiras a41c33884e add VCS support 2023-11-02 06:36:26 +00:00
Makiras 46c5adbf03 optimize code organization, add trace&dump waves for verilator 2023-10-31 09:22:32 +00:00
Makiras e8374d56c7 Refactor the overall code logic.
Generate encapsulated C++ classes based on dpi and codegen.
2023-10-27 09:32:38 +00:00