Top level interface for simplifying Verilog modules for use in formal verification with esim.
(vl-simplify design config) → (mv good bad)
Function:
(defun vl-simplify (design config) (declare (xargs :guard (and (vl-design-p design) (vl-simpconfig-p config)))) (let ((__function__ 'vl-simplify)) (declare (ignorable __function__)) (mbe :logic (b* (((mv good bad) (vl-simplify-main (vl-annotate-design design) config))) (mv good bad)) :exec (b* (((vl-simpconfig config) config) (design (vl-annotate-design design)) (design (if config.compress-p (xf-cwtime (hons-copy design)) design)) ((mv good bad) (vl-simplify-main design config)) (good (if config.compress-p (xf-cwtime (hons-copy good)) good)) (bad (if config.compress-p (xf-cwtime (hons-copy bad)) bad))) (vl-gc) (mv good bad)))))
Theorem:
(defthm vl-design-p-of-vl-simplify.good (b* (((mv ?good ?bad) (vl-simplify design config))) (vl-design-p good)) :rule-classes :rewrite)
Theorem:
(defthm vl-design-p-of-vl-simplify.bad (b* (((mv ?good ?bad) (vl-simplify design config))) (vl-design-p bad)) :rule-classes :rewrite)