Normal way to process
(vl-design-always-backend x &key (careful-p 't) vecp) → new-x
This is a combination of several other transforms. It is the
typical way that we expect to process
Modules that survive this transform will be free of
Modules that are too difficult to process and will end up having fatal warnings added.
Function:
(defun vl-design-always-backend-fn (x careful-p vecp) (declare (xargs :guard (and (vl-design-p x) (booleanp careful-p)))) (let ((__function__ 'vl-design-always-backend)) (declare (ignorable __function__)) (b* ((x (xf-cwtime (vl-design-caseelim x))) (x (xf-cwtime (vl-design-eliminitial x))) (x (xf-cwtime (vl-design-combinational-elim x))) (x (xf-cwtime (vl-design-edgesplit x))) (x (xf-cwtime (vl-design-edgesynth x :vecp vecp))) (x (xf-cwtime (vl-design-unelse x))) (x (xf-cwtime (vl-design-ifmerge x))) (x (xf-cwtime (vl-design-latchsynth x :careful-p careful-p :vecp vecp))) (x (xf-cwtime (vl-design-elimalways x)))) x)))
Theorem:
(defthm vl-design-p-of-vl-design-always-backend (b* ((new-x (vl-design-always-backend-fn x careful-p vecp))) (vl-design-p new-x)) :rule-classes :rewrite)