Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add SoC config #681

Closed
wants to merge 631 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
631 commits
Select commit Hold shift + click to select a range
77ec3d5
seed debug module for Wally
stineje Jun 3, 2024
6a7f145
fix name of DSCR that I mistakenly made
stineje Jun 3, 2024
f5e01be
delete duplicate
stineje Jun 3, 2024
0bb6a88
fix missing input/output on debug module for lsu
stineje Jun 3, 2024
36c77af
fix missing config-shared.vh
stineje Jun 3, 2024
2c2d5d8
fix missing paramter-defs.vh
stineje Jun 3, 2024
5a03fbe
add flopenrs back
stineje Jun 3, 2024
3864a7f
missing privileged.sv
stineje Jun 3, 2024
fc45fb8
fix csr.sv
stineje Jun 3, 2024
45af939
update ieu
stineje Jun 3, 2024
e49ca99
fix controller typo
stineje Jun 3, 2024
bc36ede
clean up repo
Matthew-Otto Jun 4, 2024
0a6e708
Merge branch 'main' of https://github.com/stineje/cvw
Matthew-Otto Jun 4, 2024
2e0c286
cleanup, rename python scripts
Matthew-Otto Jun 4, 2024
5b50fcd
update two files tha thad repeated lines in them
stineje Jun 4, 2024
1deb44b
fix operator for tap.sv
stineje Jun 4, 2024
bdbd310
fix operator for dm.sv
stineje Jun 4, 2024
ae49006
fix operator for ir and rad
stineje Jun 4, 2024
345c8ce
temporary assignment of JTAG ID
stineje Jun 4, 2024
d900f68
make requested changes
Matthew-Otto Jun 4, 2024
ba9d351
Merge branch 'main' of https://github.com/stineje/cvw
Matthew-Otto Jun 4, 2024
61defc7
update jtag id in openocd.cfg
stineje Jun 4, 2024
ac6f65d
add header to other python file
stineje Jun 4, 2024
9b8aa18
fix double quotes in fstrings
stineje Jun 4, 2024
c565ae3
cleanup of cvw top
stineje Jun 4, 2024
d686176
add items that may be useful as caused error on Ubuntu 22.04 LTS inst…
stineje Jun 4, 2024
6b03e41
fix random data len bug
Matthew-Otto Jun 4, 2024
be0199f
Merge branch 'main' of https://github.com/stineje/cvw
Matthew-Otto Jun 4, 2024
07f010f
turn off DEBUG_SUPPORTED as default
stineje Jun 4, 2024
8485125
fix tap operator for OR
stineje Jun 4, 2024
dc06542
fix E_SUPPORTED inversion bug
Matthew-Otto Jun 5, 2024
2f1c191
Merge branch 'main' of https://github.com/stineje/cvw
Matthew-Otto Jun 5, 2024
6ba6595
Update DEBUG_SUPPORTED to individual configs
stineje Jun 5, 2024
f92783e
change JTAGID again
stineje Jun 5, 2024
5cdd423
config for rv32gc
stineje Jun 5, 2024
9e430be
change JTAG ID in cfg for openocd
stineje Jun 5, 2024
e8f0616
remove unused file
Matthew-Otto Jun 5, 2024
5d8c060
Fixed testcount to not make spurious warnings about src
davidharrishmc Jun 5, 2024
1af670d
Fixed testcount to not make spurious warnings about src
davidharrishmc Jun 5, 2024
4156c5a
minor tweaks to python file
stineje Jun 6, 2024
fc0fa69
Merge pull request #826 from davidharrishmc/dev
rosethompson Jun 6, 2024
9489771
Fixed support for individual crypto extensions without Zb*
davidharrishmc Jun 6, 2024
5dfde80
Merge pull request #827 from davidharrishmc/dev
rosethompson Jun 6, 2024
130715a
mod debug.sh to have FP regs
stineje Jun 6, 2024
1d5ce9d
update fpu debug
stineje Jun 6, 2024
cd7624f
mod wallypipelinedcore/soc for FP debug of regs
stineje Jun 6, 2024
12a4f2b
initial work on dm for FP regs in debug spec
stineje Jun 6, 2024
0d4e0f8
fix silly typo with comment in hw_debug_test.py
stineje Jun 6, 2024
73999d5
uncore: Add bsg_dmc memory controller to AHB bus
infinitymdm Feb 28, 2024
7ed4e06
uncore: Add bsg_dmc and expose DDR PHY interface
infinitymdm Feb 28, 2024
e40242f
uncore: Add fifo
infinitymdm Feb 28, 2024
2036e4b
soc: Move SoC sv to a new folder
infinitymdm Feb 29, 2024
ec0162e
uncore: Revert changes to uncore.sv
infinitymdm Feb 29, 2024
7b6db34
soc/fifo: Add copyright headers
infinitymdm Feb 29, 2024
40b053c
soc: organize SoC sources
infinitymdm Feb 29, 2024
c3984ca
soc/src/bsg_dmc_ahb.sv: Fix syntax errors
infinitymdm Feb 29, 2024
d67f0ff
soc/src/bsg_dmc_ahb.sv: Fix incorrect parameters
infinitymdm Feb 29, 2024
8199ca8
soc/src/fifo/fifo.sv: Fix missing parameter
infinitymdm Feb 29, 2024
68e7294
soc: Fix basejump_stl submodule path
infinitymdm Mar 1, 2024
20e30be
soc: Add shallow=true to basejump_stl submodule
infinitymdm Mar 1, 2024
6db23ad
soc/src: Update basejump_stl to current master
infinitymdm Mar 4, 2024
7b77171
soc/src: Fix small FIFO bugs, correct DDR paramaterization
infinitymdm Mar 6, 2024
918da5a
soc: Add testbench and integrate into regression tests
infinitymdm Mar 6, 2024
3879e18
soc/src: Add script to sparse-checkout the bsg_dmc files
infinitymdm Mar 11, 2024
f773abe
soc/src/setup_basejump.sh: Fix basejump setup script for fresh init e…
infinitymdm Mar 11, 2024
7c0136f
WIP PLL integration
infinitymdm Mar 12, 2024
f5a44cc
soc/src/bsg_dmc_ahb: Fix ddr_addr width
infinitymdm Mar 16, 2024
b42b754
soc: Initial soc config
infinitymdm Mar 19, 2024
2bb23c5
sim: Combine wally-soc.do into wally-batch.do
infinitymdm Mar 20, 2024
9ba5735
soc: Fix various bugs in BSG implementation (WIP)
infinitymdm Mar 22, 2024
45bee8a
soc: Fix port width errors
infinitymdm Mar 25, 2024
fdbb161
soc: Add RT's lpddrtest and make many small fixes
infinitymdm Mar 27, 2024
cad1bb4
sim/wally.do: Suppress bsg-related non-fatal errors during sim
infinitymdm Mar 27, 2024
70a6f39
soc: Fix simulation for non-soc configs
infinitymdm Mar 27, 2024
e1a9d4b
sim: Use x16 LPDDR model for SoC simulation
infinitymdm Mar 28, 2024
94635dd
sim: Add custom tests to SoC runs
infinitymdm Mar 28, 2024
dfb652d
sim: Add memory controller waves to wave.do
infinitymdm Mar 28, 2024
e6c8b2e
soc/src/ahbxuiconverter.sv: Fix write enable bug on first transaction
infinitymdm Apr 2, 2024
7589ccd
soc/src/ahbxuiconverter.sv: Fix multiple bugs related to UI writes
infinitymdm Apr 4, 2024
b8e590d
soc/src/ahbxuiconverter.sv: Fix burst behavior
infinitymdm Apr 9, 2024
1ff6bc9
soc/src: Remove old fifo files
infinitymdm Apr 9, 2024
c94ef1a
soc/src/ahbxuiconverter.sv: Handle burst reads more correctly
infinitymdm Apr 10, 2024
51ed54b
wave.do: Update with waveforms relevant to memory controller burst tr…
infinitymdm Apr 11, 2024
56c3bdf
uncore: Add bsg_dmc memory controller to AHB bus
infinitymdm Feb 28, 2024
58740ed
uncore: Add bsg_dmc and expose DDR PHY interface
infinitymdm Feb 28, 2024
d8d1d98
uncore: Add fifo
infinitymdm Feb 28, 2024
62f036b
soc: Move SoC sv to a new folder
infinitymdm Feb 29, 2024
c0d4536
uncore: Revert changes to uncore.sv
infinitymdm Feb 29, 2024
59a9598
soc/fifo: Add copyright headers
infinitymdm Feb 29, 2024
1c39e9f
soc: organize SoC sources
infinitymdm Feb 29, 2024
c4a495e
soc/src/fifo/fifo.sv: Fix missing parameter
infinitymdm Feb 29, 2024
c2a4f23
soc: Add shallow=true to basejump_stl submodule
infinitymdm Mar 1, 2024
9b21d4c
soc/src: Fix small FIFO bugs, correct DDR paramaterization
infinitymdm Mar 6, 2024
aed5ac3
soc: Add testbench and integrate into regression tests
infinitymdm Mar 6, 2024
972aa45
soc/src/ahbxuiconverter: Fix combinational loop involving HREADYOUT
infinitymdm Apr 17, 2024
df924f1
testbench: Fix indentation errors (mixed tabs/spaces)
infinitymdm Apr 17, 2024
9733b29
soc/src/ahbxuiconverter.sv: Fix bug in HREADYOUT logic
infinitymdm Apr 18, 2024
232ded1
soc/src/ahbxuiconverter.sv: Fix several timing issues
infinitymdm Apr 23, 2024
86e77da
soc/src/ahbxuiconverter.sv: Fix timing bugs with HREADY and HRDATA
infinitymdm Apr 24, 2024
558c15e
soc/src/ahbxuiconverter: Fix bug in write ops when UI is not ready fo…
infinitymdm Apr 30, 2024
4c0031f
sim/questa/wally.do: Add BSG_DEFINES shorthand for memory parameters
infinitymdm Apr 30, 2024
1bdc8a6
soc/src/ahbxuiconverter.sv: Parameterize BURST_LEN
infinitymdm May 17, 2024
f2bdebb
WIP fixes to ahbxuiconverter
infinitymdm May 20, 2024
53cfc4a
soc/src/ahbxuiconverter: Switch to FSM-based control for AHB burst ma…
infinitymdm May 22, 2024
d40f2fa
soc/src/ahbxuiconverter: Working FSMs for AHB and UI burst control
infinitymdm May 24, 2024
d2dde41
soc/src/uiburstctrl: Fix bugs in UI command format
infinitymdm May 25, 2024
c68804e
soc/src/ahbburstctrl: Handle edge cases in read bursts
infinitymdm May 30, 2024
b2d6032
soc/src/ahbxuiconverter: Working read path
infinitymdm May 30, 2024
03790e3
soc/src: Add memory-mapped config registers for bsg_dmc
infinitymdm Jun 4, 2024
244cd32
soc: Integrate bsg_dmc_config_apb
infinitymdm Jun 4, 2024
475f4d1
soc: Integrate PLL config registers
infinitymdm Jun 5, 2024
4620455
soc: Fix bugs related to bsg_dmc_config_apb
infinitymdm Jun 6, 2024
23f0307
Fix configs for SoC params and add SoC FSBL config programs
infinitymdm Jun 6, 2024
c40bc50
soc: Build fsbl as a shared lib and include in lpddrtest
infinitymdm Jun 7, 2024
2c07048
config/soc: Disable SDC_SUPPORTED for now as it breaks simulation
infinitymdm Jun 7, 2024
17ee969
soc: Fix bugs in PLL register write
infinitymdm Jun 7, 2024
5f5938f
add FP registers to debug scan chain
Matthew-Otto Jun 8, 2024
4fad0b0
change names of debug/chain output
stineje Jun 8, 2024
c3243ca
add simple debug test for riscv-none-elf-gdb
stineje Jun 8, 2024
97cf2fd
update some comments on debug
stineje Jun 9, 2024
42af10d
minor fix of DSCR naming comment
stineje Jun 9, 2024
67a6e3a
comment update in csrm.sv
stineje Jun 9, 2024
7f63daa
convert debug script to TCL interface, remove telnetlib dependency
Matthew-Otto Jun 9, 2024
95df21f
improve hart status signalling
Matthew-Otto Jun 9, 2024
8e9b245
Merge branch 'main' of https://github.com/stineje/cvw
Matthew-Otto Jun 9, 2024
fb81f03
update sample program
stineje Jun 9, 2024
f488cd7
remove bad jlink command from openocd.cfg
stineje Jun 9, 2024
74a7f47
Merge branch 'main' of github.com:stineje/cvw
stineje Jun 9, 2024
2fc214b
Merge branch 'openhwgroup:main' into main
Matthew-Otto Jun 9, 2024
5ba6e4d
DM accesses to DPC address point to PCM
Matthew-Otto Jun 9, 2024
cb37bea
minor comments
stineje Jun 9, 2024
d2f55b4
update csrs so there is a record of them
stineje Jun 10, 2024
4675614
another csr debug.vh update
stineje Jun 10, 2024
8b88775
Simplified 3:1 mux to 2:1 mux when only Zbkc is supported and clmulr …
davidharrishmc Jun 10, 2024
b4bddf1
Fixed typo in derivgen
davidharrishmc Jun 10, 2024
9bd5bd8
Removed duplicate bpred 10_16_16 entries from derivlist
davidharrishmc Jun 10, 2024
5094122
Simplifying fround
davidharrishmc Jun 10, 2024
1873064
Simplified fround exact case
davidharrishmc Jun 10, 2024
4c066c0
Removing two unnecessary 0's from fmashiftcalc interface
davidharrishmc Jun 10, 2024
3284dd2
Removed unnecessary Zero checking on FmaPreResultSubnorm
davidharrishmc Jun 10, 2024
e02c100
postprocessor shift amount simplification
davidharrishmc Jun 10, 2024
1be7d47
soc: Remove BSG deps from non-SoC code
infinitymdm Jun 10, 2024
6b3b927
soc: Final merge cleanup
infinitymdm Jun 10, 2024
c5b1338
Merge pull request #829 from davidharrishmc/dev
rosethompson Jun 10, 2024
f5e22fc
update csrm to add dpc and dcsr
stineje Jun 10, 2024
7212f0c
soc: Fix several bugs that crept in during rebase on main
infinitymdm Jun 11, 2024
673d3ac
Merge remote-tracking branch 'upstream/soc' into pll
infinitymdm Jun 11, 2024
29fe598
Fixed testfloat regression and added bitmanip/crypto variants
davidharrishmc Jun 11, 2024
46cc64b
Merge pull request #830 from davidharrishmc/dev
rosethompson Jun 11, 2024
52ddfca
pll: add test and fasten registers for PLL config per TCI recommendat…
infinitymdm Jun 11, 2024
abff0bb
(WIP) make all CSRs scannable by DM
Matthew-Otto Jun 12, 2024
c8e5a33
cleanup repo, still WIP
Matthew-Otto Jun 12, 2024
b7e2f34
shiftcorrection cleanup
davidharrishmc Jun 12, 2024
544aa7c
shiftcorrection cleanup
davidharrishmc Jun 12, 2024
28142ef
Formatting shiftcorrection
davidharrishmc Jun 12, 2024
312c9c9
Updated logger to new IClass signal name
davidharrishmc Jun 12, 2024
31f437b
fixed GPR/FPR scan regression
Matthew-Otto Jun 12, 2024
6f1f3b7
Alls CSRS tested (Read only)
Matthew-Otto Jun 12, 2024
61eba04
fix whitespace in fregfile.sv
Matthew-Otto Jun 13, 2024
d21e5b1
fix scanning when XLEN != FLEN
Matthew-Otto Jun 13, 2024
f3ff671
Merge branch 'openhwgroup:main' into main
Matthew-Otto Jun 13, 2024
a7051b5
soc/fsbl/config_pll.s: Config PLL for 2GHz clkout
infinitymdm Jun 13, 2024
21ccdc0
soc: Update testbench, reduce ahbxuiconverter FIFO size
infinitymdm Jun 13, 2024
164d312
soc: Fix polarity of PLL sync handshake
infinitymdm Jun 13, 2024
b77fcd7
Merge branch 'main' of https://github.com/openhwgroup/cvw
rosethompson Jun 13, 2024
d319703
update jtag id
Matthew-Otto Jun 14, 2024
6ae7ac9
Implement DCSR (Writes are broken)
Matthew-Otto Jun 14, 2024
fb75fe4
Remove stale questa wkdir before regression
davidharrishmc Jun 14, 2024
334b616
Removed redundant apt-get line
davidharrishmc Jun 14, 2024
6789f32
Starting code cleanup
davidharrishmc Jun 14, 2024
b1c9450
Code cleanup: RAM, fdivsqrt
davidharrishmc Jun 14, 2024
8f09240
Simplified outdated documentation pointers
davidharrishmc Jun 14, 2024
53477b2
Code cleanup
davidharrishmc Jun 14, 2024
bfd3c9f
Fixed gettenvval when variable is undefined per verilator Issue 5179
davidharrishmc Jun 14, 2024
be7d657
Fix CSR writes from DM
Matthew-Otto Jun 14, 2024
4a4bbdf
More code cleanup
davidharrishmc Jun 14, 2024
d0deb1b
Add DPC support (does not write on resume)
Matthew-Otto Jun 14, 2024
60f12a6
Fix DPC write and DCSR Cause
Matthew-Otto Jun 14, 2024
54c0726
Merge pull request #833 from davidharrishmc/dev
rosethompson Jun 15, 2024
679ff34
Improved permissions for CSR access
Matthew-Otto Jun 15, 2024
3a2e8ae
just in case: add rad.sv with comment + new cfg for openocd
stineje Jun 16, 2024
d6256d1
cleanup, dont update Prv in DCSR
Matthew-Otto Jun 16, 2024
c853eee
fix typo in csrd
Matthew-Otto Jun 16, 2024
7dd0182
add progbuff write logic stub
Matthew-Otto Jun 16, 2024
5c593c3
Fix step timing, rewrite jtag to include explicit reset
Matthew-Otto Jun 17, 2024
2fc9edf
Fixed Issue #752 of Verilator simulation by changing LRUMemory to be …
davidharrishmc Jun 18, 2024
7509e85
Removed asynchronous reset causing lint issue in peripherals
davidharrishmc Jun 18, 2024
ecae110
Lint cleanup
davidharrishmc Jun 18, 2024
cac67aa
Lint cleanup
davidharrishmc Jun 18, 2024
3fa37b0
Lint cleanup
davidharrishmc Jun 18, 2024
45f5052
Lint cleanup
davidharrishmc Jun 18, 2024
8bae52b
Lint cleanup of unused signals
davidharrishmc Jun 18, 2024
a493b9b
Merge pull request #835 from davidharrishmc/dev
jordancarlin Jun 18, 2024
c1fd7a9
Removed unused signals
davidharrishmc Jun 18, 2024
cb563e8
Clean up unused signals
davidharrishmc Jun 18, 2024
301ded0
Unused signal cleanup
davidharrishmc Jun 18, 2024
d2933ed
Merge pull request #836 from davidharrishmc/dev
rosethompson Jun 18, 2024
955f5d8
Merge branch 'main' of https://github.com/openhwgroup/cvw
jordancarlin Jun 19, 2024
00ccd80
Update VCS RTL file exclusions with renamed ram
jordancarlin Jun 19, 2024
d58b454
Finish switching Zfa to use riscv-arch-test
jordancarlin Jun 19, 2024
569ccfd
Update riscv-arch-test submodule
jordancarlin Jun 19, 2024
156bfc0
Update f_fma tests to use smaller files from riscv-arch-test
jordancarlin Jun 19, 2024
1f569ed
Merge pull request #838 from jordancarlin/vcs_fix
davidharrishmc Jun 19, 2024
54cb612
Fixed lint error in fdivsqrtpreproc for rv32 IDIV_ON_FPU
davidharrishmc Jun 19, 2024
4b4980e
Fixed undriven OutFmt
davidharrishmc Jun 19, 2024
10e6d58
Removed unnecessary Umfirst from early termination
davidharrishmc Jun 19, 2024
ab1af0f
Merge branch 'main' of https://github.com/openhwgroup/cvw into main
rosethompson Jun 19, 2024
c5dac4d
Removed *** from fpga top.
rosethompson Jun 19, 2024
ab1ee3d
Removed *** from IFU, lrcs.
rosethompson Jun 19, 2024
cc58bfd
Removed more *** from the ifu.
rosethompson Jun 19, 2024
f0e5bbe
Removed remaining *** from IFU.
rosethompson Jun 19, 2024
4911642
Removed *** and updated comments for bpred and align.
rosethompson Jun 19, 2024
5e5ca08
Removed more *** from lsu and updated assertions for dtim.
rosethompson Jun 19, 2024
77523c5
LSU no longer has ***.
rosethompson Jun 19, 2024
71f267a
Added InstrUpdateDAF to the HPTW.
rosethompson Jun 19, 2024
24916d4
Refactored TLBMiss and TLBMissOrUpdateA(D) to simplify spill, ifu, ls…
rosethompson Jun 19, 2024
9b6b661
Cleaned up hptw.
rosethompson Jun 19, 2024
576f1b9
Moved the *** from trap to an issue.
rosethompson Jun 19, 2024
91c844c
Removed more *** from camline and csrc.
rosethompson Jun 19, 2024
7f0ba87
Updated comments in uart.
rosethompson Jun 19, 2024
d368f2e
Removed *** from testbench.
rosethompson Jun 19, 2024
64712d2
Updated wave to match changes in testbench.
rosethompson Jun 19, 2024
2d8973d
Updated wavefile to use new names.
rosethompson Jun 19, 2024
685f4d3
Removed the last of the ***.
rosethompson Jun 19, 2024
1ffd30f
Merge pull request #846 from ross144/main
davidharrishmc Jun 19, 2024
9922b24
Merge branch 'main' of https://github.com/openhwgroup/cvw into dev
davidharrishmc Jun 19, 2024
46ace52
Updated verilator makefile.
rosethompson Jun 19, 2024
e4febf2
Merge pull request #847 from ross144/main
davidharrishmc Jun 19, 2024
5f1ee1a
Fixed undriven signal in certain config
davidharrishmc Jun 19, 2024
9e93f21
Updated covergen to not include stores as they are incomplete.
rosethompson Jun 19, 2024
e88a2f7
Merge branch 'main' of github.com:ross144/cvw into main
rosethompson Jun 19, 2024
9514eab
Implement progbuf and attempt to halt/resume using existing trap logi…
Matthew-Otto Jun 20, 2024
0ab3f28
Lint cleanup
davidharrishmc Jun 20, 2024
27457f4
Merge pull request #848 from ross144/main
davidharrishmc Jun 20, 2024
25780f5
Fixed Verilator testbench issue from FunctionName by rolling back to …
davidharrishmc Jun 20, 2024
90f5a4e
Only run fmsub_b15 for f_fma test
jordancarlin Jun 20, 2024
d8d94ee
Merge pull request #808 from jordancarlin/main
davidharrishmc Jun 20, 2024
e1fc44a
Merge pull request #849 from davidharrishmc/dev
rosethompson Jun 20, 2024
2a64f52
change where DPC is muxed into pipe
Matthew-Otto Jun 21, 2024
4626037
Merge branch 'main' into main
Matthew-Otto Jun 21, 2024
636501e
Fix missing comma in merge
Matthew-Otto Jun 21, 2024
21a51a1
fix bug with resuming from debug mode
Matthew-Otto Jun 23, 2024
850f720
Merge branch 'main' of https://github.com/openhwgroup/cvw into merge_…
infinitymdm Jun 24, 2024
3747e91
lpddr_test: Fix exit routine
infinitymdm Jun 24, 2024
372904c
Fix progbuf addressing, fix various syntax errors
Matthew-Otto Jun 25, 2024
bf4bdd4
Block traps in debug mode
Matthew-Otto Jun 25, 2024
8bd674b
fix many linting errors
Matthew-Otto Jun 25, 2024
e919439
Fix many more lint errors
Matthew-Otto Jun 25, 2024
a91dcd8
Fix progbufaddr size
Matthew-Otto Jun 25, 2024
89c2db5
Merge branch 'main' of https://github.com/stineje/cvw into pll
infinitymdm Jun 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
46 changes: 44 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
**/work*
**/wally_*.log
/**/obj_dir*
/**/gmon*

