497 Commits

Author SHA1 Message Date
1075d381f1 replaces conanfile.txt with conanfile.py 2025-05-13 08:23:34 +02:00
b2049d3df1 re-enables LLVM backend 2025-05-09 20:15:33 +02:00
5a3ef5575c updates core again 2025-04-29 12:57:27 +02:00
acb9c85abd updates dbt-rise-core 2025-04-29 11:33:53 +02:00
5b86f90bbf disables LLVM in ACT, and adds note in README 2025-04-29 08:37:19 +02:00
f0cf3ea154 updates conan in Jenkinsfile 2025-04-28 16:22:50 +02:00
9acaeff409 removes version from conan since conan2 is now supposed to be uses 2025-04-28 16:15:26 +02:00
565958c631 updates Jenkinsfile to use conan2 as build tool 2025-04-28 16:14:31 +02:00
6a3e32ac50 README.md aktualisiert 2025-04-28 16:07:07 +02:00
8efb009adf updates submodules 2025-04-28 15:05:34 +02:00
28e332c527 moves build setup to use conan2 2025-04-18 17:33:20 +02:00
b7c0f20db6 updates core to use newest scc 2025-04-14 12:54:35 +02:00
a272a1ee39 updates dbt-rise-tgc 2025-04-03 09:59:35 +02:00
eb861daf9c updates dbt-rise-core 2025-04-03 09:48:02 +02:00
a5e6948487 updates submodule yet again 2025-04-03 09:19:17 +02:00
64d97ae834 updates submodule 2025-04-02 13:01:35 +02:00
785428fb09 updates submodule 2025-04-02 12:20:57 +02:00
3492a72128 updates submodule 2025-04-02 12:19:13 +02:00
3eb3ebd795 updates submodule 2025-04-02 11:54:12 +02:00
ff89ccdfdb updates Jenkinsfile to reflect changes to TGC-COMPLIANCE 2025-04-02 11:19:27 +02:00
9e42487366 updates submodules 2025-04-02 10:20:35 +02:00
b9ba205a52 removes scc from .gitmodules 2025-03-30 17:09:01 +02:00
85982a0d1c updates dbt-rise-core 2025-03-19 12:03:33 +01:00
44682cdf0e updates submodule 2025-03-19 10:12:05 +01:00
b8e5b38e3a updates referenced SCC 2025-03-16 09:17:31 +01:00
fc8f95da51 updates sub-modules 2025-03-16 08:50:54 +01:00
bd3139b623 removes scc submodule 2025-03-15 07:08:21 +01:00
6fe60e03cd updates submodule 2025-03-14 20:04:01 +01:00
8d6fdb6ba7 Merge branch 'feature/privilege_refactor' into develop 2025-03-14 20:01:35 +01:00
4a74a73bee updates CMakeLists.txt and dbt-rise-tgc submodule 2025-03-14 19:45:21 +01:00
5d78cdf4df updates CMakeLists.txt and adds build config 2025-03-14 08:52:57 +01:00
e192c71104 updates submodules and adds cmake presets 2025-03-14 07:15:21 +01:00
140c2d67b1 updates dbt-rise-tgc 2025-02-13 13:41:38 +01:00
7d41bb9525 updates submodules 2025-02-12 20:45:47 +01:00
b2f87e8fad updates dbt-rise-core and scc 2025-02-03 20:53:59 +01:00
27b23dce8d Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS.git into develop 2025-02-03 20:52:52 +01:00
2ff133732d forces clean build in Jenkins 2025-01-11 12:03:55 +01:00
dee78d1279 updates scc 2025-01-08 14:45:21 +01:00
dfad138010 update submodules 2024-12-28 13:11:41 +01:00
de4a6124e6 updates SCC 2024-12-23 20:15:32 +01:00
d063650904 updates scc 2024-12-23 16:49:25 +01:00
8eed85377b updates dbt-rise-tgc 2024-12-06 15:51:12 +01:00
fabceb7a93 updates submodules 2024-12-06 13:40:30 +01:00
88ad16ec94 updates submodules 2024-11-14 17:27:50 +01:00
abef96d93d lowers CXX standard and elfio version 2024-11-14 17:26:37 +01:00
478d1d4ac5 includes GC cores into Jenkins 2024-09-30 09:51:56 +02:00
5f43bb9c0f updates submodules 2024-09-30 08:48:31 +02:00
d9706c58f9 updates submodules 2024-09-27 20:10:53 +02:00
45b55d5c24 updates submodule 2024-09-24 08:42:33 +02:00
bacc9a8296 updates elfio and c++ version 2024-09-24 08:42:17 +02:00
b6e22e863a updates dbt-rise-tgc submodule 2024-09-23 10:06:10 +02:00
aad4a27516 updates dbt-rise submodules 2024-09-23 09:30:33 +02:00
e6b34cfad9 updates submodule, Jenkins displays available isa after building 2024-08-21 12:09:41 +02:00
3fb45df48c updates submodule 2024-08-21 11:05:01 +02:00
3489fd1516 updates submodule 2024-08-17 23:22:14 +02:00
8d199ba7ca changes c++ back to 14 2024-08-17 23:20:29 +02:00
30dd1044b0 updates submodule 2024-08-17 11:20:03 +02:00
d27cbcc05b adds TGC5F to testing 2024-08-17 09:22:33 +02:00
020a4d793f updates submodules 2024-08-17 09:22:03 +02:00
ed08913f26 updates submodules 2024-08-04 18:42:54 +02:00
17773cf9b1 updates tgc 2024-08-02 11:59:10 +02:00
ae71682920 updates TGC impl 2024-08-02 10:33:29 +02:00
5cfbbbc9ca updates dbt-rise-tgc to fix fcsr presence 2024-08-02 08:59:48 +02:00
7d71ebca30 update submodules 2024-08-01 11:02:45 +02:00
0b7969becf updates submodule 2024-07-31 12:31:10 +02:00
5bb29d2d3a adds script for annotating memory addrs to riscof memory dumps 2024-07-31 12:30:54 +02:00
46128e395f update submodule 2024-07-30 13:34:57 +02:00
3dc80460ac updates submodules 2024-07-25 19:35:37 +02:00
5d9d146aa2 updates submodules and script 2024-07-25 13:08:38 +02:00
a4ac323306 updates submodules 2024-07-24 14:49:19 +02:00
97190a133c updates submodules 2024-07-24 12:45:23 +02:00
c09fda3f25 updates submodules 2024-07-24 12:29:21 +02:00
47d7357ed9 updates submodules 2024-07-23 14:36:16 +02:00
78245ec817 updates submodules 2024-07-23 13:47:51 +02:00
4058eed106 updates submodules 2024-07-22 09:24:19 +02:00
1fee44c084 enables all cores in Jenkinsfile 2024-07-18 14:32:59 +02:00
497b1d33d4 updates submodules 2024-07-18 14:32:46 +02:00
db0d125651 adds Debug tools 2024-07-18 14:21:24 +02:00
c365d4f822 removes TGC5B from testing as it is also not generated atm 2024-07-11 22:05:07 +02:00
6ce8eada3e removes TGC5C from generation as it is already in TGC-ISS 2024-07-11 16:37:21 +02:00
6ee4840d8d removes TGC5B from testing 2024-07-11 15:46:56 +02:00
2a0899a671 adjust cache line size 2024-07-11 14:06:07 +02:00
c0e557316f adds switch to mkdir 2024-07-11 12:59:43 +02:00
c4a746d4c8 splits 32 and 64 bits, disables RVE for now 2024-07-11 12:41:14 +02:00
45e5ab6133 cleans repo before checkout 2024-07-11 11:26:54 +02:00
8811f13d1c checks out ISS explicitly 2024-07-11 11:23:17 +02:00
c2056c30f3 fixes syntax for multiline command 2024-07-11 10:55:27 +02:00
3da38170ff generates cores manually 2024-07-11 10:53:59 +02:00
5c31d06a58 . 2024-07-11 10:24:49 +02:00
99e36acbae fixes bugs 2024-07-11 10:19:56 +02:00
21ca5aee7a different agents for different stages 2024-07-11 10:14:46 +02:00
c99a7982b7 adds seperate image for core gen 2024-07-11 10:04:35 +02:00
3d657d42bc fixes typo yet again 2024-07-11 09:52:02 +02:00
8de84ca4be fixes typo 2024-07-11 09:46:25 +02:00
fa1c960247 updates Jenkinsfile 2024-07-11 09:41:06 +02:00
ab4a0eeb6e updates submodule 2024-07-11 08:41:16 +02:00
cc61e0b476 changes dockerless to local 2024-07-10 13:16:11 +02:00
856e251be4 updates submodules 2024-07-10 12:57:36 +02:00
b118b43988 upgrades cxx version for std::variant in vmbase, updates asmjit and reorder for proper build 2024-07-10 12:57:36 +02:00
e8037b9c27 updates dbt-rise-tgc 2024-07-09 13:57:43 +02:00
c0bae483c1 updates submodules 2024-07-09 13:52:50 +02:00
d7d072bb0b Merge branch 'develop' into main 2024-07-05 08:07:22 +02:00
d488581e3a fixes build setup 2024-07-05 08:06:56 +02:00
97b52b9e05 updates submodules 2024-07-05 07:42:26 +02:00
6dbce5cb23 updates submodules to get extended finishing conditions 2024-07-05 05:57:12 +02:00
c19e7c6a46 update submodules to add FCOUNT 2024-07-04 10:48:33 +02:00
bfea2374b4 updates dbt-rise-tgc to pull template updates 2024-06-21 10:49:47 +02:00
2825646edc updates scc 2024-06-21 09:28:49 +02:00
c1e0379f7b Merge branch 'develop' into main 2024-06-20 07:10:59 +02:00
d602c61dfe updates README to re-apply fixes for #1 and #2 2024-06-20 07:10:38 +02:00
4b65d31b89 Merge branch 'develop' into main 2024-06-20 07:06:27 +02:00
bbe7e7525e updates submodules 2024-06-14 19:55:01 +02:00
ac23db44cf applies clang-format 2024-06-14 17:43:26 +02:00
4964fe3f79 updates CLI of CMake 2024-06-14 17:40:23 +02:00
bea38f761d enables tcc in Jenkins 2024-05-31 10:59:02 +02:00
405bae926c updates submodules 2024-05-31 10:58:41 +02:00
9c0cb351fe updates min cmake version 2024-05-31 10:57:47 +02:00
3b6f7b5e83 disables TCC in Jenkinsfile 2024-05-22 18:04:13 +02:00
dc8e631824 enables TCC in Jenkinsfile 2024-05-22 18:00:24 +02:00
e67306b781 adds final-ish Jenkinsfile, removes action, updates submodule 2024-05-22 17:47:31 +02:00
f8152e8ca5 sets Conanhome in jenkinsfile
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m10s
2024-05-22 15:58:39 +02:00
2dc4409928 adds missing steps
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m19s
2024-05-22 15:35:02 +02:00
558d5849a6 adds interp test
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Has been cancelled
2024-05-22 15:33:40 +02:00
aa69088189 adds build step to Jenkinsfile
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m26s
2024-05-22 15:21:57 +02:00
92283be000 changes Jenkinsfile to Info only
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 5m52s
2024-05-22 15:10:15 +02:00
73c9934708 Adds Jenkinsfile
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m37s
2024-05-22 14:05:29 +02:00
ff649a9d97 updates dbt-rise-core
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m14s
2024-05-15 17:09:42 +02:00
4c2d8f2d97 updates submodules
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m11s
2024-05-11 15:27:08 +02:00
6e3bbad01b updates submodule
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m17s
2024-05-11 15:17:12 +02:00
ae03038323 makes building tcc dependent on WITH_TCC option
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m18s
2024-05-11 15:07:20 +02:00
b8fa095940 disables tcc in action
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 1m55s
2024-05-11 14:56:21 +02:00
d4a2e133eb asmjit should pass act now
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 2m8s
2024-05-11 14:52:56 +02:00
17b8e4a7fc actions are tricky
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m47s
2024-04-22 20:52:19 +02:00
ddec62b3a3 does this work?
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 1m15s
2024-04-22 20:50:25 +02:00
5a7ab89f43 more testing
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 1m17s
2024-04-22 20:48:20 +02:00
36487d1b75 more testing
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 1m20s
2024-04-22 20:46:25 +02:00
c65cf3a804 ident fix
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m34s
2024-04-22 20:36:50 +02:00
e03001dd91 working on more solutions 2024-04-22 20:36:03 +02:00
3d216107d9 adds apparently working solution
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 6m50s
2024-04-22 20:28:07 +02:00
ff1fe0f1af fixes indentation
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m44s
2024-04-22 20:20:55 +02:00
493b8be2ed adds more approaches 2024-04-22 20:19:18 +02:00
b347393ff6 adds yet another approach
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 6m27s
2024-04-22 20:09:32 +02:00
bdb7cbd36d adds different approach to indicate failure
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 6m41s
2024-04-22 19:56:07 +02:00
646452e0ea changes since continue on error for a job is disable for gitea
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 7m12s
2024-04-22 19:45:17 +02:00
f41056924c removes ls on mounted volume
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 5m18s
2024-04-22 19:16:38 +02:00
bc1e82952a adds valid volume
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 59s
2024-04-22 18:49:03 +02:00
03bb12efdb adds test for mount
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Has been cancelled
2024-04-22 18:43:13 +02:00
7b6c0291b2 fixes typo, moves continue on error
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 5m20s
2024-04-22 18:32:59 +02:00
bd30872ed3 sets CONAN_USER_HOME instead
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 6m40s
2024-04-22 18:24:04 +02:00
74abd3032a adds CONAN_HOME as shell env variable
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 6m46s
2024-04-22 18:12:40 +02:00
2e14223e1e changes syntax
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Has been cancelled
2024-04-22 18:10:08 +02:00
4a09f1c634 debugging env
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Has been cancelled
2024-04-22 18:08:13 +02:00
d322c7c9d8 updates env setting
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Has been cancelled
2024-04-22 18:05:51 +02:00
bc6eed67e8 adds Conanhome to action
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 7m3s
2024-04-22 17:12:20 +02:00
57ce6aab92 updates dbt-rise-tgc and updates build system
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 6m28s
2024-04-16 14:47:58 +02:00
734522f6c3 fix log macro riscv_hart_common
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 8m36s
2024-04-15 13:06:33 +02:00
9c7b95ae23 adds dirs and continue despite error
All checks were successful
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Successful in 8m31s
2024-03-24 18:21:23 +01:00
cf8472f2fc changes job name
Some checks failed
Run architectural test suite on backends / Build ISS, Setup TGC-COMPLIANCE, Run tests on backends (push) Failing after 6m21s
2024-03-24 18:00:41 +01:00
cc23e02b89 moves tests into single job
Some checks failed
Run architectural test suite on backends / Build ISS and Setup TGC-COMPLIANCE (push) Has been cancelled
2024-03-24 17:59:36 +01:00
f21461e1ab changes typo
Some checks failed
Run architectural test suite on backends / Build ISS and Setup TGC-COMPLIANCE (push) Successful in 6m38s
Run architectural test suite on backends / Test interp backend (push) Failing after 1m3s
Run architectural test suite on backends / Test llvm backend (push) Successful in 1m0s
Run architectural test suite on backends / Test tcc backend (push) Failing after 1m2s
Run architectural test suite on backends / Test asmjit backend (push) Failing after 1m1s
2024-03-24 17:33:23 +01:00
13094e78ce removes supposed fix
Some checks failed
Run architectural test suite on backends / Test interp backend (push) Blocked by required conditions
Run architectural test suite on backends / Test llvm backend (push) Blocked by required conditions
Run architectural test suite on backends / Test tcc backend (push) Blocked by required conditions
Run architectural test suite on backends / Test asmjit backend (push) Blocked by required conditions
Run architectural test suite on backends / Build ISS and Setup TGC-COMPLIANCE (push) Has been cancelled
2024-03-24 17:32:18 +01:00
7bb4c283a3 latest changes
Some checks failed
Run architectural test suite on backends / Build ISS and Setup TGC-COMPLIANCE (push) Failing after 2m0s
Run architectural test suite on backends / Test interp backend (push) Has been skipped
Run architectural test suite on backends / Test llvm backend (push) Has been skipped
Run architectural test suite on backends / Test tcc backend (push) Has been skipped
Run architectural test suite on backends / Test asmjit backend (push) Has been skipped
2024-03-24 17:29:17 +01:00
86f58adaa4 makes pretty :)
Some checks failed
Run architectural test suite on backends / Build ISS and Setup TGC-COMPLIANCE (push) Failing after 4m58s
Run architectural test suite on backends / Test interp backend (push) Has been skipped
Run architectural test suite on backends / Test llvm backend (push) Has been skipped
Run architectural test suite on backends / Test tcc backend (push) Has been skipped
Run architectural test suite on backends / Test asmjit backend (push) Has been skipped
2024-03-24 17:06:56 +01:00
4efcbfbd35 Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop 2024-03-24 17:05:55 +01:00
ac08908336 fixes indentation 2024-03-24 17:05:50 +01:00
60e6fec07d removes empty lines 2024-03-24 17:03:15 +01:00
061b21ed51 Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop 2024-03-24 17:01:42 +01:00
406cec6d27 cleans up workflow 2024-03-24 17:01:34 +01:00
95096fe98a changes build system to always build cmake
Some checks failed
Interp architectural test suite / Setup and build ISS (push) Failing after 4m25s
Interp architectural test suite / Test llvm backend (push) Has been cancelled
Interp architectural test suite / Test tcc backend (push) Has been cancelled
Interp architectural test suite / Test asmjit backend (push) Has been cancelled
Interp architectural test suite / Test interp backend (push) Has been cancelled
2024-03-24 16:50:28 +01:00
5bbdb3bfa2 changes zlib version
Some checks failed
Interp architectural test suite / Setup and build ISS (push) Failing after 2m28s
Interp architectural test suite / Test llvm backend (push) Has been cancelled
Interp architectural test suite / Test tcc backend (push) Has been cancelled
Interp architectural test suite / Test asmjit backend (push) Has been cancelled
Interp architectural test suite / Test interp backend (push) Has been cancelled
2024-03-24 16:22:12 +01:00
6c304055bf updates build system to cope better with CentOS
Some checks failed
Interp architectural test suite / Setup and build ISS (push) Failing after 2m23s
Interp architectural test suite / Test interp backend (push) Failing after 1m6s
Interp architectural test suite / Test llvm backend (push) Failing after 1m14s
Interp architectural test suite / Test asmjit backend (push) Has been cancelled
Interp architectural test suite / Test tcc backend (push) Has been cancelled
2024-03-24 16:15:21 +01:00
6ef27d8c58 adds correct syntax
Some checks failed
Interp architectural test suite / Setup and build ISS (push) Failing after 4m10s
Interp architectural test suite / Test interp backend (push) Failing after 1m18s
Interp architectural test suite / Test tcc backend (push) Has been cancelled
Interp architectural test suite / Test asmjit backend (push) Has been cancelled
Interp architectural test suite / Test llvm backend (push) Has been cancelled
2024-03-24 16:02:00 +01:00
4c64d076fc adds tests for all backends 2024-03-24 15:58:38 +01:00
538406e9f3 adds correct branch checkout
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 7m40s
2024-03-24 15:49:59 +01:00
0d5eb6c1ce hopefully last debug
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 7m5s
2024-03-24 13:54:12 +01:00
c785b0e33c debug
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 6m46s
2024-03-24 13:44:33 +01:00
dd47d9d9d1 debug
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 6m40s
2024-03-24 13:35:49 +01:00
c9ce22379b debug
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 6m16s
2024-03-24 13:26:17 +01:00
607aca574c debug
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 6m11s
2024-03-24 13:14:30 +01:00
247bed12ee updates submodules
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 6m24s
2024-03-24 13:03:02 +01:00
b7ee50dc21 removes debug messages 2024-03-24 12:57:46 +01:00
417921fc55 debug
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 6m38s
2024-03-24 12:53:34 +01:00
e0e9a207e8 fake commit 2
All checks were successful
Interp architectural test suite / Build and test interp backend (push) Successful in 7m9s
2024-03-24 12:29:24 +01:00
de56a5c5a3 fake commit 2024-03-24 12:29:00 +01:00
1baed20dbb fixes oversight
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 6m12s
2024-03-24 12:17:42 +01:00
246fbdefb6 fixes typo
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 5m55s
2024-03-24 12:11:24 +01:00
afff028374 next debug
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 6m7s
2024-03-24 12:04:58 +01:00
070f179ca8 restricts ssh permissions
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 1m22s
2024-03-24 12:02:55 +01:00
b157d916cb accepts ssh fingerprint
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 1m31s
2024-03-24 12:00:09 +01:00
eb98e7525f adds different auth checkout
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 1m46s
2024-03-24 11:56:03 +01:00
a817b7b47b adds verbosity for debugging action
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 1m27s
2024-03-24 11:46:09 +01:00
5545f58f85 adds ssh auth for checkout
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 1m16s
2024-03-24 11:43:01 +01:00
11d7a731ce changes checkout to git clone
Some checks failed
Interp architectural test suite / Build and test interp backend (push) Failing after 6m5s
2024-03-24 11:16:02 +01:00
37a47b0f83 Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop
Some checks failed
Interp architectural test suite / test and publish job (push) Failing after 6m50s
2024-03-24 11:05:33 +01:00
cbdf6aab01 adds action to test interp 2024-03-24 11:05:23 +01:00
0050dfd523 update formatting in dbt-rise submodules 2024-03-19 11:51:02 +01:00
262df83e8e Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop 2024-03-19 11:28:45 +01:00
5c6732f1ae updates submodules 2024-03-19 11:28:34 +01:00
4c107e03a0 fixes installation for PA 2024-03-15 16:48:03 +01:00
862b852f96 Add a new LOG macro in SCC to avoid conflicts with other libraries. 2024-03-14 09:46:01 +01:00
7a70f103f2 updates submodules 2024-03-07 13:58:42 +01:00
9d647b72d7 updates submodules 2024-02-21 07:10:49 +01:00
bd23b776bd updates FW location link 2024-02-21 07:08:46 +01:00
fa79e3f0c9 updates dbt-rise-core with clang-format changes 2024-02-15 10:17:30 +01:00
17f9f06dae updates scc to pull in AXI4 pinlevel target fix 2024-02-08 21:19:42 +01:00
8393aa568f updates dbt-rise-tgc 2024-01-12 11:49:33 +01:00
e4ee3fc7d8 updates scc 2024-01-12 09:36:13 +01:00
5bc46da768 updates submodules 2024-01-12 08:41:30 +01:00
6c0d7d91aa makes TGC-ISS installable 2024-01-10 09:44:18 +01:00
3c6c0337e5 updates scc 2023-12-22 10:49:44 +01:00
4bcad78a22 updates scc 2023-12-20 10:01:37 +01:00
5a121af14a updates iss 2023-12-17 12:56:04 +01:00
e38d3e3b13 updates scc 2023-12-17 12:32:42 +01:00
d4f71de938 updates iss 2023-12-16 18:07:16 +01:00
6418867a28 adds asmjit to test script 2023-12-14 14:28:17 +01:00
8902d96ad4 updates scc 2023-12-09 18:10:27 +01:00
c8d6537fde updates scc 2023-12-09 16:56:25 +01:00
0690f07fca updates submodule 2023-12-02 17:43:19 +01:00
5e0c19f7a0 moves riscv toolchain to riscv64-unknown-elf 2023-12-02 09:23:30 +01:00
940b05e71d apply clang-format 10 fixes 2023-12-01 14:52:03 +01:00
a9d2b5b564 updates submodules to apply clang-format fixes 2023-11-30 11:52:12 +01:00
a8c9b5fe18 updates submodules 2023-11-22 11:53:34 +01:00
9b1f8de430 updates dbt-rise-tgc 2023-11-05 17:19:58 +01:00
d5f5eae880 updates scc 2023-11-05 16:35:01 +01:00
d07614989e updates dbt-rise-tgc and scc 2023-11-05 16:25:27 +01:00
614c8702bf updates scc 2023-11-05 15:39:50 +01:00
5bec3c33b0 updates scc 2023-10-30 20:49:34 +01:00
9235848c6a updates environment setup 2023-10-29 18:57:09 +01:00
4ef49674ec updates .gitignore 2023-10-29 17:13:38 +01:00
a703188c8b removes dbt-rise-plugins submodule 2023-10-29 17:11:52 +01:00
864ccd9165 updates submodules 2023-10-29 17:11:25 +01:00
b48d2b76d2 adapts to changes in submodules 2023-10-29 16:20:38 +01:00
b1c78c19bd update submodules 2023-10-29 16:07:20 +01:00
eda55ae93e updates scc 2023-10-29 15:20:24 +01:00
bff845d5dc updates scc 2023-10-29 14:50:24 +01:00
9560956e8d updates dbt-rise submodules 2023-10-29 14:32:48 +01:00
fbcabc4fd5 updates modules 2023-10-22 15:27:00 +02:00
edb8c6ef5b Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop 2023-10-22 15:10:22 +02:00
9fa17e41e5 adds asmjit 2023-10-22 15:10:17 +02:00
6a00ef075d updates config files 2023-10-21 22:03:54 +02:00
49165b2120 updates submodules 2023-10-21 21:32:50 +02:00
4f67fd47c2 updates submodules 2023-10-19 09:45:49 +02:00
74f8d71645 cleans structure and parts of implementation 2023-10-01 18:33:52 +02:00
292bc1d92a updates dbt-rise-tgc 2023-09-30 22:17:41 +02:00
4cb8ca3f61 updates project configuration 2023-09-30 22:11:48 +02:00
73476e4c90 updates dbt-rise-tgc 2023-09-27 07:52:05 +02:00
92d96af651 updates dbt-rise-tgc 2023-09-27 06:20:20 +02:00
b7c3379e19 updates submodules 2023-09-26 20:19:36 +02:00
5198c5f91b updates submodule 2023-09-25 11:01:19 +02:00
b406743206 updates submodule 2023-09-25 09:45:31 +02:00
d29c2bca04 adds newest changes 2023-09-23 11:31:18 +02:00
5493c3030c Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop 2023-09-22 12:43:44 +02:00
2b15c90bc1 adds newest submodules 2023-09-22 12:43:35 +02:00
31fdf14b23 tweaks for test script 2023-09-22 12:43:21 +02:00
e17e463cf3 adds script to run UCB riscv tests 2023-09-20 09:36:32 +02:00
4061cde25c updates dbt-rise-tgc 2023-09-19 12:12:07 +02:00
20a4706289 updates dbt-rise-tgc 2023-09-09 18:56:35 +02:00
f85825c3cd updates dbt-rise-core to get fixed cmake settings 2023-09-07 08:14:08 +02:00
5883ef1e8d updates naming 2023-09-04 12:48:55 +02:00
4c508e218a updates scc 2023-08-30 18:23:46 +02:00
7e3b296201 updates dbt-rise-tgc 2023-08-30 17:12:05 +02:00
cd256bbf69 updates iss & dbt-rise-tgc 2023-08-30 15:49:48 +02:00
5e35336825 updates forgotten dbt-rise-core 2023-08-30 14:58:23 +02:00
55a0846dc7 updates dbt-rise-tgc pulling in changed core names 2023-08-30 11:47:52 +02:00
6ee7159ee7 fixes fw add subdir 2023-08-20 16:47:28 +02:00
af015e0fe8 adds fw builds to CMakeLists.txt 2023-08-20 16:01:26 +02:00
b12da49384 updates dbt-rise-tgc 2023-08-08 06:23:56 +02:00
79073759d3 updates dbt-rise modules 2023-08-04 13:16:02 +02:00
2e21148f37 purge build system 2023-07-30 14:03:36 +02:00
ef9f479b43 updates submodules 2023-07-30 09:27:46 +02:00
02169317fd adds llvm support 2023-07-17 19:57:24 +02:00
dd43191eb3 updates dbt-rise-tgc 2023-07-10 20:39:22 +02:00
56ce60318b updates dbt-rise-tgc 2023-07-10 12:53:10 +02:00
75935ff9c4 reverts last commit 2023-07-09 22:49:54 +02:00
d68ad400cc fixes error in iss 2023-07-09 22:49:19 +02:00
a21c59868d removes erronously added dir 2023-07-09 22:47:42 +02:00
d8b64a32a8 updates build system 2023-07-09 22:23:43 +02:00
4c7410c06b updates dbt-rise-tgc 2023-07-09 20:17:20 +02:00
32c5bd4989 updates dbt-rise-tgc 2023-07-09 20:13:45 +02:00
087a1af261 updates dbt-rise-* submodules 2023-07-09 18:21:58 +02:00
10db99f130 updates submodule 2023-07-09 17:01:30 +02:00
77dc5b9f52 updates submodule and eclipse build config 2023-07-06 10:41:09 +02:00
329818adf3 updates dbt-rise-tgc 2023-07-05 08:36:37 +02:00
f56cad7148 updates scc 2023-06-14 09:49:40 +02:00
f9082e70d4 updates dbt-rise-tgc 2023-06-12 17:39:18 +02:00
3a5d549f46 updates submodules 2023-06-12 09:59:20 +02:00
d4eef1060f updates submodules 2023-06-11 18:31:04 +02:00
c4460dfeee updates submodule 2023-06-05 17:58:12 +02:00
b8645312eb Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop 2023-06-05 15:22:31 +02:00
e6e3dc3f13 updates submodules 2023-06-05 15:20:28 +02:00
cac68ac8c2 adds helperscript for easier debugging 2023-06-05 15:19:58 +02:00
97538fce12 updates dbt-rise-tgc 2023-06-01 06:57:35 +02:00
ca0d7da4fc updates submodules and README.md 2023-05-31 11:57:19 +02:00
af2473b7a4 updates submodules 2023-05-25 21:17:23 +02:00
02abdbfe7f updates submodules 2023-05-25 12:52:48 +02:00
f2cc43c226 Merge branch 'develop' of https://git.minres.com/TGFS/TGC-ISS into develop 2023-05-16 21:59:38 +02:00
78026158d1 updates submodules 2023-05-16 21:59:23 +02:00
70006f7b5f update dbt-rise-tgc 2023-05-16 08:57:20 +02:00
7f04090efe updates submodules 2023-05-15 15:25:14 +02:00
1fad8b6e04 updates dbt-rise-tgc 2023-05-13 16:57:18 +02:00
671ab49353 fixes segfault when backend is missing 2023-05-12 15:46:28 +02:00
e65af50c39 does cleanup and adds some comments 2023-05-12 09:58:40 +02:00
6b9d52ff80 reshapes build system to allow standalone C++ build as well as for PA 2023-05-12 09:44:08 +02:00
bd6a864bc5 fixes build system to include dbt-rise-plugins 2023-05-11 23:19:29 +02:00
46607eb4c2 added small additions to the PA flow description 2023-05-10 18:32:23 +02:00
0b01677bcb updates dbt-rise-tgc 2023-05-06 19:58:36 +02:00
033fa1eede Merge branch 'master' of https://git.minres.com/TGFS/TGC-ISS.git 2023-05-04 22:02:55 +02:00
1e73127950 Merge branch 'develop' 2023-05-04 22:02:40 +02:00
1437c3b3e6 Merge remote-tracking branch 'origin/master' into develop 2023-05-04 22:01:06 +02:00
f7350d7b3d updates dbt-rise-tgc 2023-05-04 21:59:59 +02:00
460863d7a1 Merge pull request 'adds toplevel README' (!2) from develop into master
Reviewed-on: #2
2023-05-04 21:07:48 +02:00
01b0b2231d adds toplevel README 2023-05-04 21:06:49 +02:00
33aa2339c8 Merge branch 'develop' 2023-05-04 20:46:03 +02:00
0529275428 adds LICENSE file 2023-05-04 20:40:14 +02:00
5c9b33f65f updates dbt-rise-tgc 2023-05-04 16:08:53 +02:00
ef6d996045 updates build settings 2023-05-04 13:25:24 +02:00
b4a1e2273f removes CoreDSL generator submodule 2023-05-04 13:07:06 +02:00
30e67eb0e0 fixes CLIC to match clicinfo description in CLIC spec 11.04.2023 2023-05-02 17:23:13 +02:00
d987681e88 updates tgc 2023-05-02 11:21:58 +02:00
060706c61f updates submodules and Modulefile 2023-05-02 11:14:19 +02:00
93d3810a7f updates dbt-rise-tgc 2023-05-01 22:23:53 +02:00
1ed5c228bf updates dbt-rise-core 2023-05-01 09:49:48 +02:00
824700bd1b changes instrumentation interface 2023-04-28 20:40:36 +02:00
312cf3c4da updates build system 2023-04-14 19:35:14 +02:00
e2cb1697ec updates CMakeLists.txt settings (C++ std, conan remote) 2023-04-13 20:53:59 +02:00
bf46e5eec7 fixes M/u wrapper to cope with 64bits 2023-04-05 15:40:10 +02:00
a7f4e93c1d adds changes from latest coredsl description 2023-04-04 16:10:36 +02:00
c22e85d30d fixes wrong path specs 2023-04-04 10:31:16 +02:00
f8306b2473 updates privilege wrapper 2023-04-04 09:24:06 +02:00
8c00e89bf5 fixes precedence between assignment and declaration values 2023-03-27 13:25:01 +02:00
3ec2934fe1 fixes 64bit behavior of CSR regs 2023-03-27 12:05:36 +02:00
4bd81ca676 fixes bit size extension rules 2023-03-26 14:44:42 +02:00
0bdda6182b fix data width of generated code 2023-03-26 12:12:49 +02:00
4e86e71771 fixes mstatus mask 2023-03-25 09:15:20 +01:00
76657668fc adds 64bit capability 2023-03-23 07:48:26 +01:00
65a5d6b7c1 updates scc 2023-03-21 19:20:38 +01:00
4fe8b02f56 updates scc 2023-03-19 20:04:10 +01:00
a933105f08 updates scc 2023-03-17 11:33:22 +01:00
9341523103 fixes m/uintstatus read 2023-03-17 10:51:49 +01:00
8a9d1e2b46 fixes m/uintstatus read 2023-03-17 10:23:17 +01:00
561bb598f7 implements and fixes CLIC CSR behavior 2023-03-17 09:11:08 +01:00
255b8e5d71 fixes wrong array size which led to unintended CSR definitions 2023-03-15 14:16:20 +01:00
0d97d02da1 fixes xcause and u-mode clic CSRs 2023-03-15 12:28:07 +01:00
ad88a71797 removes mscratchcsw from CLIC 2023-03-15 09:07:19 +01:00
520b4313ae updates tgc 2023-03-12 07:42:38 +01:00
c055515f0b fixes CLIC mtvt register behavior 2023-03-11 14:03:47 +01:00
ccc3253844 updates dbt-rise-tgc 2023-03-11 12:47:26 +01:00
6b28548fef updates dbt-rise-tgc 2023-03-11 08:48:22 +01:00
fb8aabb31c updates iss 2023-03-10 20:42:10 +01:00
8a51b233ef update scc 2023-02-18 09:02:28 +01:00
616ea16991 updates dbt-rise-tgc 2023-02-17 06:36:58 +01:00
ef1856957a updates scc and dbt-rise-tgc thus fixing AXI4(L) problems 2023-02-17 06:30:02 +01:00
d1db9825c9 fixes erroneous bit_sub handling 2023-02-16 13:20:47 +01:00
7cf08b9c7b updates dbt-rise-tgc to match latest fast interrupts spec 2023-01-20 16:21:49 +01:00
015f03e312 updates dbt-rise-tgc 2023-01-14 17:41:07 +01:00
d0b7560c0b adds jsoncpp/1.9.5 2023-01-06 16:29:08 +01:00
bc2bf6143b updates scc and dbt-rise-tgc 2022-12-12 02:56:09 +01:00
4a911a3bd3 updates SCC and dbt-rise-tgc 2022-12-05 09:16:10 +01:00
0a49b91436 updates submodules 2022-11-03 20:15:14 +01:00
e166fd4b9e updates scc 2022-10-15 14:05:40 +02:00
a4216facfc updates scc 2022-10-15 13:35:37 +02:00
63faebadc5 updates iss 2022-10-15 10:47:47 +02:00
e5854d1707 updates dbt-rise-tgc 2022-10-10 08:59:43 +02:00
5b0b2b1d58 updates dbt-rise-tgc 2022-10-08 11:21:13 +02:00
a5887d015d updates dbt-rise-tgc 2022-10-05 09:00:03 +02:00
8196778453 fixes static build 2022-09-28 19:38:19 +02:00
436ed6ca08 fixes shared libraries build 2022-09-27 21:16:20 +02:00
e4d1bb1224 makes code generation configurable 2022-09-27 09:12:12 +02:00
76e58eee1c makes boost statically linked 2022-09-26 13:34:05 +02:00
43c1c5be88 update dbt-rise-tgc to fix write mask of clic memory mapped registers 2022-09-17 12:16:59 +02:00
151cc8cb7c updates scc 2022-09-10 12:56:05 +02:00
84ca04427d fixes wrong check for exception 2022-08-31 11:46:29 +02:00
bfbd4ad271 updates iss generator 2022-08-24 06:53:55 +02:00
1e5ddbf1cc updates submodules 2022-08-08 06:35:28 +02:00
4a0ad84621 updates scc 2022-08-05 19:55:19 +02:00
6e0cbcfdd7 updates dbt-rise-tgc 2022-07-23 14:36:40 +02:00
1e11b401f8 fixes cppcheck flagged issues 2022-07-23 13:50:07 +02:00
da05ec4478 updates scc 2022-07-22 21:37:29 +02:00
91a3a35dff updates scc 2022-07-22 08:51:58 +02:00
6ec8a1b9cb updates scc 2022-07-14 17:55:09 +02:00
0dee6cc485 updtaes tgc_c vm code 2022-07-12 22:34:40 +02:00
0d1b7a5cdb updates coredsl generator and generated tgc_c files 2022-07-11 22:59:14 +02:00
a987e1a12f updates scc 2022-07-08 08:13:26 +02:00
8da2a7881b updates scc 2022-07-07 20:08:34 +02:00
5c908a29f5 updates scc 2022-07-07 19:24:36 +02:00
20ae2af4e5 updates scc 2022-07-07 09:38:03 +02:00
cb6af695b9 removes instruction decoder 2022-06-20 00:39:47 +02:00
0fd9c94067 refactors decoder as separate component 2022-06-19 16:53:00 +02:00
41116a975e update dbt-rie-core 2022-06-18 18:05:22 +02:00
17241844f8 removes compilation of unneded files 2022-06-10 07:20:04 +02:00
fb12440c83 add lz4 to ISS standalone build 2022-06-02 08:45:24 +02:00
2c8cc745c8 update dbt-rise-tgc 2022-06-02 08:36:15 +02:00
f0bdfbe970 update dbt-rise-tgc with fixed ISS build 2022-05-31 11:05:49 +02:00
9108da6b4a update dbt-rise-tgc 2022-05-30 22:16:03 +02:00
8dd499a88f fix generation of non-exception code 2022-05-30 22:04:24 +02:00
cc9a94c3b8 update dbt-rise-tgc 2022-05-30 14:18:32 +02:00
9200a3bbef fix setup to work with previous code gen 2022-05-30 14:08:33 +02:00
8da5dc278d update to pull in unified src layout 2022-05-30 07:49:50 +02:00
56435e44ec fix exception handling for memory debug accesses 2022-05-13 17:02:06 +02:00
cf7ed3e752 update to latest CoreDSL generator and SCC 2022-05-11 18:55:30 +02:00
8f1cadfacf update SCC 2022-05-10 16:17:24 +02:00
4661129b8b update generate script 2022-05-10 16:13:56 +02:00
fd037c1b40 update dbt-rise-tgc 2022-05-08 15:27:22 +02:00
6cec3f1634 update tgc and scc 2022-05-07 17:22:47 +02:00
e4c2d3083b update iss 2022-04-29 17:40:48 +02:00
6f1813d153 extend instrumentation interface 2022-04-26 17:14:46 +02:00
d9986b66c9 update scc to latest 2022-04-24 16:28:32 +02:00
1a8566be34 Merge branch 'develop' 2022-04-23 17:17:06 +02:00
b4ac62ab5a update TGC and SCC 2022-04-13 11:42:18 +02:00
60d0cef378 update iss 2022-04-13 07:50:44 +02:00
933747abb7 update scc 2022-04-12 10:30:55 +02:00
d1fdd972e0 update submodules 2022-04-10 18:56:01 +02:00
a51173c4a8 update submodules and locations 2022-04-09 14:55:56 +02:00
92d3c75db0 update iss/scc 2022-04-06 20:55:18 +02:00
a66d15e69e update scc 2022-04-06 07:30:13 +02:00
4bcf6ebc08 update scc 2022-04-05 13:34:16 +02:00
f5d4598162 update coredsl generator 2022-04-01 22:25:08 +02:00
74e08ae011 update coredsl generator 2022-04-01 21:36:03 +02:00
34dd7db4fe adapt mip reg to privileged spec 2022-03-31 20:33:45 +02:00
20cf5796ad update dbt-rise-tgc 2022-03-28 14:10:59 +02:00
64e55dc7d5 update dbt-rise-tgc 2022-03-27 20:51:36 +02:00
aa2fc8c99b remove mcounteren in M-mode only wrapper 2022-03-27 17:21:55 +02:00
80f8da4e31 add TCM 2022-03-27 15:52:42 +02:00
8564228d46 add TGC_X with DMR 2022-03-26 10:48:31 +01:00
9465b2c7e3 add HWL csr access and update env 2022-03-25 11:34:21 +01:00
a02492db51 update dbt-rise-tgc 2022-03-20 17:43:13 +01:00
5ed197ef1b update coredsl 2022-03-19 08:45:26 +01:00
825e2afd4d add TGC_A fixes 2022-03-14 15:38:46 +01:00
9ee6d6f09b update generator 2022-03-09 21:54:17 +01:00
6d4bc98651 update coredsl generator implementation 2022-03-09 21:26:44 +01:00
4dc6de3625 change interpreter structure and update CoreDSL generator to v2.0.2 2022-03-06 15:13:29 +01:00
47e6582498 update coredsl generator 2022-03-06 10:41:56 +01:00
fe0e4571ec update iss (cleanup) 2022-02-14 20:36:28 +01:00
c2484b8ec8 update generator 2022-02-14 11:10:57 +01:00
557829a975 Merge branch 'tmp2' into develop 2022-02-11 17:25:53 +01:00
6c47979039 update submodules and paths 2022-02-11 17:21:26 +01:00
69131bb324 update submodule paths 2022-02-11 17:07:15 +01:00
40d93d5df4 update submodules 2022-02-09 21:03:13 +01:00
41f1b30d42 update scc 2022-02-06 17:00:23 +01:00
0f9deb24c7 update scc 2022-02-05 11:21:39 +01:00
6566148975 update iss 2022-02-02 21:34:37 +01:00
1ed351f199 update generation mechanism 2022-02-01 21:50:16 +01:00
b5d154c04d fix ISS standalone build 2022-02-01 07:51:00 +01:00
28da255535 update submodules 2022-01-31 23:51:07 +01:00
d7ef4b4728 update scc 2022-01-31 10:45:46 +01:00
bf3e5fab4d update coredsl 2022-01-13 17:18:06 +01:00
0a931d4f0f add spawn block generation and use capability 2022-01-12 07:22:00 +01:00
c87b68e006 update scc 2021-12-31 15:02:23 +01:00
d3fab7306c update scc 2021-12-30 19:42:25 +01:00
6beef03e5f update scc 2021-12-10 17:15:03 +01:00
705e100bb0 update tgfs 2021-12-05 08:46:00 +01:00
f829d18635 update scc 2021-12-05 08:15:20 +01:00
42f8642234 update scc 2021-12-03 11:42:53 +01:00
f84ada1347 update scc 2021-12-03 10:58:25 +01:00
e95a5782ce fix max irq inconsistency and make it configurable 2021-12-01 16:25:33 +01:00
da76464bd2 update coredsl generator 2021-11-28 15:15:13 +01:00
7e45a0afe2 update coredsl repo 2021-11-28 13:06:22 +01:00
ba8be555ec update tgfs for RB delivery 2021-11-26 17:56:58 +01:00
91e2329abb update scc 2021-11-24 08:56:51 +01:00
cdae9e75f8 fix clic_cfg access scheme 2021-11-17 07:59:24 +01:00
f13ac8e652 cleanup descriptions 2021-11-15 09:31:17 +01:00
4b0c42c1bf update tgfs to include ebreak fix 2021-11-13 12:48:07 +01:00
3dc98ed21e update tgfs 2021-11-12 08:17:15 +01:00
c15fef05d0 Merge branch 'develop' 2021-11-11 20:11:21 +01:00
d2ca747507 add TGC_D_XRB_NN definition 2021-11-11 12:16:48 +01:00
4619016f01 update tgfs 2021-11-11 09:58:33 +01:00
248cb2ac21 update scc and tgfs 2021-11-11 08:36:07 +01:00
b5d6a0e4d3 update tgfs 2021-11-09 19:47:51 +01:00
9523b275a6 update tgfs 2021-11-09 16:17:02 +01:00
b64ac814c1 update tgfs 2021-11-08 10:44:49 +01:00
db3a373abb update tgfs 2021-11-07 17:49:35 +01:00
c62a633685 update tgfs 2021-11-07 16:45:26 +01:00
300e3d86d6 add proper handling of store access fault (hart_mu_p) 2021-11-06 13:29:47 +01:00
e62a67cfdb change build setup to only generate files during cmake if in CI 2021-11-04 08:53:06 +01:00
c842327546 update submodules 2021-11-02 15:10:37 +01:00
dd483ccc22 update submodules 2021-11-02 11:25:50 +01:00
e7a84e2afe update tgfs 2021-10-30 13:37:50 +02:00
e9baa5be0f update dbt-core and tgfs 2021-10-30 12:59:53 +02:00
f0bce2fc13 update tgfs 2021-10-21 22:54:11 +02:00
48d925a229 update dbt-core 2021-10-17 12:32:18 +02:00
fda630a893 update to SCC changes 2021-10-17 12:26:48 +02:00
81aa30224b fix YAML generation 2021-10-01 23:49:26 +02:00
ec831d2da1 fix typo 2021-10-01 13:18:38 +02:00
cdf6954ee5 add instruction YAML generation to build flow 2021-10-01 13:06:42 +02:00
2d8acfdbe1 update tgfs to fix unaligned access behavior and marchid setting 2021-09-30 19:29:10 +02:00
aed35a1c25 update coredsl generator 2021-09-29 01:21:44 +02:00
c4a6a77002 fix JALR alignment in description 2021-09-29 00:45:56 +02:00
552a4a1be6 add instruction alignment setting 2021-09-29 00:04:28 +02:00
1781adc5c7 fix script options to make consistent 2021-09-23 21:12:14 +02:00
04ebd82f18 add support for non-compressed ISA 2021-09-23 21:10:17 +02:00
8200b5d948 update tgfs 2021-09-21 16:52:56 +02:00
d0cae79b35 cleanup cmake version requirements 2021-09-18 17:28:17 +02:00
7ccc443ee4 remove mcounteren in M-mode only platform 2021-09-18 11:40:33 +02:00
8e8ca9e2e7 cleanup conan setup 2021-09-17 07:58:14 +02:00
d92fa7813e remove left-over in CMakeLists.txt 2021-09-06 14:27:37 +02:00
9659d17496 update build system and add tgc_c_xrb_mac option 2021-09-04 13:05:47 +02:00
163d9406d1 adapt to changed toplevel core description file names 2021-09-04 12:48:55 +02:00
36 changed files with 2170 additions and 244 deletions

