Core transformation sequence for using VL to generate SVEX modules.
(vl-simplify-sv design config) → (mv good bad)
Function:
(defun vl-simplify-sv (design config) (declare (xargs :guard (and (vl-design-p design) (vl-simpconfig-p config)))) (let ((__function__ 'vl-simplify-sv)) (declare (ignorable __function__)) (b* (((vl-simpconfig config) config) (good (vl-design-fix design)) (bad (make-vl-design)) (- (cw "Simplifying ~x0 modules.~%" (len (vl-design->mods good)))) (good (xf-cwtime (vl-design-problem-mods good config.problem-mods))) ((mv good bad) (xf-cwtime (vl-design-propagate-errors* good bad config.suppress-fatal-warning-types))) (good (xf-cwtime (vl-design-lvaluecheck good))) ((mv good bad) (xf-cwtime (vl-design-propagate-errors* good bad config.suppress-fatal-warning-types))) (good (xf-cwtime (vl-design-eliminitial good))) (good (xf-cwtime (vl-design-elaborate good config))) ((mv good bad) (xf-cwtime (vl-design-propagate-errors* good bad config.suppress-fatal-warning-types))) (good (xf-cwtime (vl-design-clean-warnings good))) (bad (xf-cwtime (vl-design-clean-warnings bad)))) (mv good bad))))
Theorem:
(defthm vl-design-p-of-vl-simplify-sv.good (b* (((mv ?good ?bad) (vl-simplify-sv design config))) (vl-design-p good)) :rule-classes :rewrite)
Theorem:
(defthm vl-design-p-of-vl-simplify-sv.bad (b* (((mv ?good ?bad) (vl-simplify-sv design config))) (vl-design-p bad)) :rule-classes :rewrite)