In reply to rkg_:
You can use the generatestatement as shown below;
module top;
bit i_ref_clk, refclk_en_fll_sync, refclk_output;
bit[3:0] i_refclk_div;
// -------------------------------------------------------------------------------
generate for (genvar i=0; i<=3; i++)
begin
p_ref_clk: assert property(@(posedge i_ref_clk)
( $rose(refclk_en_fll_sync) && i_refclk_div == i+1 ) ->
refclk_output==!$past(refclk_output, 2**i));
end
endgenerate
// ---------------------------------------------------------------------------------
p_ref_clk2: assert property(@(posedge i_ref_clk)
( $rose(refclk_en_fll_sync) && i_refclk_div == 4'b0001 ) ->
refclk_output==!$past(refclk_output));
ap_ref_clk4: assert property(@(posedge i_ref_clk)
($rose(refclk_en_fll_sync) && i_refclk_div == 4'b0010) |->
refclk_output==!$past(refclk_output,2));
ap_ref_clk8: assert property(@(posedge i_ref_clk)
($rose(refclk_en_fll_sync) && i_refclk_div == 4'b0011) |->
refclk_output==!$past(refclk_output,4));
ap_ref_clk16: assert property(@(posedge i_ref_clk)
($rose(refclk_en_fll_sync) && i_refclk_div == 4'b0100) |->
refclk_output==!$past(refclk_output,8));
endmodule
Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
For training, consulting, services: contact http://cvcblr.com/home.html
** SVA Handbook 4th Edition, 2016 ISBN 978-1518681448
…
- SVA Package: Dynamic and range delays and repeats SVA: Package for dynamic and range delays and repeats | Verification Academy
- Free books: Component Design by Example FREE BOOK: Component Design by Example … A Step-by-Step Process Using VHDL with UART as Vehicle | Verification Academy
Real Chip Design and Verification Using Verilog and VHDL($3) https://rb.gy/cwy7nb - Papers:
- Understanding the SVA Engine,
Verification Horizons - July 2020 | Verification Academy - SVA Alternative for Complex Assertions
Verification Horizons - March 2018 Issue | Verification Academy - SVA in a UVM Class-based Environment
SVA in a UVM Class-based Environment | Verification Horizons | Verification Academy