96
.clang-format Normal file
View File

@ -0,0 +1,96 @@
Language: Cpp
# BasedOnStyle: LLVM
# should be in line with IndentWidth
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 140
CommentPragmas: '^( IWYU pragma:| @suppress)'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 0
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '$'
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: Never
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
...

225
.cproject
View File

@ -14,11 +14,14 @@
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151" name="Debug" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914" name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1297474963" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1297474963" name="Linux GCC" nonInternalBuilderId="cmake4eclipse.mbs.builder" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1141103737" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder buildPath="/TGC-ISS/build/Debug" id="de.marw.cdt.cmake.core.genscriptbuilder.1100382234" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="de.marw.cdt.cmake.core.genscriptbuilder"/>
<builder buildPath="/TGC-ISS/build/Debug" id="cmake4eclipse.mbs.builder.1295402556" keepEnvironmentInBuildfile="false" name="CMake Builder" superClass="cmake4eclipse.mbs.builder"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.740869785" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1934077203" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1599133325" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.17118862" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1699395860" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
@ -42,10 +45,196 @@
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
<options/>
<defs>
<def name="ENABLE_CODEGEN" type="BOOL" val="ON"/>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
</defs>
</storageModule>
<storageModule buildDir="build/${ConfigName}" dirtyTs="1746805637052" moduleId="de.marw.cmake4eclipse.mbs.settings">
<options otherArguments="--preset RelWithDebInfo"/>
<defs>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="RelWithDebInfo"/>
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
<def name="WITH_TCC" type="BOOL" val="ON"/>
<def name="FW_BUILD" type="BOOL" val="ON"/>
<def name="ENABLE_CLANG_TIDY" type="BOOL" val="ON"/>
<def name="WITH_LLVM" type="BOOL" val="ON"/>
</defs>
</storageModule>
</cconfiguration>
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338" moduleId="org.eclipse.cdt.core.settings" name="Debug-PA">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338" name="Debug-PA" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1436777338." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1293780030" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1970512769" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder buildPath="/TGC-ISS/_build/Debug-PA" id="cmake4eclipse.mbs.builder.928900702" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cmake4eclipse.mbs.builder"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.207730824" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1262643605" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.766346102" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1887588287" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.934550669" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.435160258" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1246571083" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1000595204" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1443403714" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.assembler.base.1058800350" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1915245436" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
<options/>
<defs>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
</defs>
</storageModule>
<storageModule dirtyTs="1681455316836" moduleId="de.marw.cmake4eclipse.mbs.settings">
<options/>
<defs>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="Debug"/>
<def name="USE_CWR_SYSTEMC" type="BOOL" val="ON"/>
<def name="BUILD_SHARED_LIBS" type="BOOL" val="ON"/>
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
<def name="FW_BUILD" type="BOOL" val="ON"/>
</defs>
</storageModule>
</cconfiguration>
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382" moduleId="org.eclipse.cdt.core.settings" name="RelWithDebInfo">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382" name="RelWithDebInfo" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1009994445" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.1023431687" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder buildPath="/TGC-ISS/_build/Debug" id="cmake4eclipse.mbs.builder.87414385" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="unlimited" superClass="cmake4eclipse.mbs.builder"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.40272694" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.288344887" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1881910565" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1745748578" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1398015713" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1810687689" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.120562679" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1158166201" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.120238241" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.assembler.base.1253632883" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.502601048" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
<options/>
<defs>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
</defs>
</storageModule>
<storageModule buildDir="build/${ConfigName}" dirtyTs="1746805637052" moduleId="de.marw.cmake4eclipse.mbs.settings">
<options otherArguments="--preset RelWithDebInfo"/>
<defs>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="RelWithDebInfo"/>
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
<def name="WITH_TCC" type="BOOL" val="ON"/>
<def name="FW_BUILD" type="BOOL" val="ON"/>
<def name="ENABLE_CLANG_TIDY" type="BOOL" val="ON"/>
<def name="WITH_LLVM" type="BOOL" val="ON"/>
</defs>
</storageModule>
</cconfiguration>
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221" moduleId="org.eclipse.cdt.core.settings" name="RelWithDebInfo4Prof">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221" name="RelWithDebInfo4Prof" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.761803221." name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1676282966" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.base.199403809" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder buildPath="/TGC-ISS/_build/Debug" id="cmake4eclipse.mbs.builder.1047317958" keepEnvironmentInBuildfile="false" name="CMake Builder" parallelBuildOn="true" parallelizationNumber="unlimited" superClass="cmake4eclipse.mbs.builder"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1763962491" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.300429051" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.934487129" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="CWR_SYSTEMC=1"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1430696020" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.9511508" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.695529941" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1813114373" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1557756316" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.536309197" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.assembler.base.587229911" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1060210827" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule buildDir="build/${ConfigName}" moduleId="de.marw.cdt.cmake.core.settings">
<options/>
<defs>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="${ConfigName}"/>
</defs>
</storageModule>
<storageModule buildDir="build/${ConfigName}" dirtyTs="1727093289061" moduleId="de.marw.cmake4eclipse.mbs.settings">
<options/>
<defs>
<def name="CMAKE_BUILD_TYPE" type="STRING" val="RelWithDebInfo"/>
<def name="CMAKE_INSTALL_PREFIX" type="FILEPATH" val="${ProjDirPath}/install"/>
<def name="WITH_TCC" type="BOOL" val="ON"/>
<def name="FW_BUILD" type="BOOL" val="ON"/>
<def name="ENABLE_CLANG_TIDY" type="BOOL" val="ON"/>
<def name="ENABLE_GPROF" type="BOOL" val="ON"/>
</defs>
</storageModule>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
@ -53,6 +242,11 @@
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="RelWithDebInfo4Prof"/>
<configuration configurationName="Debug-PA">
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
</configuration>
<configuration configurationName="RelWithDebInfo"/>
<configuration configurationName="Default">
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
</configuration>
@ -60,14 +254,37 @@
<resource resourceType="PROJECT" workspacePath="/TGC-ISS"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
<storageModule cmakelistsFolder="" moduleId="de.marw.cmake4eclipse.mbs.settings">
<targets>
<target name=""/>
</targets>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151;cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914;cdt.managedbuild.tool.gnu.c.compiler.base.1699395860;cdt.managedbuild.tool.gnu.c.compiler.input.1583122935">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382;cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.;cdt.managedbuild.tool.gnu.cpp.compiler.base.288344887;cdt.managedbuild.tool.gnu.cpp.compiler.input.1745748578">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151;cdt.managedbuild.toolchain.gnu.base.1336041151.1615713914;cdt.managedbuild.tool.gnu.cpp.compiler.base.1934077203;cdt.managedbuild.tool.gnu.cpp.compiler.input.17118862">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382;cdt.managedbuild.toolchain.gnu.base.1336041151.1605951382.;cdt.managedbuild.tool.gnu.c.compiler.base.1398015713;cdt.managedbuild.tool.gnu.c.compiler.input.1810687689">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets>
<target name="format" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>$&lt;cmake4eclipse_dyn&gt;</buildArguments>
<buildTarget>format</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
</buildTargets>
</storageModule>
</cproject>

