Create a vl-bindelim-insttable that summarizes the module instances throughout the entire design.
(vl-bindelim-create-insttable x) → itbl
Function:
(defun vl-bindelim-create-insttable (x) (declare (xargs :guard (vl-design-p x))) (let ((__function__ 'vl-bindelim-create-insttable)) (declare (ignorable __function__)) (b* (((vl-design x) (vl-design-fix x)) (itbl (+ (len x.mods) (len x.interfaces))) (itbl (vl-modulelist-bindelim-insttable x.mods itbl)) (itbl (vl-interfacelist-bindelim-insttable x.interfaces itbl)) (bind-insts (vl-bindlist->modinsts x.binds)) (itbl (vl-bindelim-extend-insttable bind-insts x nil t itbl))) itbl)))
Theorem:
(defthm vl-bindelim-insttable-p-of-vl-bindelim-create-insttable (b* ((itbl (vl-bindelim-create-insttable x))) (vl-bindelim-insttable-p itbl)) :rule-classes :rewrite)
Theorem:
(defthm vl-bindelim-create-insttable-of-vl-design-fix-x (equal (vl-bindelim-create-insttable (vl-design-fix x)) (vl-bindelim-create-insttable x)))
Theorem:
(defthm vl-bindelim-create-insttable-vl-design-equiv-congruence-on-x (implies (vl-design-equiv x x-equiv) (equal (vl-bindelim-create-insttable x) (vl-bindelim-create-insttable x-equiv))) :rule-classes :congruence)