Krzysztof Bieganski
Krzysztof Bieganski
Adds timing support to Verilator. It makes it possible to use delays, event controls within processes (not just at the start), wait statements, and forks. Building a design with those...
Adds support for dynamic triggers for waiting on non-static variables, such as class objects or locals. In non-static contexts like class objects or stack frames, the use of global trigger...
This change introduces a custom reference-counting pointer class. It allows for creating such ref-counting pointers from 'this', which lets us keep the receiver object around even if all references to...
We are looking into adding constrained randomization support to Verilator. Obviously that is a pretty big undertaking, so we would like to reuse some existing work for this. It appears...
After #3363 it's possible to use delays in methods. However, using event controls like: ```systemverilog class EventClass; event e; task sleep; @e; endtask task wake; ->e; endtask endclass ``` currently...
After #3363, we support continuous assignments like: ```systemverilog assign #1 clk = ~clk; ``` Such as assignment is converted into: ```systemverilog always_comb fork temp = #1 ~clk; join_none assign clk...
After #3363, if a suspendable process is resumed, we also trigger all logic that could've possibly been triggered by it. This is done by getting all sentrees from the process,...
After #3363, we make a new function for each forked process. Such functions are of the form: ``` fork(syms, whatnot) { whatnot = syms->whatnot + 1; co_await sym->other = whatnot;...
`$strobe` doesn't always interact correctly with timing (#3363). Test: ```systemverilog module t(input clk); event e1; event e2; int v = 0; initial begin #1 $strobe("v = %0d", v); ->e1; @e2...
If the user specifies the API key with leading/trailing whitespace, Butler is able to push an initial build to a given target. However, during an update push, it fails with...