Check for unsupported constructs.
(vl-module-check-e-ok x warnings) → (mv okp warnings)
Function:
(defun vl-module-check-e-ok (x warnings) (declare (xargs :guard (and (vl-module-p x) (vl-warninglist-p warnings)))) (let ((__function__ 'vl-module-check-e-ok)) (declare (ignorable __function__)) (b* (((vl-module x) x) (acc nil) (acc (if x.fundecls (cons (str::join (cons "function declarations: " (vl-fundecllist->names x.fundecls)) " ") acc) acc)) (acc (if x.taskdecls (cons (str::join (cons "task declarations: " (vl-taskdecllist->names x.taskdecls)) " ") acc) acc)) (acc (if x.assigns (cons "assigns" acc) acc)) (acc (if x.gateinsts (cons "gate instances" acc) acc)) (acc (if x.alwayses (cons "always blocks" acc) acc)) (acc (if (vl-has-any-hid-netdecls x.vardecls) (cons "hierarchical identifiers" acc) acc)) (acc (if (vl-module->ifports x) (cons "interface ports" acc) acc)) ((unless acc) (mv t warnings)) (w (make-vl-warning :type :vl-unsupported :msg "Failing to build an E module for ~s0 because it still has ~ ~&1. We generally expect all constructs other than net ~ declarations and module instances to be simplified away by ~ other transforms before E module generation." :args (list x.name acc) :fatalp t :fn 'vl-module-check-e-ok))) (mv nil (cons w warnings)))))
Theorem:
(defthm booleanp-of-vl-module-check-e-ok.okp (b* (((mv ?okp ?warnings) (vl-module-check-e-ok x warnings))) (booleanp okp)) :rule-classes :type-prescription)
Theorem:
(defthm vl-warninglist-p-of-vl-module-check-e-ok.warnings (implies (force (vl-warninglist-p warnings)) (b* (((mv ?okp ?warnings) (vl-module-check-e-ok x warnings))) (vl-warninglist-p warnings))) :rule-classes :rewrite)