10
.envrc Normal file
View File

@ -0,0 +1,10 @@
module load ./Modulefile
distro=`/bin/lsb_release -i -s`
if [ $distro == "CentOS" ]; then
. /opt/rh/devtoolset-8/enable
. /opt/rh/rh-python38/enable
elif [ $distro == "Rocky" ]; then
. /opt/rh/gcc-toolset-11/enable
fi
layout python3
[ -f .envrc.$USER ] && . .envrc.$USER

27
.gitignore vendored
View File

@ -1,3 +1,26 @@
/build/
/Debug/
.settings
.settings
/.venv*
/Debug-PA/
/_build/
/install/
/analysis_results
.vscode
*.log
*tcc_jit*.c
*.disass
*.dis
*.objdump
*.asm
*.signature
*.elf
*.trc
/*.core_desc
/fasterDecoding/
*.ll
/dbt-rise-plugins
/.direnv
/TGC_C_XRB/
/.envrc.eyck
/.cache
CMakeUserPresets.json

18
.gitmodules vendored
View File

@ -1,12 +1,6 @@
[submodule "scc"]
path = scc
url = https://github.com/Minres/SystemC-Components.git
[submodule "tgfs"]
path = tgfs
url = https://git.minres.com/DBT-RISE/DBT-RISE-TGFS.git
[submodule "dbt-core"]
path = dbt-core
url = https://git.minres.com/DBT-RISE/DBT-RISE-Core.git
[submodule "coredsl"]
path = coredsl
url = https://git.minres.com/DBT-RISE/CoreDSL.git
[submodule "dbt-rise-core"]
path = dbt-rise-core
url = https://github.com/Minres/DBT-RISE-Core.git
[submodule "dbt-rise-tgc"]
path = dbt-rise-tgc
url = https://git.minres.com/DBT-RISE/DBT-RISE-TGC.git

View File

@ -30,4 +30,15 @@
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
<filteredResources>
<filter>
<id>1683227853345</id>
<name></name>
<type>10</type>
<matcher>
<id>org.eclipse.ui.ide.multiFilter</id>
<arguments>1.0-name-matches-false-false-install</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

View File

@ -1,65 +1,141 @@
cmake_minimum_required(VERSION 3.12)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_CURRENT_SOURCE_DIR}/scc/cmake)
cmake_minimum_required(VERSION 3.20)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
project(TGFS-ISS VERSION 1.0.0 LANGUAGES CXX)
project(TGC-ISS VERSION 1.0.0 LANGUAGES CXX)
set(CORE_NAME TGC_C CACHE STRING "The core to build the ISS for" )
set(WITH_LLVM FALSE CACHE BOOL "Build LLVM based backend")
if(CMAKE_PROJECT_NAME STREQUAL "TGC-ISS")
###########################################################################
# stand alone build settings
###########################################################################
set(CORE_NAME TGC5C CACHE STRING "The core to build the ISS for" )
option(ENABLE_SANITIZER "Enable address sanitizer" OFF)
option(ENABLE_GRPOF "Enable gprof instrumentation" OFF)
option(ENABLE_CLANG_TIDY "Add clang-tidy and clang-format automatically to builds" OFF)
option(WITH_TCC "Build TCC backend" OFF)
option(WITH_LLVM "Build LLVM backend" OFF)
option(WITH_ASMJIT "Build ASMJIT backend" ON)
option(PORTABLE "Build executable without platform specific optimizations" OFF)
include(GNUInstallDirs)
include(Conan)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
if(COMPILER_SUPPORTS_MARCH_NATIVE)
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
elseif(NOT(${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo"))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(warnings "-Wall -Wextra -Werror")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(warnings "/W4 /WX /EHsc")
endif()
setup_conan(TARGETS)
# This line finds the boost lib and headers.
set(Boost_NO_BOOST_CMAKE ON) # Don't do a find_package in config mode before searching for a regular boost install.
set(BOOST_ROOT ${CONAN_BOOST_ROOT})
find_package(Threads)
find_package(ZLIB)
include(clang-format)
set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Add clang-tidy automatically to builds")
if (ENABLE_CLANG_TIDY)
find_program (CLANG_TIDY_EXE NAMES "clang-tidy" PATHS /usr/local/opt/llvm/bin )
if (CLANG_TIDY_EXE)
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
set(CLANG_TIDY_CHECKS "-*,modernize-*")
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=${CLANG_TIDY_CHECKS};-header-filter='${CMAKE_SOURCE_DIR}/*';-fix"
CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_INSTALL_RPATH "${ORIGIN}")
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
if(COMPILER_SUPPORTS_MARCH_NATIVE AND NOT PORTABLE)
message(STATUS "Applying platform specific optimizations")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(warnings "-Wall -Wextra -Werror")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(warnings "/W4 /WX /EHsc")
endif()
if(ENABLE_SANITIZER)
list(APPEND CMAKE_C_FLAGS "-fsanitize=address")
list(APPEND CMAKE_CXX_FLAGS "-fsanitize=address")
list(APPEND CMAKE_EXE_LINKER_FLAGS "-fsanitize=address")
list(APPEND CMAKE_SHARED_LINKER_FLAGS "-fsanitize=address")
endif()
if(ENABLE_GPROF)
list(APPEND CMAKE_C_FLAGS "-pg")
list(APPEND CMAKE_CXX_FLAGS "-pg")
list(APPEND CMAKE_EXE_LINKER_FLAGS "-pg")
list(APPEND CMAKE_SHARED_LINKER_FLAGS "-pg")
endif()
include(GNUInstallDirs)
if(BUILD_SHARED_LIBS)
set(SHARED_FLAG "True")
else()
message(AUTHOR_WARNING "clang-tidy not found!")
set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) # delete it
set(SHARED_FLAG "False")
endif()
set(B2_VERSION 4.9.6)
set(CM_VERSION 3.20.5)
set(LLVM_VERSION 13.0.0)
find_package(fmt)
find_package(spdlog)
find_package(lz4)
find_package(gsl-lite)
find_package(yaml-cpp)
set(Boost_NO_BOOST_CMAKE ON) # Don't do a find_package in config mode before searching for a regular boost install.
set(BOOST_ROOT ${CONAN_BOOST_ROOT})
find_package(Threads)
find_package(ZLIB)
if(USE_CWR_SYSTEMC)
include(SystemCPackage)
endif()
###############################################################################
# setup clang-format and clang-tidy
###############################################################################
if (ENABLE_CLANG_TIDY)
set(CLANG_FORMAT_EXCLUDE_PATTERNS "build" "install")
find_package(ClangFormat)
find_program (CLANG_TIDY_EXE NAMES "clang-tidy" PATHS /usr/bin )
if (CLANG_TIDY_EXE)
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
set(CLANG_TIDY_CHECKS "-*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-avoid-bind.PermissiveParameterList")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-loop-convert.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-make-shared.")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-make-unique.")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-pass-by-value.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-raw-string-literal.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-replace-auto-ptr.IncludeStyle")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-replace-disallow-copy-and-assign-macro.MacroName")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-replace-random-shuffle.IncludeStyle")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-auto.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-bool-literals.IgnoreMacros")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-default-member-init.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-emplace.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-equals-default.IgnoreMacros")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-equals-delete.IgnoreMacros")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-nodiscard.ReplacementString")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-noexcept.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-nullptr.NullMacros")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-override.*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-transparent-functors.SafeMode")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},modernize-use-using.IgnoreMacros")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors")
#set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},cppcoreguidelines-*")
set(CLANG_TIDY_CHECKS "${CLANG_TIDY_CHECKS},clang-diagnostic-*,clang-analyzer-*")
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=${CLANG_TIDY_CHECKS};-header-filter='${CMAKE_SOURCE_DIR}/*';-fix"
CACHE STRING "" FORCE)
else()
message(WARNING "clang-tidy not found!")
set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) # delete it
endif()
endif()
if(FW_BUILD)
include(FetchContent)
set(FETCHCONTENT_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/..)
FetchContent_Declare(
riscvfw
GIT_REPOSITORY https://git.minres.com/Firmware/Firmwares.git
GIT_TAG develop
GIT_SHALLOW OFF
UPDATE_DISCONNECTED ON
)
FetchContent_GetProperties(riscvfw)
if(NOT riscvfw_POPULATED)
FetchContent_Populate(riscvfw)
endif()
add_subdirectory(${riscvfw_SOURCE_DIR})
endif()
endif()
include(CodeGen)
gen_coredsl(${CORE_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/tgfs/gen_input/TGFS.core_desc interp)
add_subdirectory(dbt-core)
add_subdirectory(scc)
add_subdirectory(tgfs)
add_subdirectory(dbt-rise-core)
add_subdirectory(dbt-rise-tgc)
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dbt-rise-plugins)
add_subdirectory(dbt-rise-plugins)
endif()
include(CTest)

52
CMakePresets.json Normal file
View File

@ -0,0 +1,52 @@
{
"version": 3,
"vendor": {
"conan": {}
},
"cmakeMinimumRequired": {
"major": 3,
"minor": 24,
"patch": 0
},
"configurePresets": [
{
"name": "Debug",
"displayName": "Debug build",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_POLICY_DEFAULT_CMP0091": "NEW",
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_CXX_STANDARD": "17",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "cmake/conan_provider.cmake"
}
},
{
"name": "RelWithDebInfo",
"cacheVariables": {
"CMAKE_POLICY_DEFAULT_CMP0091": "NEW",
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"CMAKE_CXX_STANDARD": "17",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "cmake/conan_provider.cmake"
}
},
{
"name": "Release",
"displayName": "Release build",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_POLICY_DEFAULT_CMP0091": "NEW",
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_CXX_STANDARD": "17",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "cmake/conan_provider.cmake"
}
}
]
}

114
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,114 @@
void checkout_project(String repoUrl, String branch = 'develop') {
checkout([
$class: 'GitSCM',
branches: [
[name: "*/${branch}"]
],
extensions: [
[$class: 'CleanBeforeCheckout'],
[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: true, recursiveSubmodules: true, reference: '', trackingSubmodules: false, shallow: true]
],
submoduleCfg: [],
userRemoteConfigs: [
[credentialsId: 'gitea-jenkins', url: repoUrl]
]
])
}
pipeline {
agent any
stages {
stage("Checkout and build"){
agent {docker { image 'ubuntu-riscv' }}
stages{
stage("Checkout TGC-Compliance and TGC-GEN"){
steps {
sh 'rm -rf * .??* '
checkout_project("https://git.minres.com/TGFS/TGC-ISS.git", "develop")
dir("TGC-COMPLIANCE"){
checkout_project("https://git.minres.com/TGFS/TGC-COMPLIANCE.git", "master")
}
dir("TGC-GEN"){
checkout_project("https://git.minres.com/TGFS/TGC-GEN.git", "develop")
}
}
}
stage("Generate cores and build TGC-ISS"){
steps {
sh '''
for core in TGC5A TGC5B TGC5D TGC5E TGC5F RV32GC; do
for backend in interp 'llvm' tcc asmjit; do
TGC-GEN/scripts/generate_iss.sh -o dbt-rise-tgc/ -c $core -b ${backend} TGC-GEN/CoreDSL/${core}.core_desc
done
done
for core in TGC6B TGC6C TGC6D TGC6E RV64GC; do
for backend in interp 'llvm' asmjit; do
TGC-GEN/scripts/generate_iss.sh -o dbt-rise-tgc/ -c $core -b ${backend} TGC-GEN/CoreDSL/${core}.core_desc
done
done
'''
sh 'conan profile detect --force'
sh 'rm -rf build'
sh 'cmake -S . -B build --preset Release -DWITH_ASMJIT=ON -DWITH_TCC=ON -DWITH_LLVM=OFF'
sh 'cmake --build build -j'
sh 'build/dbt-rise-tgc/tgc-sim --isa ?'
}
}
}
}
stage("Run test suite") {
agent {
docker {
image 'git.minres.com/tooling/riscof_sail:latest'
args ' -e CONAN_USER_HOME=/var/jenkins_home/workspace/riscof_sail'
}
}
stages {
stage('ACT 32bit') {
matrix {
axes {
axis {
name 'CORE'
values 'TGC5A', 'TGC5B', 'TGC5C', 'TGC5D', 'TGC5E', 'TGC5F', 'RV32GC'
}
axis {
name 'BACKEND'
values 'interp', /*'llvm',*/ 'tcc', 'asmjit'
}
}
stages {
stage('Run riscof') {
steps {
sh "mkdir -p ${BACKEND}"
sh "python3 TGC-COMPLIANCE/run_act.py -core ${CORE} -sim build/dbt-rise-tgc/tgc-sim -w ${BACKEND} --backend ${BACKEND}"
}
}
}
}
}
stage('ACT 64bit') {
matrix {
axes {
axis {
name 'CORE'
values 'TGC6B', 'TGC6C', 'TGC6D', 'TGC6E', 'RV64GC'
}
axis {
name 'BACKEND'
values 'interp', /*'llvm',*/ 'asmjit'
}
}
stages {
stage('Run riscof') {
steps {
sh "mkdir -p ${BACKEND}"
sh "python3 TGC-COMPLIANCE/run_act.py -core ${CORE} -sim build/dbt-rise-tgc/tgc-sim -w ${BACKEND} --backend ${BACKEND}"
}
}
}
}
}
}
}
}
}

