Tracking changes per date:
-
ProbeEdit
, a component for interactive debugging (and maybe some end usage as well). It allows you to enter a value (dec/hex) for a signal. It acts as a register so its content will be used in the next clock cycle (one could also think of changing this to act directly by triggering some re-evaluation, not sure).ProbeEdit
also implements a proper history buffer so you can reverse the simulation. -
un_clock
method in theComponent
trait. It does not alter the simulation state (for that we already have a history buffer), components with internal state (e.g., theProbeEdit
component) implementsun_clock
and keep a local history. Maybe we will have some helper functions to that end.
-
Panes, right click component to display component interior on left panel. Close left panel view by the X (Close) button.
-
Left panel views can be folded/unfolded
- mips/reg_file update, showcasing interior mutability and gui_vizia poc.
-
fern
based logger. -
Fixed clippy lint for Rust 1.71
-
WIP support for named outputs.
-
Added caching to the Github workflow to improve job times.
- Added bounds checking for
Simulator
(set_id_index
,get_input_val
), panics on out of bounds. - Added re-definition check for
Simulator
, panics on re-definition. - Added units tests to the above.
-
Refactoring of
Component
trait such that logic part is separated from GUI part. -
Test framework added, where integration (simulation tests are found in the
tests
folders.)
-
Webhooks for Discord channel.
-
.gitignore
to exclude.gv
and.json
files. -
SignExtension
component.
Compilation times might be annoying. It seems that under Linux there is a lot more dependencies than under Windows, so building SyncRim
is faster on Win10 than under Linux (stock settings). There are a number of things to try out to reduce compilation times (and in particular hot
iterations).
- Disable generation of debug (DWARF) info.
debug = false
(ordebug = 0
). If stack backtraces are needed usedebug = 1
, which is still faster thandebug = 2
(debug = true
equivalent). - Use
mold
instead oflld
.
Together debug = 0
and mold
linking may yield significant improvements. (On the 7950x3d
, hot
re-compiles improved from around 4 seconds to 0.3 seconds (in the range of measuring errors for vscode interactions etc.) With debug = true
+ mold
0.5 seconds or so, both acceptable, mold
makes the biggest difference to incremental builds.
See Cargo.toml
and .cargo/config.toml
for updated configuration. Notice, you need to install mold
through your package manager for this to work.
path
no longer stored in.json
model.path
passed as&PathBuf
togui
andcomponent_store
.path
stored asPathBuf
in thegui
.
Finally, SyncRim can now open models through Open
(CTRL-O) in gui
(ReOpen
(Ctrl-R) still works to read manually changed .json
).
Notice, if running a simulator compiled from root you cannot load mips models. Instead start from a mips simulator, that can load mips models, e.g., the reg_file
or mips
examples (or the main
in the mips
folder). This is expected and desired behavior, a feature not a bug :)