[prim_assert] Add more macros for FPV
diff --git a/hw/formal/fpv.tcl b/hw/formal/fpv.tcl
index 5ca7b77..5442670 100644
--- a/hw/formal/fpv.tcl
+++ b/hw/formal/fpv.tcl
@@ -13,7 +13,8 @@
   [glob ../../../../ip/*/dv/*_bind.sv] \
   [glob ../../../../ip/*/dv/tb/*_bind.sv] \
   +define+ASIC_SYNTHESIS \
-  +define+SYNTHESIS
+  +define+SYNTHESIS      \
+  +define+FPV_ON
 
 elaborate -top $env(FPV_TOP)
 
diff --git a/hw/ip/prim/rtl/prim_assert.sv b/hw/ip/prim/rtl/prim_assert.sv
index e9369dc..cc01d98 100644
--- a/hw/ip/prim/rtl/prim_assert.sv
+++ b/hw/ip/prim/rtl/prim_assert.sv
@@ -155,3 +155,39 @@
   `ASSERT_NEVER(__name``KnownData, (__valid) && $isunknown(__dat), __clk, __rst) \
   //pragma translate_on                                                          \
 `endif
+
+//------------------------------------------------------------------------------------
+// Assumption macros
+//------------------------------------------------------------------------------------
+
+// Assume a concurrent property
+`define ASSUME(__name, __prop, __clk, __rst)                                      \
+`ifndef VERILATOR                                                                 \
+  __name: assume property (@(posedge __clk) disable iff (__rst !== '0) (__prop))  \
+     else begin `ASSERT_RPT(`STRINGIFY(__name), `STRINGIFY(__prop)) end           \
+`endif
+
+//------------------------------------------------------------------------------------
+// For formal verification only
+//------------------------------------------------------------------------------------
+
+// ASSERT_FPV
+// Assert a concurrent property during formal verification only.
+`define ASSERT_FPV(__name, __prop, __clk, __rst) \
+`ifdef FPV_ON                                    \
+   `ASSERT(__name, __prop, __clk, __rst)         \
+`endif
+
+// ASSUME_FPV
+// Assume a concurrent property during formal verification only.
+`define ASSUME_FPV(__name, __prop, __clk, __rst) \
+`ifdef FPV_ON                                    \
+   `ASSUME(__name, __prop, __clk, __rst)         \
+`endif
+
+// COVER_FPV
+// Cover a concurrent property during formal verification
+`define COVER_FPV(__name, __prop, __clk, __rst)  \
+`ifdef FPV_ON                                    \
+   `COVER(__name, __prop, __clk, __rst)          \
+`endif