//--------------------------------------------------------------------------- // // ASSERT_WINDOW // //--------------------------------------------------------------------------- // NAME // ASSERT_WINDOW - An event bounded (window) invariant concurrent // assertion to ensure that a variable (or expression) // remains TRUE. // //--------------------------------------------------------------------------- module assert_window (clk, reset_n, start_event, test_expr, end_event); // synopsys template input clk, reset_n, start_event, test_expr, end_event; parameter severity_level = 0; `ifdef ASSERT_V1_0_1 // Previous version of the library `else // New version to allow for future options parameter options = 0; `endif parameter msg="VIOLATION"; //synopsys translate_off `ifdef ASSERT_ON // local paramaters used as defines parameter WINDOW_START = 1'b0; parameter WINDOW_CHECK = 1'b1; reg r_state; initial r_state=WINDOW_START; parameter assert_name = "ASSERT_WINDOW"; integer error_count; initial error_count = 0; `include "ovl_task.h" `ifdef ASSERT_INIT_MSG initial ovl_init_msg; // Call the User Defined Init Message Routine `endif always @(posedge clk) begin `ifdef ASSERT_GLOBAL_RESET if (`ASSERT_GLOBAL_RESET != 1'b0) begin `else if (reset_n != 0) begin // active low reset `endif case (r_state) WINDOW_START: if (start_event == 1'b1) begin r_state <= WINDOW_CHECK; end WINDOW_CHECK: begin if (end_event == 1'b1) begin r_state <= WINDOW_START; end if (test_expr != 1'b1) begin ovl_error(""); end end endcase end else begin r_state <= WINDOW_START; end end // always `endif //synopsys translate_on endmodule