OK, I believe that the following may work for you. The key is this sequence that waits till
number of bits in ny_bus==32. I put the sequence into an assertion that once successfully attempted with go==1, go is disabled until success.
$countones(my_bus)==32 [->1];
import uvm_pkg::*;
`include "uvm_macros.svh"
module allrose;
bit [31:0] my_bus;
bit clk, go=1'b1;
function void setgo(bit val);
go=val;
endfunction
initial forever #5 clk=!clk;
sequence q_all_rose;
$countones(my_bus)==32 [->1];
endsequence
ap_allrose: assert property(@(posedge clk)
go |-> (1, setgo(1'b0)) ##0 q_all_rose) setgo(1'b1); // else setgo(1'b1);
endmodule
Ben Cohen http://www.systemverilog.us/
- SystemVerilog Assertions Handbook, 3rd Edition, 2013
- A Pragmatic Approach to VMM Adoption
- Using PSL/SUGAR … 2nd Edition
- Real Chip Design and Verification
- Cmpt Design by Example
- VHDL books