.nfs*

Expand Down Expand Up @@ -115,10 +117,10 @@ tests/wally-riscv-arch-test/riscv-test-suite/rv*i_m/I/src/*.S
tests/wally-riscv-arch-test/riscv-test-suite/rv*i_m/I/Makefrag
sim/branch_BP_GSHARE10.log
sim/branch_BP_GSHARE16.log
sim/imperas.log
sim/questa/imperas.log
sim/results-error/
sim/test1.rep
sim/vsim.log
sim/questa/vsim.log
tests/coverage/*.elf
*.elf.memfile
sim/*Cache.log
Expand Down Expand Up @@ -186,7 +188,10 @@ sim/cfi/*
sim/branch/*
sim/obj_dir
examples/verilog/fulladder/obj_dir
examples/verilog/fulladder/fulladder.vcd
config/deriv
docs/docker/buildroot-config-src
docs/docker/testvector-generation
sim/questa/cov
sim/questa/covhtmlreport/
sim/questa/logs
Expand All @@ -196,3 +201,40 @@ sim/verilator/wkdir
sim/vcs/logs
sim/vcs/wkdir
benchmarks/coremark/coremark_results.csv
fpga/zsbl/OBJ/*
fpga/zsbl/bin/*
sim/*.svg
sim/vcs/csrc
sim/vcs/profileReport*
sim/vcs/program.out
sim/vcs/sim_out*
sim/vcs/simprofile_dir
sim/vcs/ucli.key
sim/vcs/verdi_config_file
sim/vcs/vcdplus.vpd
sim/*/testbench.vcd
sim/questa/imperas.log
sim/questa/functcov.log
sim/questa/functcov_logs/*
sim/questa/functcov_ucdbs/*
sim/questa/functcov
sim/questa/riscv.ucdb
sim/questa/riscv.ucdb.log
sim/questa/riscv.ucdb.summary.log
sim/questa/riscv.ucdb.testdetails.log
tests/riscvdv
examples/verilog/fulladder/csrc/
examples/verilog/fulladder/profileReport.html
examples/verilog/fulladder/profileReport.json
examples/verilog/fulladder/profileReport.txt
examples/verilog/fulladder/profileReport/
examples/verilog/fulladder/simprofile_dir/
examples/verilog/fulladder/simv.daidir/
examples/verilog/fulladder/ucli.key
examples/verilog/fulladder/verdi_config_file
examples/crypto/gfmul/gfmul
tests/functcov
tests/functcov/*
tests/functcov/*/*
sim/vcs/simprofile*
soc/fsbl/*.a
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
[submodule "addins/riscv-arch-test"]
path = addins/riscv-arch-test
url = https://github.com/riscv-non-isa/riscv-arch-test
branch = dev
[submodule "addins/branch-predictor-simulator"]
path = addins/branch-predictor-simulator
url = https://github.com/ross144/branch-predictor-simulator
Expand Down
102 changes: 76 additions & 26 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,16 @@
# Top-level Makefile for CORE-V-Wally
# SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1

SIM = ${WALLY}/sim

all:
make install
make riscof
make testfloat
# make verify
make coverage
make benchmarks

# install copies over the Makefile.include from riscv-isa-sim
# And corrects the TARGETDIR path and the RISCV_PREFIX

install:
# *** 1/15/23 dh: check if any of this is still needed
#cp ${RISCV}/riscv-isa-sim/arch_test_target/spike/Makefile.include addins/riscv-arch-test/
#sed -i '/export TARGETDIR ?=/c\export TARGETDIR ?= ${RISCV}/riscv-isa-sim/arch_test_target' addins/riscv-arch-test/Makefile.include
#echo export RISCV_PREFIX = riscv64-unknown-elf- >> addins/riscv-arch-test/Makefile.include
##cd tests/linux-testgen/linux-testvectors; source ./tvLinker.sh # needs to be run in local directory
##rm tests/imperas-riscv-tests/riscv-ovpsim-plus/bin/Linux64/riscvOVPsimPlus.exe
##ln -s ${RISCV}/imperas-riscv-tests/riscv-ovpsim-plus/bin/Linux64/riscvOVPsimPlus.exe tests/imperas-riscv-tests/riscv-ovpsim-plus/bin/Linux64/riscvOVPsimPlus.exe
# make coverage
# make benchmarks

# riscof builds the riscv-arch-test and wally-riscv-arch-test suites
riscof:
make -C sim

Expand All @@ -31,21 +21,22 @@ testfloat:
cd ${WALLY}/tests/fp; ./create_all_vectors.sh

verify:
cd ${WALLY}/sim; ./regression-wally
cd ${WALLY}/sim; ./sim-testfloat-batch all
cd ${SIM}; ./regression-wally
cd ${SIM}/sim; ./sim-testfloat-batch all
make imperasdv

imperasdv:
iter-elf.bash --search ${WALLY}/tests/riscof/work/wally-riscv-arch-test/rv64i_m
iter-elf.bash --search ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m

imperasdv_cov:
touch ${WALLY}/sim/seed0.txt
echo "0" > ${WALLY}/sim/seed0.txt
touch ${SIM}/seed0.txt
echo "0" > ${SIM}/seed0.txt
# /opt/riscv/ImperasDV-OpenHW/scripts/cvw/run-elf-cov.bash --verbose --seed 0 --search ${WALLY}/tests/riscof/work/wally-riscv-arch-test/rv64i_m
# /opt/riscv/ImperasDV-OpenHW/scripts/cvw/run-elf-cov.bash --elf ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/I/src/add-01.S/dut/my.elf --seed ${WALLY}/sim/seed0.txt --coverdb ${WALLY}/sim/cov/rv64gc_arch64i.ucdb --verbose
/opt/riscv/ImperasDV-OpenHW/scripts/cvw/run-elf-cov.bash --elf ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/I/src/add-01.S/dut/my.elf --seed ${WALLY}/sim/seed0.txt --coverdb riscv.ucdb --verbose
vcover report -details -html sim/riscv.ucdb
# /opt/riscv/ImperasDV-OpenHW/scripts/cvw/run-elf-cov.bash --elf ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/I/src/add-01.S/dut/my.elf --seed ${SIM}/seed0.txt --coverdb ${SIM}/cov/rv64gc_arch64i.ucdb --verbose
# /opt/riscv/ImperasDV-OpenHW/scripts/cvw/run-elf-cov.bash --elf ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/I/src/add-01.S/dut/my.elf --seed ${SIM}/seed0.txt --coverdb ${SIM}/questa/riscv.ucdb --verbose
run-elf-cov.bash --elf ${WALLY}/tests/riscvdv/asm_test/riscv_arithmetic_basic_test_0.elf --seed ${SIM}/questa/seed0.txt --coverdb ${SIM}/questa/riscv.ucdb --verbose
vcover report -details -html ${SIM}/questa/riscv.ucdb

funcovreg:
#iter-elf.bash --search ${WALLY}/tests/riscof/work/wally-riscv-arch-test/rv64i_m --cover
Expand All @@ -54,10 +45,69 @@ funcovreg:
#iter-elf.bash --search ${WALLY}/tests/riscof/work/wally-riscv-arch-test/rv64i_m/Q --cover
rm -f ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/*/src/*/dut/my.elf
iter-elf.bash --search ${WALLY}/tests/riscof/work/riscv-arch-test/rv64i_m/I --cover
vcover report -details -html sim/riscv.ucdb

coverage:
cd ${WALLY}/sim; ./regression-wally -coverage -fp
vcover report -details -html ${SIM}/questa/riscv.ucdb



# test_name=riscv_arithmetic_basic_test
riscvdv:
python3 ${WALLY}/addins/riscv-dv/run.py --test ${test_name} --target rv64gc --output tests/riscvdv --iterations 1 -si questa --iss spike --verbose --cov --seed 0 --steps gen,gcc_compile >> ${SIM}/questa/functcov_logs/${test_name}.log 2>&1
# python3 ${WALLY}/addins/riscv-dv/run.py --test ${test_name} --target rv64gc --output tests/riscvdv --iterations 1 -si questa --iss spike --verbose --cov --seed 0 --steps gcc_compile >> ${SIM}/questa/functcov_logs/${test_name}.log 2>&1
# python3 ${WALLY}/addins/riscv-dv/run.py --test ${test_name} --target rv64gc --output tests/riscvdv --iterations 1 -si questa --iss spike --verbose --cov --seed 0 --steps iss_sim >> ${SIM}/questa/functcov_logs/${test_name}.log 2>&1
# run-elf.bash --seed ${SIM}/questa/seed0.txt --verbose --elf ${WALLY}/tests/riscvdv/asm_test/${test_name}_0.o >> ${SIM}/questa/functcov_logs/${test_name}.log 2>&1
#run-elf-cov.bash --seed ${SIM}/questa/seed0.txt --verbose --coverdb ${SIM}/questa/riscv.ucdb --elf ${WALLY}/tests/riscvdv/asm_test/${test_name}_0.o >> ${SIM}/questa/functcov_logs/${test_name}.log 2>&1
#cp ${SIM}/questa/riscv.ucdb ${SIM}/questa/functcov_ucdbs/${test_name}.ucdb

riscvdv_functcov:
mkdir -p ${SIM}/questa/functcov_logs
mkdir -p ${SIM}/questa/functcov_ucdbs
cd ${SIM}/questa/functcov_logs && rm -rf *
cd ${SIM}/questa/functcov_ucdbs && rm -rf *
make riscvdv test_name=riscv_arithmetic_basic_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_amo_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_ebreak_debug_mode_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_ebreak_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_floating_point_arithmetic_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_floating_point_mmu_stress_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_floating_point_rand_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_full_interrupt_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_hint_instr_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_illegal_instr_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_invalid_csr_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_jump_stress_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_loop_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_machine_mode_rand_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_mmu_stress_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_no_fence_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_non_compressed_instr_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_pmp_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_privileged_mode_rand_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_rand_instr_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_rand_jump_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_sfence_exception_test >> ${SIM}/questa/functcov.log 2>&1
make riscvdv test_name=riscv_unaligned_load_store_test >> ${SIM}/questa/functcov.log 2>&1

combine_functcov:
mkdir -p ${SIM}/questa/functcov
mkdir -p ${SIM}/questa/functcov_logs
cd ${SIM}/questa/functcov && rm -rf *
run-elf-cov.bash --seed ${SIM}/questa/seed0.txt --verbose --coverdb ${SIM}/questa/functcov/add.ucdb --elf ${WALLY}/tests/functcov/rv64/I/WALLY-COV-add.elf >> ${SIM}/questa/functcov_logs/add.log 2>&1
run-elf-cov.bash --seed ${SIM}/questa/seed0.txt --verbose --coverdb ${SIM}/questa/functcov/and.ucdb --elf ${WALLY}/tests/functcov/rv64/I/WALLY-COV-and.elf >> ${SIM}/questa/functcov_logs/add.log 2>&1
run-elf-cov.bash --seed ${SIM}/questa/seed0.txt --verbose --coverdb ${SIM}/questa/functcov/ori.ucdb --elf ${WALLY}/tests/functcov/rv64/I/WALLY-COV-ori.elf >> ${SIM}/questa/functcov_logs/add.log 2>&1

vcover merge ${SIM}/questa/functcov/functcov.ucdb ${SIM}/questa/functcov/*.ucdb ${SIM}/questa/functcov_ucdbs/* -suppress 6854 -64
# vcover merge ${SIM}/questa/functcov/functcov.ucdb ${SIM}/questa/functcov_ucdbs/* -suppress 6854 -64
vcover report -details -html ${SIM}/questa/functcov/functcov.ucdb
vcover report ${SIM}/questa/functcov/functcov.ucdb -details -cvg > ${SIM}/questa/functcov/functcov.log
vcover report ${SIM}/questa/functcov/functcov.ucdb -testdetails -cvg > ${SIM}/questa/functcov/functcov.testdetails.log
# vcover report ${SIM}/questa/functcov/functcov.ucdb -details -cvg -below 100 | egrep "Coverpoint|Covergroup|Cross" | grep -v Metric > ${SIM}/questa/functcov/functcov.ucdb.summary.log
vcover report ${SIM}/questa/functcov/functcov.ucdb -details -cvg | egrep "Coverpoint|Covergroup|Cross|TYPE" > ${SIM}/questa/functcov/functcov.summary.log
grep "Total Coverage By Instance" ${SIM}/questa/functcov/functcov.ucdb.log

remove_functcov_artifacts:
rm ${SIM}/questa/riscv.ucdb ${SIM}/questa/functcov.log covhtmlreport/ ${SIM}/questa/functcov_logs/ ${SIM}/questa/functcov_ucdbs/ ${SIM}/questa/functcov/ -rf

collect_functcov: remove_functcov_artifacts riscvdv_functcov combine_functcov

benchmarks:
make coremark
Expand Down
81 changes: 67 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,38 +41,46 @@ Clone your fork of the repo and run the setup script. Change <yourgithubid> to y
$ git remote add upstream https://github.com/openhwgroup/cvw
$ source ./setup.sh

If you are installing on a new system without any tools installed please jump to the next section, Toolchain Installation then come back here.

Add the following lines to your .bashrc or .bash_profile to run the setup script each time you log in.

if [ -f ~/cvw/setup.sh ]; then
source ~/cvw/setup.sh
fi

Edit setup.sh and change the following lines to point to the path and license server for your Siemens Questa and Synopsys Design Compiler installation and license server. If you only have Questa, you can still simulate but cannot run logic synthesis.

export [email protected] # Change this to your Siemens license server
export [email protected] # Change this to your Synopsys license server
export QUESTAPATH=/cad/mentor/questa_sim-2021.2_1/questasim/bin # Change this for your path to Questa
export SNPSPATH=/cad/synopsys/SYN/bin # Change this for your path to Design Compiler

If the tools are not yet installed on your server, follow the Toolchain Installation instructions in the section below.

Build the tests and run a regression simulation with Questa to prove everything is installed. Building tests will take a while.

$ make
$ cd sim
$ ./regression-wally (depends on having Questa installed)
$ regression-wally (depends on having Questa installed)

# Toolchain Installation (Sys Admin)

This section describes the open source toolchain installation. The
current version of the toolchain has been tested on Ubuntu and Red
current version of the toolchain has been tested on Ubuntu and partly on Red
Hat/Rocky 8 Linux. Ubuntu works more smoothly and is recommended
unless you have a compelling need for RedHat.
unless you have a compelling need for RedHat. However, Ubuntu 22.04LTS
is incompatible with Synopsys Design Compiler.

Ubuntu users can install the tools by running

$ sudo $WALLY/bin/wally-tool-chain-install.sh

The default installation directory is /opt/riscv defined by the environment variable RISCV. You must copy and edit ~/cvw/site-setup.sh to $RISCV/site-setup.sh.

~/cvw/setup.sh sources $RISCV/site-setup.sh.
This allows for customization of the site specific information such as commerical licenses and PATH variables.

Change the following lines to point to the path and license server for your Siemens Questa and Synopsys Design Compiler installation and license server. If you only have Questa, you can still simulate but cannot run logic synthesis. If Questa or Design Compiler are already setup on this system then don't set these variables.

export MGLS_LICENSE_FILE=.. # Change this to your Siemens license server
export SNPSLMD_LICENSE_FILE=.. # Change this to your Synopsys license server
export QUESTAPATH=.. # Change this for your path to Questa
export SNPSPATH=.. # Change this for your path to Design Compiler


See wally-tool-chain-install.sh for a detailed description of each component,
or to issue the commands one at a time to install on the command line.
## Installing EDA Tools
Expand Down Expand Up @@ -131,9 +139,54 @@ Startups can expect to spend more than $1 million on CAD tools to get a chip to
## Adding Cron Job for nightly builds

If you want to add a cronjob you can do the following:
1) `crontab -e`
2) add this code:
1) Set up the email client `mutt` for your distribution
2) Enter `crontab -e` into a terminal
3) add this code to test building CVW and then running `regression-wally --nightly` at 9:30 PM each day
```
0 3 * * * BASH_ENV=~/.bashrc bash -l -c "PATH_TO_CVW/cvw/bin/wrapper_nightly_runs.sh > PATH_TO_LOG_FOLDER/cron.log"
30 21 * * * bash -l -c "source ~/PATH/TO/CVW/setup.sh; PATH_TO_CVW/cvw/bin/wrapper_nightly_runs.sh --path {PATH_TO_TEST_LOCATION} --target all --tests nightly --send_email [email protected],[email protected]"
```

# Example wsim commands

wsim runs one of multiple simulators, Questa, VCS, or Verilator using a specific configuration and either a suite of tests or a specific elf file.
The general syntax is
wsim <config> <suite or elf file or directory> [--options]

Parameters and options:

-h, --help show this help message and exit
--sim {questa,verilator,vcs}, -s {questa,verilator,vcs} Simulator
--tb {testbench,testbench_fp}, -t {testbench,testbench_fp} Testbench
--gui, -g Simulate with GUI
--coverage, -c Code & Functional Coverage
--fcov, -f Code & Functional Coverage
--args ARGS, -a ARGS Optional arguments passed to simulator via $value$plusargs
--vcd, -v Generate testbench.vcd
--lockstep, -l Run ImperasDV lock, step, and compare.
--locksteplog LOCKSTEPLOG, -b LOCKSTEPLOG Retired instruction number to be begin logging.
--covlog COVLOG, -d COVLOG Log coverage after n instructions.
--elfext ELFEXT, -e ELFEXT When searching for elf files only includes ones which end in this extension

Run basic test with questa

wsim rv64gc arch64i

Run Questa with gui

wsim rv64gc wally64priv --gui

Run lockstep against ImperasDV with a single elf file in the --gui. Lockstep requires single elf.

wsim rv64gc ../../tests/riscof/work/riscv-arch-test/rv64i_m/I/src/add-01.S/ref/ref.elf --lockstep --gui

Run lockstep against ImperasDV with a single elf file. Compute coverage.

wsim rv64gc ../../tests/riscof/work/riscv-arch-test/rv64i_m/I/src/add-01.S/ref/ref.elf --lockstep --coverage

Run lockstep against ImperasDV with directory file.

wsim rv64gc ../../tests/riscof/work/riscv-arch-test/rv64i_m/I/src/ --lockstep

Run lockstep against ImperasDV with directory file and specify specific extension.

wsim rv64gc ../../tests/riscof/work/riscv-arch-test/rv64i_m/I/src/ --lockstep --elfext ref.elf
2 changes: 1 addition & 1 deletion addins/riscv-arch-test
Submodule riscv-arch-test updated 425 files
2 changes: 1 addition & 1 deletion addins/riscv-dv
12 changes: 6 additions & 6 deletions benchmarks/coremark/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
PORT_DIR = $(CURDIR)/riscv64-baremetal
cmbase= $(WALLY)/addins/coremark
work_dir= $(WALLY)/benchmarks/coremark/work
XLEN ?=64
XLEN ?=32
sources=$(cmbase)/core_main.c $(cmbase)/core_list_join.c $(cmbase)/coremark.h \
$(cmbase)/core_matrix.c $(cmbase)/core_state.c $(cmbase)/core_util.c \
$(PORT_DIR)/core_portme.h $(PORT_DIR)/core_portme.c $(PORT_DIR)/core_portme.mak \
$(PORT_DIR)/crt.S $(PORT_DIR)/encoding.h $(PORT_DIR)/util.h $(PORT_DIR)/syscalls.c
ABI := $(if $(findstring "64","$(XLEN)"),lp64,ilp32)
#ARCH := rv$(XLEN)gc_zba_zbb_zbc
ARCH := rv$(XLEN)im_zicsr_zba_zbb_zbc
ARCH := rv$(XLEN)im_zicsr_zba_zbb_zbs
CONFIG := rv$(XLEN)gc
#ARCH := rv$(XLEN)gc
#ARCH := rv$(XLEN)imc_zicsr
#ARCH := rv$(XLEN)im_zicsr
Expand All @@ -27,9 +27,9 @@ PORT_CFLAGS = -g -mabi=$(ABI) -march=$(ARCH) -static -falign-functions=16 \

all: $(work_dir)/coremark.bare.riscv.elf.memfile

run:
time wsim rv$(XLEN)gc coremark 2>&1 | tee $(work_dir)/coremark.sim.log
#(cd ../../sim && (time vsim -c -do "do wally-batch.do rv$(XLEN)gc coremark" 2>&1 | tee $(work_dir)/coremark.sim.log))
run: $(work_dir)/coremark.bare.riscv.elf.memfile
# time wsim rv$(XLEN)gc coremark --sim verilator 2>&1 | tee $(work_dir)/coremark.sim.log
time wsim ${CONFIG} coremark 2>&1 | tee $(work_dir)/coremark.sim.log

$(work_dir)/coremark.bare.riscv.elf.memfile: $(work_dir)/coremark.bare.riscv
riscv64-unknown-elf-objdump -D $< > $<.elf.objdump
Expand Down
Loading