(vl-netdecls-error nettype cstrength gstrength vectoredp scalaredp type delay assigns) → *
Function:
(defun vl-netdecls-error (nettype cstrength gstrength vectoredp scalaredp type delay assigns) (declare (xargs :guard (and (vl-datatype-p type) (vl-vardeclassignlist-p assigns)))) (let ((__function__ 'vl-netdecls-error)) (declare (ignorable __function__)) (cond ((and (not (eq nettype :vl-trireg)) cstrength) "A non-trireg net illegally has a charge strength.") ((and vectoredp (not (vl-datatype->pdims type))) "A range-free net is illegally declared 'vectored'.") ((and scalaredp (not (vl-datatype->pdims type))) "A range-free net is illegally declared 'scalared'.") ((and (or (atom assigns) (not (vl-vardeclassign->rhs (car assigns)))) gstrength) "A drive strength has been given to a net declaration, but is only valid on assignments.") ((vl-netdeclassigns-check-array-assigns assigns)) ((and delay (eq (vl-netdeclassigns-characterize assigns) :both)) "A delay has been given to a multiple net declaration where some of the nets have assignments and some do not; we don't know what this means. Should the delay be on the nets or the assignments?") ((not (vl-vardeclassignlist-newfree-p assigns)) "The 'new' keyword is used on the right-hand side of a net declaration, but this is a continuous assignment so new should not be used here.") (t nil))))
Theorem:
(defthm vl-vardeclassignlist-newfree-p-unless-vl-netdecls-error (implies (not (vl-netdecls-error nettype cstrength gstrength vectoredp scalaredp type delay assigns)) (vl-vardeclassignlist-newfree-p assigns)))