Build vl-gateinst-p's from the sliced-up arguments.
(vl-assemble-gateinsts names args idx idxincr type strength delay atts loc) → gates
Function:
(defun vl-assemble-gateinsts (names args idx idxincr type strength delay atts loc) (declare (xargs :guard (and (string-listp names) (vl-plainarglistlist-p args) (integerp idx) (integerp idxincr) (vl-gatetype-p type) (vl-maybe-gatestrength-p strength) (vl-maybe-gatedelay-p delay) (vl-atts-p atts) (vl-location-p loc)))) (declare (xargs :guard (same-lengthp names args))) (let ((__function__ 'vl-assemble-gateinsts)) (declare (ignorable __function__)) (if (atom args) nil (cons (make-vl-gateinst :type type :name (car names) :range nil :strength strength :delay delay :args (car args) :atts (cons (cons "VL_REPLICATE_INDEX" (vl-make-index idx)) atts) :loc loc) (vl-assemble-gateinsts (cdr names) (cdr args) (+ idx idxincr) idxincr type strength delay atts loc)))))
Theorem:
(defthm vl-gateinstlist-p-of-vl-assemble-gateinsts (b* ((gates (vl-assemble-gateinsts names args idx idxincr type strength delay atts loc))) (vl-gateinstlist-p gates)) :rule-classes :rewrite)