29
LICENSE Normal file
View File

@ -0,0 +1,29 @@
BSD 3-Clause License
Copyright (c) 2016, MINRES Technologies GmbH
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -13,21 +13,10 @@ if { $distro == "CentOS" && ![info exists ::env(PROJECT)] && ![info exists ::env
puts stderr "Don't forget to execute 'scl enable devtoolset-7 bash'"
}
if {![info exists ::env(PROJECT)] && [file exists $::env(HOME)/.sdkman/candidates/java/11.0.9.hs-adpt/] != 1} {
puts stderr "Please install java via 'sdk install java 11.0.9.hs-adpt'!"
prereq java/11.0.9
} else {
prepend-path PATH $::env(HOME)/.sdkman/candidates/java/11.0.9.hs-adpt/bin
}
if {![info exists ::env(PROJECT)] && [file exists $::env(HOME)/.sdkman/candidates/maven/3.6.3] != 1} {
puts stderr "Please install mvn via 'sdk install maven 3.6.3'!"
prereq maven/3.6.3
} else {
prepend-path PATH $::env(HOME)/.sdkman/candidates/sbt/1.4.4/bin
}
module load tools/cmake tools/gcc-riscv64/9.2.0
module load tools/utilities
module load tools/cmake
module load tools/clang
module load tools/gcc-riscv64-unknown-elf/13
setenv PROJECT TGFS-ISS

88
README.md Normal file
View File

@ -0,0 +1,88 @@
# TGC-ISS
The ISS for the cores of The Good Folk Series (TGFS) of MINRES.
This ISS is based in DBT-RISE, a library to allow rapid ISS creation.
## Quick start
* you need to have a C++14 capable compiler, make or ninja, python, and cmake installed
> **Warning:** With the Usage of conan2 the LLVM backend became deprecated as there is no conan package available yet.
### common setup
* install conan.io (see also http://docs.conan.io/en/latest/installation.html):
```
pip3 install --user 'conan'
```
Another option is to use a Python VENV to isolate the used models from the system.
In case of please run:
```sh
python -mvenv .venv
source .venv/bin/activate
pip3 install conan
```
Using conan for the first time you need to create a profile:
```sh
conan profile new --detect default
conan remote add gitea https://git.minres.com/api/packages/Tooling/conan
```
* checkout source from git
```sh
git clone --recursive -b develop https://git.minres.com/TGFS/TGC-ISS.git
```
### Standalone (C++) build
* start an out-of-source build:
```
cd TGC-ISS
cmake --preset Debug -S . -B build/Debug
cmake --build build/Debug -j10
```
### Synopsys Platform Architect build
Assuming environment for Platform Architect is properly set up.
```
cd TGC-ISS/
export TGFS_INSTALL_ROOT=`pwd`/install
export SNPS_ENABLE_MEM_ON_DEMAND_IN_GENERIC_MEM=1
source $COWAREHOME/SLS/linux/setup.sh pae
export CC=$COWAREHOME/SLS/linux/common/bin/gcc
export CXX=$COWAREHOME/SLS/linux/common/bin/g++
cmake --preset Debug -S . -B build/PA -DUSE_CWR_SYSTEMC=ON \
-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=${TGFS_INSTALL_ROOT}
cmake --build build/PA --target install -j16
```
The Synopsys PA installation requirements may vary on your system.
Now you may change to the directory dbt-rise-tgc/contrib to import the core model
```
cd dbt-rise-tgc/contrib
pct tgc_import.tcl
```

13
build.sh Normal file
View File

@ -0,0 +1,13 @@
export TGFS_INSTALL_ROOT=`pwd`/install
module load tools/pa/T-2022.06
module load tools/cmake
export SNPS_ENABLE_MEM_ON_DEMAND_IN_GENERIC_MEM=1
export CC=$COWAREHOME/common/bin/gcc
export CXX=$COWAREHOME/common/bin/g++
cmake -S . -B build/PA -DCMAKE_BUILD_TYPE=Debug -DUSE_CWR_SYSTEMC=ON -DBUILD_SHARED_LIBS=ON \
-DCODEGEN=OFF -DCMAKE_INSTALL_PREFIX=${TGFS_INSTALL_ROOT}
cmake --build build/PA --target install -j16
#cd dbt-rise-tgc/contrib
# import the TGC core itself
#pct tgc_import.tcl

View File

@ -1,110 +0,0 @@
cmake_minimum_required(VERSION 3.11)
option(ENABLE_CODEGEN "Enable code generation for supported cores" ON)
set(ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
set(DBT_CORE_TGC_DIR ${ROOT_DIR}/tgfs)
#helper to setup code generation and generate outputs
set(GENERATOR_JAR ${ROOT_DIR}/coredsl/com.minres.coredsl.generator.repository/target/com.minres.coredsl.generator-2.0.0-SNAPSHOT.jar)
if(EXISTS ${ROOT_DIR}/coredsl/pom.xml AND NOT EXISTS ${GENERATOR_JAR})
execute_process(
COMMAND mvn package
WORKING_DIRECTORY ${ROOT_DIR}/coredsl
OUTPUT_VARIABLE StdOut
ERROR_VARIABLE StdErr
RESULT_VARIABLE Status
ERROR_QUIET)
if(Status AND NOT Status EQUAL 0)
message(STATUS "mvn package call failed: ${Status}, ${StdOut}, ${StdErr}")
endif()
endif()
set(JAVA_OPTS --add-modules ALL-SYSTEM --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.annotation=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.net.spi=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED
--add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED
--add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED
--add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.file.spi=ALL-UNNAMED
--add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.security.acl=ALL-UNNAMED
--add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.security.interfaces=ALL-UNNAMED
--add-opens=java.base/java.security.spec=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/java.text.spi=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED
--add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.time.format=ALL-UNNAMED
--add-opens=java.base/java.time.temporal=ALL-UNNAMED --add-opens=java.base/java.time.zone=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
--add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED
--add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.spi=ALL-UNNAMED
--add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED
--add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/java.applet=ALL-UNNAMED
--add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.color=ALL-UNNAMED
--add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED
--add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED
--add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.geom=ALL-UNNAMED
--add-opens=java.desktop/java.awt.im=ALL-UNNAMED --add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED
--add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED
--add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.print=ALL-UNNAMED
--add-opens=java.desktop/java.beans=ALL-UNNAMED --add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED
--add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED
--add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED
--add-opens=java.rmi/java.rmi=ALL-UNNAMED --add-opens=java.rmi/java.rmi.activation=ALL-UNNAMED
--add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED --add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED
--add-opens=java.rmi/java.rmi.server=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED)
set(GENERATOR java ${JAVA_OPTS} -jar ${GENERATOR_JAR})
set(INPUT_DIR ${DBT_CORE_TGC_DIR}/gen_input)
set(REPO_DIR ${DBT_CORE_TGC_DIR}/gen_input/CoreDSL-Instruction-Set-Description)
set(TMPL_DIR ${DBT_CORE_TGC_DIR}/gen_input/templates/)
if(ENABLE_CODEGEN AND EXISTS ${GENERATOR_JAR})
macro(gen_coredsl CORE_NAME INPUT_FILE BACKEND)
message(STATUS "Adding generation steps for ${CORE_NAME} in ${DBT_CORE_TGC_DIR} for ${BACKEND}")
string(TOUPPER ${BACKEND} BE_UPPER)
string(TOLOWER ${CORE_NAME} CORE_NAMEL)
if(EXISTS ${DBT_CORE_TGC_DIR}/generate.sh AND NOT EXISTS ${DBT_CORE_TGC_DIR}/incl/iss/arch/${CORE_NAMEL}.h)
# make sure source file exist initially
execute_process(
COMMAND /bin/bash ${DBT_CORE_TGC_DIR}/../generate.sh $CORE_NAME $BACKEND
WORKING_DIRECTORY ${DBT_CORE_TGC_DIR}/..
RESULT_VARIABLE return_code)
endif()
list(APPEND ${CORE_NAME}_MAPPING -m "${TMPL_DIR}/CORENAME.h.gtl:${DBT_CORE_TGC_DIR}/incl/iss/arch/${CORE_NAMEL}.h")
list(APPEND ${CORE_NAME}_MAPPING -m "${TMPL_DIR}/CORENAME.cpp.gtl:${DBT_CORE_TGC_DIR}/src/iss/${CORE_NAMEL}.cpp")
list(APPEND ${CORE_NAME}_MAPPING -m "${TMPL_DIR}/${BACKEND}/CORENAME.cpp.gtl:${DBT_CORE_TGC_DIR}/src/vm/interp/vm_${CORE_NAMEL}.cpp")
set(${CORE_NAME}_OUTPUT_FILES ${DBT_CORE_TGC_DIR}/incl/iss/arch/${CORE_NAMEL}.h ${DBT_CORE_TGC_DIR}/src/iss/${CORE_NAMEL}.cpp ${DBT_CORE_TGC_DIR}/src/vm/interp/vm_${CORE_NAMEL}.cpp)
#add_custom_command(
# COMMAND ${GENERATOR} -b ${BE_UPPER} -c ${CORE_NAME} -r ${REPO_DIR} ${${CORE_NAME}_MAPPING} ${INPUT_FILE}
# DEPENDS ${GENERATOR_JAR} ${INPUT_FILE} ${TMPL_DIR}/CORENAME.h.gtl ${TMPL_DIR}/CORENAME.cpp.gtl ${TMPL_DIR}/${BACKEND}/CORENAME.cpp.gtl
# OUTPUT ${${CORE_NAME}_OUTPUT_FILES}
# COMMENT "Generating code for ${CORE_NAME}."
# USES_TERMINAL VERBATIM
#)
#add_custom_target(${CORE_NAME}_cpp DEPENDS ${${CORE_NAME}_OUTPUT_FILES})
add_custom_target(${CORE_NAME}_cpp
COMMAND ${GENERATOR} -b ${BE_UPPER} -c ${CORE_NAME} -r ${REPO_DIR} ${${CORE_NAME}_MAPPING} ${INPUT_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
COMMENT "Generating ISS sources"
BYPRODUCTS ${${CORE_NAME}_OUTPUT_FILES}
USES_TERMINAL
)
execute_process(
COMMAND ${GENERATOR} -b ${BE_UPPER} -c ${CORE_NAME} -r ${REPO_DIR} ${${CORE_NAME}_MAPPING} ${INPUT_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
RESULT_VARIABLE return_code)
endmacro()
else()
macro(gen_coredsl CORE_NAME INPUT_FILE BACKEND)
add_custom_target(${CORE_NAME}_cpp)
message(STATUS "Not adding generation steps for ${CORE_NAME}(${ENABLE_CODEGEN}, ${GENERATOR_JAR})")
if(NOT EXISTS ${GENERATOR_JAR})
message(STATUS "CoreDSL Generator ${GENERATOR_JAR} does not exists")
endif()
endmacro()
endif()

107
cmake/ConanInline.cmake Normal file
View File

@ -0,0 +1,107 @@
set(CONAN_CMAKE_LIST_DIR ${CMAKE_CURRENT_BINARY_DIR})
macro(conan_check)
# for backwards compatibility
cmake_parse_arguments(MARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
find_program(CONAN conan)
if(NOT EXISTS ${CONAN})
message(FATAL_ERROR "Conan is required. Please see README.md")
return()
endif()
execute_process(COMMAND ${CONAN} --version
OUTPUT_VARIABLE CONAN_VERSION_OUTPUT)
string(REGEX MATCHALL "[0-9.]+" CONAN_VERSION ${CONAN_VERSION_OUTPUT})
if (NOT (CONAN_VERSION VERSION_GREATER_EQUAL 1.36.0))
message(FATAL_ERROR "Please upgrade your conan to a version greater or equal 1.36")
endif()
if(NOT EXISTS ${CONAN_CMAKE_LIST_DIR}/conan.cmake)
message("Downloading conan.cmake to ${CONAN_CMAKE_LIST_DIR}")
set(URL https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake)
file(DOWNLOAD ${URL} ${CONAN_CMAKE_LIST_DIR}/conan.cmake TIMEOUT 60 STATUS DOWNLOAD_STATUS)
list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
list(GET DOWNLOAD_STATUS 1 ERROR_MESSAGE)
if(NOT (${STATUS_CODE} EQUAL 0))
# Exit CMake if the download failed, printing the error message.
message(FATAL_ERROR "Error occurred during download: ${ERROR_MESSAGE}")
endif()
if(NOT EXISTS ${CONAN_CMAKE_LIST_DIR}/conan.cmake)
message(FATAL_ERROR "Could not download conan.cmake. Please check your internet connection or proxy settings")
endif()
file (SIZE ${CONAN_CMAKE_LIST_DIR}/conan.cmake CONAN_CMAKE_SIZE)
if(${CONAN_CMAKE_SIZE} EQUAL 0)
message(FATAL_ERROR "Could not download conan.cmake. Please check your internet connection or proxy settings")
endif()
endif()
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE Release)
endif()
include(${CONAN_CMAKE_LIST_DIR}/conan.cmake)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_BINARY_DIR})
endmacro()
macro(conan_setup)
set(options TARGETS)
cmake_parse_arguments(MARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
set(conanfile_cmake_paths ${CMAKE_BINARY_DIR}/conan_paths.cmake)
set(conanfile_cmake ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
set(conanfile_cmake ${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
endif()
if(EXISTS "${conanfile_cmake_paths}")
include(${conanfile_cmake_paths})
elseif(EXISTS "${conanfile_cmake}")
include(${conanfile_cmake})
if( MARGS_TARGETS)
conan_basic_setup(TARGETS)
else()
conan_basic_setup()
endif()
endif()
endmacro()
function(conan_configure)
conan_cmake_generate_conanfile(OFF ${ARGV})
endfunction()
macro(conan_install)
set(options BUILD_TYPE BUILD)
set(oneValueArgs BUILD_TYPE BUILD)
cmake_parse_arguments(MARGS "" "${oneValueArgs}" "" ${ARGN} )
if(MARGS_BUILD_TYPE)
conan_cmake_autodetect(settings BUILD_TYPE ${MARGS_BUILD_TYPE})
else()
conan_cmake_autodetect(settings BUILD_TYPE)
endif()
if(CMAKE_CXX_STANDARD)
list(APPEND settings compiler.cppstd=${CMAKE_CXX_STANDARD})
endif()
if(USE_NCSC_SYSTEMC)
list(APPEND settings compiler.libcxx=libstdc++)
endif()
if (NOT "$ENV{CONAN_PROFILE_NAME}" STREQUAL "")
set(CONAN_PROFILE "$ENV{CONAN_PROFILE_NAME}" CACHE INTERNAL "Copied from environment variable")
else()
set(CONAN_PROFILE "default" CACHE INTERNAL "Copied from environment variable")
endif()
if(MARGS_BUILD)
conan_cmake_install(PATH_OR_REFERENCE .
BUILD ${MARGS_BUILD}
PROFILE_BUILD ${CONAN_PROFILE}
SETTINGS ${settings})
else()
conan_cmake_install(PATH_OR_REFERENCE .
BUILD missing
PROFILE_BUILD ${CONAN_PROFILE}
SETTINGS ${settings})
endif()
endmacro()

View File

@ -0,0 +1,34 @@
# Find Clang format
#
#
if(NOT CLANG_FORMAT_BIN_NAME)
set(CLANG_FORMAT_BIN_NAME clang-format)
endif()
# if custom path check there first
if(CLANG_FORMAT_ROOT_DIR)
find_program(CLANG_FORMAT_BIN
NAMES
${CLANG_FORMAT_BIN_NAME}
PATHS
"${CLANG_FORMAT_ROOT_DIR}"
NO_DEFAULT_PATH)
else()
find_program(CLANG_FORMAT_BIN NAMES ${CLANG_FORMAT_BIN_NAME})
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
ClangFormat
DEFAULT_MSG
CLANG_FORMAT_BIN)
mark_as_advanced(
CLANG_FORMAT_BIN)
if(ClangFormat_FOUND)
# A CMake script to find all source files and setup clang-format targets for them
include(clang-format)
else()
message("clang-format not found. Not setting up format targets")
endif()

40
cmake/clang-format.cmake Normal file
View File

@ -0,0 +1,40 @@
# additional target to perform clang-format run, requires clang-format
set(CLANG_FORMAT_CXX_FILE_EXTENSIONS ${CLANG_FORMAT_CXX_FILE_EXTENSIONS} *.cpp *.h *.cxx *.hxx *.hpp *.cc *.ipp)
file(GLOB_RECURSE ALL_SOURCE_FILES ${CLANG_FORMAT_CXX_FILE_EXTENSIONS})
# Don't include some common build folders
set(CLANG_FORMAT_EXCLUDE_PATTERNS ${CLANG_FORMAT_EXCLUDE_PATTERNS} "/CMakeFiles/" "cmake")
# get all project files file
foreach (SOURCE_FILE ${ALL_SOURCE_FILES})
foreach (EXCLUDE_PATTERN ${CLANG_FORMAT_EXCLUDE_PATTERNS})
string(FIND ${SOURCE_FILE} ${EXCLUDE_PATTERN} EXCLUDE_FOUND)
if (NOT ${EXCLUDE_FOUND} EQUAL -1)
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
endif ()
endforeach ()
endforeach ()
set(FORMAT_TARGET_NAME format)
if(NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
set(FORMAT_TARGET_NAME format-${PROJECT_NAME})
endif()
add_custom_target(${FORMAT_TARGET_NAME}
COMMENT "Running clang-format to change files"
COMMAND ${CLANG_FORMAT_BIN} -style=file -i ${ALL_SOURCE_FILES}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(${FORMAT_TARGET_NAME}-check
COMMENT "Checking clang-format changes"
# Use ! to negate the result for correct output
COMMAND !
${CLANG_FORMAT_BIN}
-style=file
-output-replacements-xml
${ALL_SOURCE_FILES}
| grep -q "replacement offset"
)

676
cmake/conan_provider.cmake Normal file
View File

@ -0,0 +1,676 @@
# The MIT License (MIT)
#
# Copyright (c) 2024 JFrog
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
set(CONAN_MINIMUM_VERSION 2.0.5)
# Create a new policy scope and set the minimum required cmake version so the
# features behind a policy setting like if(... IN_LIST ...) behaves as expected
# even if the parent project does not specify a minimum cmake version or a minimum
# version less than this module requires (e.g. 3.0) before the first project() call.
# (see: https://cmake.org/cmake/help/latest/variable/CMAKE_PROJECT_TOP_LEVEL_INCLUDES.html)
#
# The policy-affecting calls like cmake_policy(SET...) or `cmake_minimum_required` only
# affects the current policy scope, i.e. between the PUSH and POP in this case.
#
# https://cmake.org/cmake/help/book/mastering-cmake/chapter/Policies.html#the-policy-stack
cmake_policy(PUSH)
cmake_minimum_required(VERSION 3.24)
function(detect_os os os_api_level os_sdk os_subsystem os_version)
# it could be cross compilation
message(STATUS "CMake-Conan: cmake_system_name=${CMAKE_SYSTEM_NAME}")
if(CMAKE_SYSTEM_NAME AND NOT CMAKE_SYSTEM_NAME STREQUAL "Generic")
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(${os} Macos PARENT_SCOPE)
elseif(CMAKE_SYSTEM_NAME STREQUAL "QNX")
set(${os} Neutrino PARENT_SCOPE)
elseif(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN")
set(${os} Windows PARENT_SCOPE)
set(${os_subsystem} cygwin PARENT_SCOPE)
elseif(CMAKE_SYSTEM_NAME MATCHES "^MSYS")
set(${os} Windows PARENT_SCOPE)
set(${os_subsystem} msys2 PARENT_SCOPE)
else()
set(${os} ${CMAKE_SYSTEM_NAME} PARENT_SCOPE)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if(DEFINED ANDROID_PLATFORM)
string(REGEX MATCH "[0-9]+" _os_api_level ${ANDROID_PLATFORM})
elseif(DEFINED CMAKE_SYSTEM_VERSION)
set(_os_api_level ${CMAKE_SYSTEM_VERSION})
endif()
message(STATUS "CMake-Conan: android api level=${_os_api_level}")
set(${os_api_level} ${_os_api_level} PARENT_SCOPE)
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Darwin|iOS|tvOS|watchOS")
# CMAKE_OSX_SYSROOT contains the full path to the SDK for MakeFile/Ninja
# generators, but just has the original input string for Xcode.
if(NOT IS_DIRECTORY ${CMAKE_OSX_SYSROOT})
set(_os_sdk ${CMAKE_OSX_SYSROOT})
else()
if(CMAKE_OSX_SYSROOT MATCHES Simulator)
set(apple_platform_suffix simulator)
else()
set(apple_platform_suffix os)
endif()
if(CMAKE_OSX_SYSROOT MATCHES AppleTV)
set(_os_sdk "appletv${apple_platform_suffix}")
elseif(CMAKE_OSX_SYSROOT MATCHES iPhone)
set(_os_sdk "iphone${apple_platform_suffix}")
elseif(CMAKE_OSX_SYSROOT MATCHES Watch)
set(_os_sdk "watch${apple_platform_suffix}")
endif()
endif()
if(DEFINED os_sdk)
message(STATUS "CMake-Conan: cmake_osx_sysroot=${CMAKE_OSX_SYSROOT}")
set(${os_sdk} ${_os_sdk} PARENT_SCOPE)
endif()
if(DEFINED CMAKE_OSX_DEPLOYMENT_TARGET)
message(STATUS "CMake-Conan: cmake_osx_deployment_target=${CMAKE_OSX_DEPLOYMENT_TARGET}")
set(${os_version} ${CMAKE_OSX_DEPLOYMENT_TARGET} PARENT_SCOPE)
endif()
endif()
endif()
endfunction()
function(detect_arch arch)
# CMAKE_OSX_ARCHITECTURES can contain multiple architectures, but Conan only supports one.
# Therefore this code only finds one. If the recipes support multiple architectures, the
# build will work. Otherwise, there will be a linker error for the missing architecture(s).
if(DEFINED CMAKE_OSX_ARCHITECTURES)
string(REPLACE " " ";" apple_arch_list "${CMAKE_OSX_ARCHITECTURES}")
list(LENGTH apple_arch_list apple_arch_count)
if(apple_arch_count GREATER 1)
message(WARNING "CMake-Conan: Multiple architectures detected, this will only work if Conan recipe(s) produce fat binaries.")
endif()
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Darwin|iOS|tvOS|watchOS" AND NOT CMAKE_OSX_ARCHITECTURES STREQUAL "")
set(host_arch ${CMAKE_OSX_ARCHITECTURES})
elseif(MSVC)
set(host_arch ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})
else()
set(host_arch ${CMAKE_SYSTEM_PROCESSOR})
endif()
if(host_arch MATCHES "aarch64|arm64|ARM64")
set(_arch armv8)
elseif(host_arch MATCHES "armv7|armv7-a|armv7l|ARMV7")
set(_arch armv7)
elseif(host_arch MATCHES armv7s)
set(_arch armv7s)
elseif(host_arch MATCHES "i686|i386|X86")
set(_arch x86)
elseif(host_arch MATCHES "AMD64|amd64|x86_64|x64")
set(_arch x86_64)
endif()
message(STATUS "CMake-Conan: cmake_system_processor=${_arch}")
set(${arch} ${_arch} PARENT_SCOPE)
endfunction()
function(detect_cxx_standard cxx_standard)
set(${cxx_standard} ${CMAKE_CXX_STANDARD} PARENT_SCOPE)
if(CMAKE_CXX_EXTENSIONS)
set(${cxx_standard} "gnu${CMAKE_CXX_STANDARD}" PARENT_SCOPE)
endif()
endfunction()
macro(detect_gnu_libstdcxx)
# _conan_is_gnu_libstdcxx true if GNU libstdc++
check_cxx_source_compiles("
#include <cstddef>
#if !defined(__GLIBCXX__) && !defined(__GLIBCPP__)
static_assert(false);
#endif
int main(){}" _conan_is_gnu_libstdcxx)
# _conan_gnu_libstdcxx_is_cxx11_abi true if C++11 ABI
check_cxx_source_compiles("
#include <string>
static_assert(sizeof(std::string) != sizeof(void*), \"using libstdc++\");
int main () {}" _conan_gnu_libstdcxx_is_cxx11_abi)
set(_conan_gnu_libstdcxx_suffix "")
if(_conan_gnu_libstdcxx_is_cxx11_abi)
set(_conan_gnu_libstdcxx_suffix "11")
endif()
unset (_conan_gnu_libstdcxx_is_cxx11_abi)
endmacro()
macro(detect_libcxx)
# _conan_is_libcxx true if LLVM libc++
check_cxx_source_compiles("
#include <cstddef>
#if !defined(_LIBCPP_VERSION)
static_assert(false);
#endif
int main(){}" _conan_is_libcxx)
endmacro()
function(detect_lib_cxx lib_cxx)
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
message(STATUS "CMake-Conan: android_stl=${CMAKE_ANDROID_STL_TYPE}")
set(${lib_cxx} ${CMAKE_ANDROID_STL_TYPE} PARENT_SCOPE)
return()
endif()
include(CheckCXXSourceCompiles)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
detect_gnu_libstdcxx()
set(${lib_cxx} "libstdc++${_conan_gnu_libstdcxx_suffix}" PARENT_SCOPE)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
set(${lib_cxx} "libc++" PARENT_SCOPE)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
# Check for libc++
detect_libcxx()
if(_conan_is_libcxx)
set(${lib_cxx} "libc++" PARENT_SCOPE)
return()
endif()
# Check for libstdc++
detect_gnu_libstdcxx()
if(_conan_is_gnu_libstdcxx)
set(${lib_cxx} "libstdc++${_conan_gnu_libstdcxx_suffix}" PARENT_SCOPE)
return()
endif()
# TODO: it would be an error if we reach this point
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# Do nothing - compiler.runtime and compiler.runtime_type
# should be handled separately: https://github.com/conan-io/cmake-conan/pull/516
return()
else()
# TODO: unable to determine, ask user to provide a full profile file instead
endif()
endfunction()
function(detect_compiler compiler compiler_version compiler_runtime compiler_runtime_type)
if(DEFINED CMAKE_CXX_COMPILER_ID)
set(_compiler ${CMAKE_CXX_COMPILER_ID})
set(_compiler_version ${CMAKE_CXX_COMPILER_VERSION})
else()
if(NOT DEFINED CMAKE_C_COMPILER_ID)
message(FATAL_ERROR "C or C++ compiler not defined")
endif()
set(_compiler ${CMAKE_C_COMPILER_ID})
set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
endif()
message(STATUS "CMake-Conan: CMake compiler=${_compiler}")
message(STATUS "CMake-Conan: CMake compiler version=${_compiler_version}")
if(_compiler MATCHES MSVC)
set(_compiler "msvc")
string(SUBSTRING ${MSVC_VERSION} 0 3 _compiler_version)
# Configure compiler.runtime and compiler.runtime_type settings for MSVC
if(CMAKE_MSVC_RUNTIME_LIBRARY)
set(_msvc_runtime_library ${CMAKE_MSVC_RUNTIME_LIBRARY})
else()
set(_msvc_runtime_library MultiThreaded$<$<CONFIG:Debug>:Debug>DLL) # default value documented by CMake
endif()
set(_KNOWN_MSVC_RUNTIME_VALUES "")
list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded MultiThreadedDLL)
list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreadedDebug MultiThreadedDebugDLL)
list(APPEND _KNOWN_MSVC_RUNTIME_VALUES MultiThreaded$<$<CONFIG:Debug>:Debug> MultiThreaded$<$<CONFIG:Debug>:Debug>DLL)
# only accept the 6 possible values, otherwise we don't don't know to map this
if(NOT _msvc_runtime_library IN_LIST _KNOWN_MSVC_RUNTIME_VALUES)
message(FATAL_ERROR "CMake-Conan: unable to map MSVC runtime: ${_msvc_runtime_library} to Conan settings")
endif()
# Runtime is "dynamic" in all cases if it ends in DLL
if(_msvc_runtime_library MATCHES ".*DLL$")
set(_compiler_runtime "dynamic")
else()
set(_compiler_runtime "static")
endif()
message(STATUS "CMake-Conan: CMake compiler.runtime=${_compiler_runtime}")
# Only define compiler.runtime_type when explicitly requested
# If a generator expression is used, let Conan handle it conditional on build_type
if(NOT _msvc_runtime_library MATCHES "<CONFIG:Debug>:Debug>")
if(_msvc_runtime_library MATCHES "Debug")
set(_compiler_runtime_type "Debug")
else()
set(_compiler_runtime_type "Release")
endif()
message(STATUS "CMake-Conan: CMake compiler.runtime_type=${_compiler_runtime_type}")
endif()
unset(_KNOWN_MSVC_RUNTIME_VALUES)
elseif(_compiler MATCHES AppleClang)
set(_compiler "apple-clang")
string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
list(GET VERSION_LIST 0 _compiler_version)
elseif(_compiler MATCHES Clang)
set(_compiler "clang")
string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
list(GET VERSION_LIST 0 _compiler_version)
elseif(_compiler MATCHES GNU)
set(_compiler "gcc")
string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
list(GET VERSION_LIST 0 _compiler_version)
endif()
message(STATUS "CMake-Conan: [settings] compiler=${_compiler}")
message(STATUS "CMake-Conan: [settings] compiler.version=${_compiler_version}")
if (_compiler_runtime)
message(STATUS "CMake-Conan: [settings] compiler.runtime=${_compiler_runtime}")
endif()
if (_compiler_runtime_type)
message(STATUS "CMake-Conan: [settings] compiler.runtime_type=${_compiler_runtime_type}")
endif()
set(${compiler} ${_compiler} PARENT_SCOPE)
set(${compiler_version} ${_compiler_version} PARENT_SCOPE)
set(${compiler_runtime} ${_compiler_runtime} PARENT_SCOPE)
set(${compiler_runtime_type} ${_compiler_runtime_type} PARENT_SCOPE)
endfunction()
function(detect_build_type build_type)
get_property(multiconfig_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(NOT multiconfig_generator)
# Only set when we know we are in a single-configuration generator
# Note: we may want to fail early if `CMAKE_BUILD_TYPE` is not defined
set(${build_type} ${CMAKE_BUILD_TYPE} PARENT_SCOPE)
endif()
endfunction()
macro(set_conan_compiler_if_appleclang lang command output_variable)
if(CMAKE_${lang}_COMPILER_ID STREQUAL "AppleClang")
execute_process(COMMAND xcrun --find ${command}
OUTPUT_VARIABLE _xcrun_out OUTPUT_STRIP_TRAILING_WHITESPACE)
cmake_path(GET _xcrun_out PARENT_PATH _xcrun_toolchain_path)
cmake_path(GET CMAKE_${lang}_COMPILER PARENT_PATH _compiler_parent_path)
if ("${_xcrun_toolchain_path}" STREQUAL "${_compiler_parent_path}")
set(${output_variable} "")
endif()
unset(_xcrun_out)
unset(_xcrun_toolchain_path)
unset(_compiler_parent_path)
endif()
endmacro()
macro(append_compiler_executables_configuration)
set(_conan_c_compiler "")
set(_conan_cpp_compiler "")
set(_conan_rc_compiler "")
set(_conan_compilers_list "")
if(CMAKE_C_COMPILER)
set(_conan_c_compiler "\"c\":\"${CMAKE_C_COMPILER}\"")
set_conan_compiler_if_appleclang(C cc _conan_c_compiler)
list(APPEND _conan_compilers_list ${_conan_c_compiler})
else()
message(WARNING "CMake-Conan: The C compiler is not defined. "
"Please define CMAKE_C_COMPILER or enable the C language.")
endif()
if(CMAKE_CXX_COMPILER)
set(_conan_cpp_compiler "\"cpp\":\"${CMAKE_CXX_COMPILER}\"")
set_conan_compiler_if_appleclang(CXX c++ _conan_cpp_compiler)
list(APPEND _conan_compilers_list ${_conan_cpp_compiler})
else()
message(WARNING "CMake-Conan: The C++ compiler is not defined. "
"Please define CMAKE_CXX_COMPILER or enable the C++ language.")
endif()
if(CMAKE_RC_COMPILER)
set(_conan_rc_compiler "\"rc\":\"${CMAKE_RC_COMPILER}\"")
list(APPEND _conan_compilers_list ${_conan_rc_compiler})
# Not necessary to warn if RC not defined
endif()
if(NOT "x${_conan_compilers_list}" STREQUAL "x")
string(REPLACE ";" "," _conan_compilers_list "${_conan_compilers_list}")
string(APPEND profile "tools.build:compiler_executables={${_conan_compilers_list}}\n")
endif()
unset(_conan_c_compiler)
unset(_conan_cpp_compiler)
unset(_conan_rc_compiler)
unset(_conan_compilers_list)
endmacro()
function(detect_host_profile output_file)
detect_os(os os_api_level os_sdk os_subsystem os_version)
detect_arch(arch)
detect_compiler(compiler compiler_version compiler_runtime compiler_runtime_type)
detect_cxx_standard(compiler_cppstd)
detect_lib_cxx(compiler_libcxx)
detect_build_type(build_type)
set(profile "")
string(APPEND profile "[settings]\n")
if(arch)
string(APPEND profile arch=${arch} "\n")
endif()
if(os)
string(APPEND profile os=${os} "\n")
endif()
if(os_api_level)
string(APPEND profile os.api_level=${os_api_level} "\n")
endif()
if(os_version)
string(APPEND profile os.version=${os_version} "\n")
endif()
if(os_sdk)
string(APPEND profile os.sdk=${os_sdk} "\n")
endif()
if(os_subsystem)
string(APPEND profile os.subsystem=${os_subsystem} "\n")
endif()
if(compiler)
string(APPEND profile compiler=${compiler} "\n")
endif()
if(compiler_version)
string(APPEND profile compiler.version=${compiler_version} "\n")
endif()
if(compiler_runtime)
string(APPEND profile compiler.runtime=${compiler_runtime} "\n")
endif()
if(compiler_runtime_type)
string(APPEND profile compiler.runtime_type=${compiler_runtime_type} "\n")
endif()
if(compiler_cppstd)
string(APPEND profile compiler.cppstd=${compiler_cppstd} "\n")
endif()
if(compiler_libcxx)
string(APPEND profile compiler.libcxx=${compiler_libcxx} "\n")
endif()
if(build_type)
string(APPEND profile "build_type=${build_type}\n")
endif()
if(NOT DEFINED output_file)
set(file_name "${CMAKE_BINARY_DIR}/profile")
else()
set(file_name ${output_file})
endif()
string(APPEND profile "[conf]\n")
string(APPEND profile "tools.cmake.cmaketoolchain:generator=${CMAKE_GENERATOR}\n")
# propagate compilers via profile
append_compiler_executables_configuration()
if(os STREQUAL "Android")
string(APPEND profile "tools.android:ndk_path=${CMAKE_ANDROID_NDK}\n")
endif()
message(STATUS "CMake-Conan: Creating profile ${file_name}")
file(WRITE ${file_name} ${profile})
message(STATUS "CMake-Conan: Profile: \n${profile}")
endfunction()
function(conan_profile_detect_default)
message(STATUS "CMake-Conan: Checking if a default profile exists")
execute_process(COMMAND ${CONAN_COMMAND} profile path default
RESULT_VARIABLE return_code
OUTPUT_VARIABLE conan_stdout
ERROR_VARIABLE conan_stderr
ECHO_ERROR_VARIABLE # show the text output regardless
ECHO_OUTPUT_VARIABLE
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
if(NOT ${return_code} EQUAL "0")
message(STATUS "CMake-Conan: The default profile doesn't exist, detecting it.")
execute_process(COMMAND ${CONAN_COMMAND} profile detect
RESULT_VARIABLE return_code
OUTPUT_VARIABLE conan_stdout
ERROR_VARIABLE conan_stderr
ECHO_ERROR_VARIABLE # show the text output regardless
ECHO_OUTPUT_VARIABLE
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endif()
endfunction()
function(conan_install)
cmake_parse_arguments(ARGS conan_args ${ARGN})
set(conan_output_folder ${CMAKE_BINARY_DIR}/conan)
# Invoke "conan install" with the provided arguments
set(conan_args ${conan_args} -of=${conan_output_folder})
message(STATUS "CMake-Conan: conan install ${CMAKE_SOURCE_DIR} ${conan_args} ${ARGN}")
# In case there was not a valid cmake executable in the PATH, we inject the
# same we used to invoke the provider to the PATH
if(DEFINED PATH_TO_CMAKE_BIN)
set(old_path $ENV{PATH})
set(ENV{PATH} "$ENV{PATH}:${PATH_TO_CMAKE_BIN}")
endif()
execute_process(COMMAND ${CONAN_COMMAND} install ${CMAKE_SOURCE_DIR} ${conan_args} ${ARGN} --format=json
RESULT_VARIABLE return_code
OUTPUT_VARIABLE conan_stdout
ERROR_VARIABLE conan_stderr
ECHO_ERROR_VARIABLE # show the text output regardless
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
if(DEFINED PATH_TO_CMAKE_BIN)
set(ENV{PATH} "${old_path}")
endif()
if(NOT "${return_code}" STREQUAL "0")
message(FATAL_ERROR "Conan install failed='${return_code}'")
endif()
# the files are generated in a folder that depends on the layout used, if
# one is specified, but we don't know a priori where this is.
# TODO: this can be made more robust if Conan can provide this in the json output
string(JSON conan_generators_folder GET "${conan_stdout}" graph nodes 0 generators_folder)
cmake_path(CONVERT ${conan_generators_folder} TO_CMAKE_PATH_LIST conan_generators_folder)
message(STATUS "CMake-Conan: CONAN_GENERATORS_FOLDER=${conan_generators_folder}")
set_property(GLOBAL PROPERTY CONAN_GENERATORS_FOLDER "${conan_generators_folder}")
# reconfigure on conanfile changes
string(JSON conanfile GET "${conan_stdout}" graph nodes 0 label)
message(STATUS "CMake-Conan: CONANFILE=${CMAKE_SOURCE_DIR}/${conanfile}")
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/${conanfile}")
# success
set_property(GLOBAL PROPERTY CONAN_INSTALL_SUCCESS TRUE)
endfunction()
function(conan_get_version conan_command conan_current_version)
execute_process(
COMMAND ${conan_command} --version
OUTPUT_VARIABLE conan_output
RESULT_VARIABLE conan_result
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(conan_result)
message(FATAL_ERROR "CMake-Conan: Error when trying to run Conan")
endif()
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" conan_version ${conan_output})
set(${conan_current_version} ${conan_version} PARENT_SCOPE)
endfunction()
function(conan_version_check)
set(options )
set(one_value_args MINIMUM CURRENT)
set(multi_value_args )
cmake_parse_arguments(conan_version_check
"${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
if(NOT conan_version_check_MINIMUM)
message(FATAL_ERROR "CMake-Conan: Required parameter MINIMUM not set!")
endif()
if(NOT conan_version_check_CURRENT)
message(FATAL_ERROR "CMake-Conan: Required parameter CURRENT not set!")
endif()
if(conan_version_check_CURRENT VERSION_LESS conan_version_check_MINIMUM)
message(FATAL_ERROR "CMake-Conan: Conan version must be ${conan_version_check_MINIMUM} or later")
endif()
endfunction()
macro(construct_profile_argument argument_variable profile_list)
set(${argument_variable} "")
if("${profile_list}" STREQUAL "CONAN_HOST_PROFILE")
set(_arg_flag "--profile:host=")
elseif("${profile_list}" STREQUAL "CONAN_BUILD_PROFILE")
set(_arg_flag "--profile:build=")
endif()
set(_profile_list "${${profile_list}}")
list(TRANSFORM _profile_list REPLACE "auto-cmake" "${CMAKE_BINARY_DIR}/conan_host_profile")
list(TRANSFORM _profile_list PREPEND ${_arg_flag})
set(${argument_variable} ${_profile_list})
unset(_arg_flag)
unset(_profile_list)
endmacro()
macro(conan_provide_dependency method package_name)
set_property(GLOBAL PROPERTY CONAN_PROVIDE_DEPENDENCY_INVOKED TRUE)
get_property(_conan_install_success GLOBAL PROPERTY CONAN_INSTALL_SUCCESS)
if(NOT _conan_install_success)
find_program(CONAN_COMMAND "conan" REQUIRED)
conan_get_version(${CONAN_COMMAND} CONAN_CURRENT_VERSION)
conan_version_check(MINIMUM ${CONAN_MINIMUM_VERSION} CURRENT ${CONAN_CURRENT_VERSION})
message(STATUS "CMake-Conan: first find_package() found. Installing dependencies with Conan")
if("default" IN_LIST CONAN_HOST_PROFILE OR "default" IN_LIST CONAN_BUILD_PROFILE)
conan_profile_detect_default()
endif()
if("auto-cmake" IN_LIST CONAN_HOST_PROFILE)
detect_host_profile(${CMAKE_BINARY_DIR}/conan_host_profile)
endif()
construct_profile_argument(_host_profile_flags CONAN_HOST_PROFILE)
construct_profile_argument(_build_profile_flags CONAN_BUILD_PROFILE)
if(EXISTS "${CMAKE_SOURCE_DIR}/conanfile.py")
file(READ "${CMAKE_SOURCE_DIR}/conanfile.py" outfile)
if(NOT "${outfile}" MATCHES ".*CMakeDeps.*")
message(WARNING "Cmake-conan: CMakeDeps generator was not defined in the conanfile")
endif()
set(generator "")
elseif (EXISTS "${CMAKE_SOURCE_DIR}/conanfile.txt")
file(READ "${CMAKE_SOURCE_DIR}/conanfile.txt" outfile)
if(NOT "${outfile}" MATCHES ".*CMakeDeps.*")
message(WARNING "Cmake-conan: CMakeDeps generator was not defined in the conanfile. "
"Please define the generator as it will be mandatory in the future")
endif()
set(generator "-g;CMakeDeps")
endif()
get_property(_multiconfig_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(NOT _multiconfig_generator)
message(STATUS "CMake-Conan: Installing single configuration ${CMAKE_BUILD_TYPE}")
conan_install(${_host_profile_flags} ${_build_profile_flags} ${CONAN_INSTALL_ARGS} ${generator})
else()
message(STATUS "CMake-Conan: Installing both Debug and Release")
conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Release ${CONAN_INSTALL_ARGS} ${generator})
conan_install(${_host_profile_flags} ${_build_profile_flags} -s build_type=Debug ${CONAN_INSTALL_ARGS} ${generator})
endif()
unset(_host_profile_flags)
unset(_build_profile_flags)
unset(_multiconfig_generator)
unset(_conan_install_success)
else()
message(STATUS "CMake-Conan: find_package(${ARGV1}) found, 'conan install' already ran")
unset(_conan_install_success)
endif()
get_property(_conan_generators_folder GLOBAL PROPERTY CONAN_GENERATORS_FOLDER)
# Ensure that we consider Conan-provided packages ahead of any other,
# irrespective of other settings that modify the search order or search paths
# This follows the guidelines from the find_package documentation
# (https://cmake.org/cmake/help/latest/command/find_package.html):
# find_package (<PackageName> PATHS paths... NO_DEFAULT_PATH)
# find_package (<PackageName>)
# Filter out `REQUIRED` from the argument list, as the first call may fail
set(_find_args_${package_name} "${ARGN}")
list(REMOVE_ITEM _find_args_${package_name} "REQUIRED")
if(NOT "MODULE" IN_LIST _find_args_${package_name})
find_package(${package_name} ${_find_args_${package_name}} BYPASS_PROVIDER PATHS "${_conan_generators_folder}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
unset(_find_args_${package_name})
endif()
# Invoke find_package a second time - if the first call succeeded,
# this will simply reuse the result. If not, fall back to CMake default search
# behaviour, also allowing modules to be searched.
if(NOT ${package_name}_FOUND)
list(FIND CMAKE_MODULE_PATH "${_conan_generators_folder}" _index)
if(_index EQUAL -1)
list(PREPEND CMAKE_MODULE_PATH "${_conan_generators_folder}")
endif()
unset(_index)
find_package(${package_name} ${ARGN} BYPASS_PROVIDER)
list(REMOVE_ITEM CMAKE_MODULE_PATH "${_conan_generators_folder}")
endif()
endmacro()
cmake_language(
SET_DEPENDENCY_PROVIDER conan_provide_dependency
SUPPORTED_METHODS FIND_PACKAGE
)
macro(conan_provide_dependency_check)
set(_conan_provide_dependency_invoked FALSE)
get_property(_conan_provide_dependency_invoked GLOBAL PROPERTY CONAN_PROVIDE_DEPENDENCY_INVOKED)
if(NOT _conan_provide_dependency_invoked)
message(WARNING "Conan is correctly configured as dependency provider, "
"but Conan has not been invoked. Please add at least one "
"call to `find_package()`.")
if(DEFINED CONAN_COMMAND)
# supress warning in case `CONAN_COMMAND` was specified but unused.
set(_conan_command ${CONAN_COMMAND})
unset(_conan_command)
endif()
endif()
unset(_conan_provide_dependency_invoked)
endmacro()
# Add a deferred call at the end of processing the top-level directory
# to check if the dependency provider was invoked at all.
cmake_language(DEFER DIRECTORY "${CMAKE_SOURCE_DIR}" CALL conan_provide_dependency_check)
# Configurable variables for Conan profiles
set(CONAN_HOST_PROFILE "default;auto-cmake" CACHE STRING "Conan host profile")
set(CONAN_BUILD_PROFILE "default" CACHE STRING "Conan build profile")
set(CONAN_INSTALL_ARGS "--build=missing" CACHE STRING "Command line arguments for conan install")
find_program(_cmake_program NAMES cmake NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH)
if(NOT _cmake_program)
get_filename_component(PATH_TO_CMAKE_BIN "${CMAKE_COMMAND}" DIRECTORY)
set(PATH_TO_CMAKE_BIN "${PATH_TO_CMAKE_BIN}" CACHE INTERNAL "Path where the CMake executable is")
endif()
cmake_policy(POP)

57
conanfile.py Normal file
View File

@ -0,0 +1,57 @@
from conan import ConanFile
from conan.tools.cmake import cmake_layout
import os
class Pkg(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = (
"CMakeDeps",
"CMakeToolchain",
)
default_options = {
"llvm-core/*:targets": "X86",
"boost/*:fPIC": "True",
"boost/*:header_only": "False",
"boost/*:without_contract": "True",
"boost/*:without_fiber": "True",
"boost/*:without_graph": "True",
"boost/*:without_graph_parallel": "True",
"boost/*:without_iostreams": "True",
"boost/*:without_json": "True",
"boost/*:without_locale": "True",
"boost/*:without_log": "True",
"boost/*:without_math": "True",
"boost/*:without_mpi": "True",
"boost/*:without_nowide": "True",
"boost/*:without_python": "True",
"boost/*:without_random": "True",
"boost/*:without_regex": "True",
"boost/*:without_stacktrace": "True",
"boost/*:without_test": "True",
"boost/*:without_timer": "True",
"boost/*:without_type_erasure": "True",
"boost/*:without_wave": "True",
}
def requirements(self):
self.requires("fmt/8.0.1")
self.requires("spdlog/1.9.2")
self.requires("boost/1.85.0")
self.requires("abseil/20250127.0")
self.requires("elfio/3.11")
self.requires("lz4/1.9.3")
self.requires("yaml-cpp/0.7.0")
self.requires("jsoncpp/1.9.5")
self.requires("zlib/1.2.12")
self.requires("asmjit/cci.20240531")
if "WITH_LLVM" in os.environ:
self.requires("llvm-core/19.1.7")
if os.path.isdir("dbt-rise-plugins"):
self.requires("lua/5.4.3")
def build_requirements(self):
pass
def layout(self):
cmake_layout(self)

View File

@ -1,16 +0,0 @@
[requires]
fmt/6.1.2
zlib/1.2.11
boost/1.75.0
gsl-lite/0.37.0
elfio/3.8
tcc/0.9.27
[generators]
cmake
[options]
boost:fPIC=True
boost:shared=False
boost:header_only=False
fmt:header_only=True

Submodule coredsl deleted from 62d95f8b3c

Submodule dbt-core deleted from 95267382cf

1
dbt-rise-core Submodule

Submodule dbt-rise-core added at 8950a5e8a3

1
dbt-rise-tgc Submodule

Submodule dbt-rise-tgc added at 047e2e12b0

5
docs/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
*.log
*.dis
*.asm
*.ll
*tcc_*

43
docs/offsets.txt Normal file
View File

@ -0,0 +1,43 @@
X0 (zero) : 0 (0x00)
X1 (ra) : 4 (0x04)
X2 (sp) : 8 (0x08)
X3 (gp) : 12 (0x0c)
X4 (tp) : 16 (0x10)
X5 (t0) : 20 (0x14)
X6 (t1) : 24 (0x18)
X7 (t2) : 28 (0x1c)
X8 (s0/fp): 32 (0x20)
X9 (s1) : 36 (0x24)
X10 (a0) : 40 (0x28)
X11 (a1) : 44 (0x2c)
X12 (a2) : 48 (0x30)
X13 (a3) : 52 (0x34)
X14 (a4) : 56 (0x38)
X15 (a5) : 60 (0x3c)
X16 (a6) : 64 (0x40)
X17 (a7) : 68 (0x44)
X18 (s2) : 72 (0x48)
X19 (s3) : 76 (0x4c)
X20 (s4) : 80 (0x50)
X21 (s5) : 84 (0x54)
X22 (s6) : 88 (0x58)
X23 (s7) : 92 (0x5c)
X24 (s8) : 96 (0x60)
X25 (s9) : 100 (0x64)
X26 (s10) : 104 (0x68)
X27 (s11) : 108 (0x6c)
X28 (t3) : 112 (0x70)
X29 (t4) : 116 (0x74)
X30 (t5) : 120 (0x78)
X31 (t6) : 124 (0x7c)
PC : 128 (0x80)
NEXT_PC : 132 (0x84)
PRIV : 136 (0x88)
DPC : 137 (0x89)
trap_state : 141 (0x8d)
pending_trap : 145 (0x91)
icount : 149 (0x95)
cycle : 157 (0x9d)
instret : 165 (0xa5)
instruction : 173 (0xad)
last_branch : 177 (0xb1)

View File

@ -1,25 +0,0 @@
#!/bin/bash
##
JAVA_OPTS="--add-modules ALL-SYSTEM --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.annotation=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.net.spi=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.nio.charset.spi=ALL-UNNAMED --add-opens=java.base/java.nio.file=ALL-UNNAMED --add-opens=java.base/java.nio.file.attribute=ALL-UNNAMED --add-opens=java.base/java.nio.file.spi=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.security.acl=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.security.interfaces=ALL-UNNAMED --add-opens=java.base/java.security.spec=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.text.spi=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.time.chrono=ALL-UNNAMED --add-opens=java.base/java.time.format=ALL-UNNAMED --add-opens=java.base/java.time.temporal=ALL-UNNAMED --add-opens=java.base/java.time.zone=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/java.util.function=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.spi=ALL-UNNAMED --add-opens=java.base/java.util.stream=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.datatransfer/java.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/java.applet=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.color=ALL-UNNAMED --add-opens=java.desktop/java.awt.desktop=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.geom=ALL-UNNAMED --add-opens=java.desktop/java.awt.im=ALL-UNNAMED --add-opens=java.desktop/java.awt.im.spi=ALL-UNNAMED --add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.image.renderable=ALL-UNNAMED --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.print=ALL-UNNAMED --add-opens=java.desktop/java.beans=ALL-UNNAMED --add-opens=java.desktop/java.beans.beancontext=ALL-UNNAMED --add-opens=java.instrument/java.lang.instrument=ALL-UNNAMED --add-opens=java.logging/java.util.logging=ALL-UNNAMED --add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.rmi/java.rmi=ALL-UNNAMED --add-opens=java.rmi/java.rmi.activation=ALL-UNNAMED --add-opens=java.rmi/java.rmi.dgc=ALL-UNNAMED --add-opens=java.rmi/java.rmi.registry=ALL-UNNAMED --add-opens=java.rmi/java.rmi.server=ALL-UNNAMED --add-opens=java.sql/java.sql=ALL-UNNAMED"
GENERATOR="java $JAVA_OPTS -jar coredsl/com.minres.coredsl.generator.repository/target/com.minres.coredsl.generator-2.0.0-SNAPSHOT.jar "
CORE_NAME=$1
BACKEND=$2
CORE_NAME_LC=`echo $CORE_NAME | tr '[:upper:]' '[:lower:]' `
INPUT_FILE=tgfs/gen_input/TGFS.core_desc
REPO_DIR=tgfs/gen_input/CoreDSL-Instruction-Set-Description
TMPL_DIR=tgfs/gen_input/templates/interp
MAPPING=""
MAPPING="$MAPPING -m ${TMPL_DIR}/CORENAME.h.gtl:tgfs/incl/iss/arch/${CORE_NAME_LC}.h"
MAPPING="$MAPPING -m ${TMPL_DIR}/CORENAME.cpp.gtl:tgfs/src/iss/${CORE_NAME_LC}.cpp"
MAPPING="$MAPPING -m ${TMPL_DIR}/vm_CORENAME.cpp.gtl:tgfs/src/vm/${BACKEND}/vm_${CORE_NAME_LC}.cpp"
[ -f coredsl/com.minres.coredsl.generator.repository/target/com.minres.coredsl.generator-2.0.0-SNAPSHOT.jar ] || (cd coredsl; mvn package)
$GENERATOR -c $CORE_NAME -r $REPO_DIR $MAPPING $INPUT_FILE

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
conan

1
scc

Submodule scc deleted from 9919e5a350

View File

@ -0,0 +1,75 @@
import argparse
import os
import subprocess
def get_address_from_objdump(elf_file, symbol):
result = subprocess.run(
["riscv64-unknown-elf-objdump", "-t", elf_file], capture_output=True, text=True
)
for line in result.stdout.splitlines():
if symbol in line:
return int(line.split()[0], 16)
return None
def annotate_dump(signature_file, elf_file):
begin_signature = get_address_from_objdump(elf_file, "begin_signature")
end_signature = get_address_from_objdump(elf_file, "end_signature")
if begin_signature is None or end_signature is None:
print(f"Symbols not found in {elf_file}")
return
address = begin_signature
annotated_lines = []
with open(signature_file, "r") as sig_file:
for line in sig_file:
annotated_lines.append(f"{hex(address)}: {line.strip()}")
address += 4
output_file = signature_file + ".annotated"
with open(output_file, "w") as out_file:
out_file.write("\n".join(annotated_lines))
print(f"Annotated file created: {output_file}")
def process_directory(root_dir):
for subdir, _, files in os.walk(root_dir):
elf_file = None
signature_file = None
for file in files:
if file.endswith(".elf"):
elf_file = os.path.join(subdir, file)
elif file.endswith(".signature"):
signature_file = os.path.join(subdir, file)
if elf_file and signature_file:
annotate_dump(signature_file, elf_file)
elif signature_file:
print(f"No ELF file found for {signature_file}")
def main():
parser = argparse.ArgumentParser(
description="""
Annotate memory dumps with addresses. Parses all subdirectories from the given root.
Expects a .signature with a corresponding .elf in the same directory.
Designed to annotate riscof signatures."""
)
parser.add_argument(
"root_dir", type=str, help="Root directory to search for .signature files"
)
args = parser.parse_args()
if not os.path.isdir(args.root_dir):
print("Invalid root directory")
return
process_directory(args.root_dir)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,157 @@
import argparse
import os
import shutil
import subprocess
from pathlib import Path
def validate_elf_file(filepath: str) -> str:
if not os.path.isfile(filepath):
raise argparse.ArgumentTypeError(f"{filepath} is not a valid file.")
# Use the 'file' command to check if it's an ELF file
result = subprocess.run(
["file", filepath], capture_output=True, text=True, check=False
)
if "ELF" not in result.stdout:
raise argparse.ArgumentTypeError(f"{filepath} is not a valid ELF file.")
return filepath
def run_test_and_move_output(elf_file: str, backend: str, isa: str = "tgc5c") -> None:
# Call 'test' with the specified backend mode
os.chdir(Path(__file__).parent.parent)
sim_path = "build/Debug/dbt-rise-tgc/tgc-sim"
run_command = [
sim_path,
"-f",
elf_file,
"--backend",
backend,
"--isa",
isa,
"-p",
"build/Debug/dbt-rise-plugins/pctrace/pctrace.so=dbt-rise-tgc/contrib/instr/TGC5C_instr.yaml",
"-i",
"10000",
]
print(f"Running: \n{' '.join(run_command)}")
try:
subprocess.run(run_command, check=False, timeout=10)
except subprocess.TimeoutExpired:
print("Execution timed out")
# Move the output.trc file
if os.path.exists("output.trc"):
shutil.move("output.trc", f"Debug/{backend}.trc")
else:
print(
f"output.trc does not exist after running with backend {backend}, so it cannot be renamed."
)
def create_shortened_diff_files(backend: str) -> None:
file1_path = "Debug/interp.trc"
file2_path = f"Debug/{backend}.trc"
def validate_file(filepath: str) -> str:
if not os.path.isfile(filepath):
raise ValueError(f"{filepath} is not a valid file.")
return filepath
file1_path = validate_file(file1_path)
file2_path = validate_file(file2_path)
with open(file1_path, "r", encoding="utf8") as file1, open(
file2_path, "r", encoding="utf8"
) as file2:
lines1 = file1.readlines()
lines2 = file2.readlines()
diff_index = -1
for index, (line1, line2) in enumerate(zip(lines1, lines2)):
if line1 != line2:
diff_index = index
break
if diff_index == -1:
print("The files are identical.")
return
start_index = max(0, diff_index - 5)
end_index = min(len(lines1), diff_index + 6)
shortened_lines1 = lines1[start_index:end_index]
shortened_lines2 = lines2[start_index:end_index]
with open("Debug/short_interp.trc", "w", encoding="utf8") as short_file1:
short_file1.writelines(shortened_lines1)
with open(f"Debug/short_{backend}.trc", "w", encoding="utf8") as short_file2:
short_file2.writelines(shortened_lines2)
def create_disassembly(elf_file_path: str) -> None:
def validate_file(filepath: str) -> str:
if not os.path.isfile(filepath):
raise ValueError(f"{filepath} is not a valid file.")
return filepath
elf_file_path = validate_file(elf_file_path)
output_file_path = "Debug/dut.dis"
with open(output_file_path, "w", encoding="utf8") as output_file:
subprocess.run(
[
"riscv64-unknown-elf-objdump",
"-d",
"-Mnumeric",
"-Mno-aliases",
elf_file_path,
],
stdout=output_file,
check=True,
)
def main(args: argparse.Namespace) -> None:
elf_file = args.elf_file
backend = args.backend
isa = args.isa
# Set environment variable
os.environ["REGDUMP"] = "True"
# Run the tests and move the output files
run_test_and_move_output(elf_file, "interp", isa)
run_test_and_move_output(elf_file, backend, isa)
create_shortened_diff_files(backend)
create_disassembly(elf_file)
if __name__ == "__main__":
# sys.exit(
# "This script needs to be adapted, it assumed to be in a directory named 'Debug'"
# )
parser = argparse.ArgumentParser(
description="Process an ELF file with a specified backend. Generates register traces for interp and the specified backend"
)
parser.add_argument(
"elf_file", type=validate_elf_file, help="The ELF file to be processed."
)
parser.add_argument(
"--backend",
type=str,
default="asmjit",
help="The backend to be used. Default is asmjit.",
required=False,
)
parser.add_argument(
"--isa",
type=str,
default="tgc5c",
help="The isa to be used. Default 'tgc5c'",
required=False,
)
main(args=parser.parse_args())

View File

@ -0,0 +1,26 @@
import re
import os
'''
This script takes all files that get dumped by the tcc backend when using the --dump-ir
option and replaces the Integers of addresses with their hex representation to allow
for easier debugging.
'''
current_dir = os.getcwd() # Get the current directory
files_with_tcc_jit = [file for file in os.listdir(current_dir) if"jit" in file and not file.startswith("readable")]
for each in files_with_tcc_jit:
readable_file = f"readable_{each}"
if os.path.exists(readable_file):
os.remove(readable_file)
with open(each, "r") as file:
content = file.read()
for each in files_with_tcc_jit:
with open(each, "r") as file:
content = file.read()
# Replace numbers ending with "U" by their hex representation
content = re.sub(r'\b(\d+)U\b(?=U)?', lambda m: hex(int(m.group(1))), content)
with open(f"readable_{each}", "w") as file:
file.write(content)

91
scripts/run_riscv_tests.sh Executable file
View File

@ -0,0 +1,91 @@
#!/bin/bash
##
# Absolute path to this script, e.g. /home/user/bin/foo.sh
SCRIPT=`readlink -f "$0"`
# Absolute path this script is in, thus /home/user/bin
SCRIPTDIR=`dirname "$SCRIPT"`
SCRIPTNAME=`basename "$SCRIPT"`
function print_help {
echo "Usage: $SCRIPTNAME [-b <backend>] [-s <sim args>]}"
echo "Run UCB risc-v compliance test suite on backends"
echo "Optional cli arguments:"
echo " -b backend type, default all"
echo " -s <args> simulator arguments"
echo " -h print help"
echo " -v increase verbosity"
echo " -t set build type"
}
SIM_ARGS="-v1"
BACKENDS=("interp" "tcc" "llvm" "asmjit")
DEBUG=0
BUILD_TYPE=Debug
while getopts 'b:s:hvt:' c
do
case $c in
b) BACKENDS=($OPTARG);;
s) SIM_ARGS=$OPTARG ;;
h) print_help; exit 0 ;;
v) DEBUG=1 ;;
t) BUILD_TYPE = $OPTARG;;
?)
print_help >&2
exit 1
;;
esac
done
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
ROOT_DIR="$(dirname "$DIR")"
RISCV_TEST=$ROOT_DIR/build/riscv-tests
# prepare riscv-test binaries
if [ ! -d $RISCV_TEST ]; then
mkdir -p $ROOT_DIR/build; cd $ROOT_DIR/build
git clone --recursive https://github.com/riscv/riscv-tests.git
cd $RISCV_TEST
autoconf
./configure --with-xlen=32
cd $ROOT_DIR
make -C $RISCV_TEST -j -k
fi
# check that we have an executable
RISCV_EXE=$ROOT_DIR/build/${BUILD_TYPE}/dbt-rise-tgc/tgc-sim
if [ ! -x $RISCV_EXE ]; then
mkdir -p build/${BUILD_TYPE}
echo "running cmake -B build/${BUILD_TYPE} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_TCC=ON -DWITH_LLVM=ON "
cmake -S . -B build/${BUILD_TYPE} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWITH_TCC=ON -DWITH_LLVM=ON ../.. || exit 1
cmake --build build/${BUILD_TYPE} -j 20 || exit 1
fi
test_ui_list=`find ${RISCV_TEST}/isa -type f -name rv32ui-p-\* -executable | grep -v fence | grep -v ma_data |sort`
test_uc_list=`find ${RISCV_TEST}/isa -type f -name rv32uc-p-\* -executable | grep -v fence | sort`
test_um_list=`find ${RISCV_TEST}/isa -type f -name rv32um-p-\* -executable | grep -v fence | sort`
test_list="$test_ui_list $test_uc_list $test_um_list $test_mmode_list"
for backend in "${BACKENDS[@]}"; do
failed_list=()
for elf in $test_list; do
[ $DEBUG -eq 0 ] || echo Running "${RISCV_EXE} $SIM_ARGS -f $elf --backend $backend"
${RISCV_EXE} $SIM_ARGS -f $elf --backend $backend
if [ $? != 0 ]; then
failed_list+="$backend:$elf "
fi
done
tcount=`echo $test_list | wc -w`
if [ ! -z "$failed_list" ]; then
fcount=`echo $failed_list | wc -w`
echo "($backend) $fcount of $tcount test(s) failed:"
echo $failed_list | tr ' ' '\n'
else
echo
echo "($backend) All $tcount tests passed."
if [ $DEBUG -eq 1 ];then
echo "List of executed tests:"
for t in $test_list; do
name=`basename $t`
echo " $name"
done
fi
fi
done

View File

@ -0,0 +1,29 @@
import argparse
import re
def simplify_trace(input_file, output_file):
with open(input_file, "r") as infile, open(output_file, "w") as outfile:
for line in infile:
# Enhanced regex to match the instruction number, mode, and PC
match = re.search(r"\[\d+\] \[[MI]\]: (0x[0-9A-Fa-f]+)", line)
if match:
pc = match.group(1).lower()
outfile.write(f"{pc}\n")
def main():
parser = argparse.ArgumentParser(
description="Simplify a trace from an instruction set simulator."
)
parser.add_argument("input_file", type=str, help="The input trace file")
parser.add_argument(
"output_file", type=str, help="The output file for the simplified trace"
)
args = parser.parse_args()
simplify_trace(args.input_file, args.output_file)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,26 @@
import argparse
def simplify_trace(input_file, output_file):
with open(input_file, "r") as infile, open(output_file, "w") as outfile:
for line in infile:
# Split the line by the first comma and take the PC part
pc = line.split(",")[0].strip().lower()
outfile.write(f"{pc}\n")
def main():
parser = argparse.ArgumentParser(
description="Simplify traces from instruction set simulators."
)
parser.add_argument("input_file", type=str, help="The input trace file")
parser.add_argument(
"output_file", type=str, help="The output file for the simplified trace"
)
args = parser.parse_args()
simplify_trace(args.input_file, args.output_file)
if __name__ == "__main__":
main()

1
tgfs

Submodule tgfs deleted from 9c8b72693e