~ubuntu-branches/ubuntu/wily/acl2/wily

« back to all changes in this revision

Viewing changes to books/centaur/vl/transforms/occform/simple.lisp

  • Committer: Package Import Robot
  • Author(s): Camm Maguire
  • Date: 2015-01-16 10:35:45 UTC
  • mfrom: (3.3.26 sid)
  • Revision ID: package-import@ubuntu.com-20150116103545-prehe9thgo79o8w8
Tags: 7.0-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
108
108
                               (:vl-xor "XOR")
109
109
                               (:vl-xnor "XNOR")))))
110
110
 
111
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output n))
112
 
       ((mv a-expr a-port a-portdecl a-netdecl)         (vl-occform-mkport "a" :vl-input n))
113
 
       ((mv b-expr b-port b-portdecl b-netdecl)         (vl-occform-mkport "b" :vl-input n))
 
111
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output n))
 
112
       ((mv a-expr a-port a-portdecl a-vardecl)         (vl-occform-mkport "a" :vl-input n))
 
113
       ((mv b-expr b-port b-portdecl b-vardecl)         (vl-occform-mkport "b" :vl-input n))
114
114
       (out-wires (vl-make-list-of-bitselects out-expr 0 (- n 1)))
115
115
       (a-wires   (vl-make-list-of-bitselects a-expr   0 (- n 1)))
116
116
       (b-wires   (vl-make-list-of-bitselects b-expr   0 (- n 1)))
120
120
                          :origname  name
121
121
                          :ports     (list out-port a-port b-port)
122
122
                          :portdecls (list out-portdecl a-portdecl b-portdecl)
123
 
                          :netdecls  (list out-netdecl a-netdecl b-netdecl)
 
123
                          :vardecls  (list out-vardecl a-vardecl b-vardecl)
124
124
                          :modinsts  insts
125
125
                          :minloc    *vl-fakeloc*
126
126
                          :maxloc    *vl-fakeloc*)
169
169
 
170
170
       (name (hons-copy (cat "VL_" (natstr n) "_BIT_ASSIGN")))
171
171
 
172
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output n))
173
 
       ((mv in-expr in-port in-portdecl in-netdecl)     (vl-occform-mkport "in" :vl-input n))
 
172
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output n))
 
173
       ((mv in-expr in-port in-portdecl in-vardecl)     (vl-occform-mkport "in" :vl-input n))
174
174
 
175
175
       (out-wires (vl-make-list-of-bitselects out-expr 0 (- n 1)))
176
176
       (in-wires  (vl-make-list-of-bitselects in-expr  0 (- n 1)))
180
180
                          :origname  name
181
181
                          :ports     (list out-port in-port)
182
182
                          :portdecls (list out-portdecl in-portdecl)
183
 
                          :netdecls  (list out-netdecl in-netdecl)
 
183
                          :vardecls  (list out-vardecl in-vardecl)
184
184
                          :modinsts  modinsts
185
185
                          :minloc    *vl-fakeloc*
186
186
                          :maxloc    *vl-fakeloc*)
224
224
 
225
225
       (name (hons-copy (cat "VL_" (natstr n) "_BIT_NOT")))
226
226
 
227
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output n))
228
 
       ((mv in-expr in-port in-portdecl in-netdecl)     (vl-occform-mkport "in" :vl-input n))
 
227
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output n))
 
228
       ((mv in-expr in-port in-portdecl in-vardecl)     (vl-occform-mkport "in" :vl-input n))
229
229
 
230
230
       (out-wires (vl-make-list-of-bitselects out-expr 0 (- n 1)))
231
231
       (in-wires  (vl-make-list-of-bitselects in-expr 0 (- n 1)))
235
235
                          :origname  name
236
236
                          :ports     (list out-port in-port)
237
237
                          :portdecls (list out-portdecl in-portdecl)
238
 
                          :netdecls  (list out-netdecl in-netdecl)
 
238
                          :vardecls  (list out-vardecl in-vardecl)
239
239
                          :modinsts  insts
240
240
                          :minloc    *vl-fakeloc*
241
241
                          :maxloc    *vl-fakeloc*)
291
291
                               (:vl-unary-bitor  "OR")
292
292
                               (otherwise        "XOR")))))
293
293
 
294
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output 1))
295
 
       ((mv in-expr in-port in-portdecl in-netdecl)     (vl-occform-mkport "in" :vl-input n))
 
294
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output 1))
 
295
       ((mv in-expr in-port in-portdecl in-vardecl)     (vl-occform-mkport "in" :vl-input n))
296
296
       (ports     (list out-port in-port))
297
297
       (portdecls (list out-portdecl in-portdecl))
298
298
       (prim      (case type
316
316
                                :origname  name
317
317
                                :ports     ports
318
318
                                :portdecls portdecls
319
 
                                :netdecls  (list in-netdecl out-netdecl)
 
319
                                :vardecls  (list in-vardecl out-vardecl)
320
320
                                :modinsts  (list inst)
321
321
                                :minloc    *vl-fakeloc*
322
322
                                :maxloc    *vl-fakeloc*)
325
325
       ;; Otherwise, n >= 3 and we use a temporary wire.
326
326
 
327
327
       ;; wire [n-3:0] temp;
328
 
       ((mv temp-expr temp-netdecl) (vl-occform-mkwire "temp" (- n 2)))
 
328
       ((mv temp-expr temp-vardecl) (vl-occform-mkwire "temp" (- n 2)))
329
329
 
330
330
       (out-wires  (append (vl-make-list-of-bitselects temp-expr 0 (- n 3)) (list out-expr)))
331
331
       (lhs-wires  (vl-make-list-of-bitselects in-expr 1 (- n 1)))
336
336
                          :origname  name
337
337
                          :ports     ports
338
338
                          :portdecls portdecls
339
 
                          :netdecls  (list in-netdecl out-netdecl temp-netdecl)
 
339
                          :vardecls  (list in-vardecl out-vardecl temp-vardecl)
340
340
                          :modinsts  insts
341
341
                          :minloc    *vl-fakeloc*
342
342
                          :maxloc    *vl-fakeloc*)
420
420
 
421
421
       (name (cat "VL_" (natstr n) "_BIT_" (if approxp "APPROX_MUX" "MUX")))
422
422
 
423
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output n))
424
 
       ((mv sel-expr sel-port sel-portdecl sel-netdecl) (vl-primitive-mkport "sel" :vl-input))
425
 
       ((mv a-expr a-port a-portdecl a-netdecl)         (vl-occform-mkport "a"   :vl-input n))
426
 
       ((mv b-expr b-port b-portdecl b-netdecl)         (vl-occform-mkport "b"   :vl-input n))
 
423
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output n))
 
424
       ((mv sel-expr sel-port sel-portdecl sel-vardecl) (vl-primitive-mkport "sel" :vl-input))
 
425
       ((mv a-expr a-port a-portdecl a-vardecl)         (vl-occform-mkport "a"   :vl-input n))
 
426
       ((mv b-expr b-port b-portdecl b-vardecl)         (vl-occform-mkport "b"   :vl-input n))
427
427
 
428
428
       (out-wires (vl-make-list-of-bitselects out-expr 0 (- n 1)))
429
429
       (a-wires   (vl-make-list-of-bitselects a-expr 0 (- n 1)))
435
435
                             :origname  name
436
436
                             :ports     (list out-port sel-port a-port b-port)
437
437
                             :portdecls (list out-portdecl sel-portdecl a-portdecl b-portdecl)
438
 
                             :netdecls  (list out-netdecl sel-netdecl a-netdecl b-netdecl)
 
438
                             :vardecls  (list out-vardecl sel-vardecl a-vardecl b-vardecl)
439
439
                             :modinsts  insts
440
440
                             :minloc    *vl-fakeloc*
441
441
                             :maxloc    *vl-fakeloc*)))
477
477
 
478
478
       (name (hons-copy (cat "VL_" (natstr n) "_BIT_ZMUX")))
479
479
 
480
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output n))
481
 
       ((mv sel-expr sel-port sel-portdecl sel-netdecl) (vl-primitive-mkport "sel" :vl-input))
482
 
       ((mv a-expr a-port a-portdecl a-netdecl)         (vl-occform-mkport "a"   :vl-input n))
 
480
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output n))
 
481
       ((mv sel-expr sel-port sel-portdecl sel-vardecl) (vl-primitive-mkport "sel" :vl-input))
 
482
       ((mv a-expr a-port a-portdecl a-vardecl)         (vl-occform-mkport "a"   :vl-input n))
483
483
 
484
484
       (out-wires        (vl-make-list-of-bitselects out-expr 0 (- n 1)))
485
485
       (a-wires          (vl-make-list-of-bitselects a-expr 0 (- n 1)))
489
489
                            :origname  name
490
490
                            :ports     (list out-port sel-port a-port)
491
491
                            :portdecls (list out-portdecl sel-portdecl a-portdecl)
492
 
                            :netdecls  (list out-netdecl sel-netdecl a-netdecl)
 
492
                            :vardecls  (list out-vardecl sel-vardecl a-vardecl)
493
493
                            :modinsts  insts
494
494
                            :minloc    *vl-fakeloc*
495
495
                            :maxloc    *vl-fakeloc*)))
528
528
 
529
529
       (name (hons-copy (cat "VL_" (natstr n) "_BIT_CEQ")))
530
530
 
531
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output 1))
532
 
       ((mv a-expr   a-port   a-portdecl   a-netdecl)   (vl-occform-mkport "a" :vl-input n))
533
 
       ((mv b-expr   b-port   b-portdecl   b-netdecl)   (vl-occform-mkport "b" :vl-input n))
534
 
       ((mv tmp-expr tmp-netdecl)                       (vl-occform-mkwire "tmp" n))
 
531
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output 1))
 
532
       ((mv a-expr   a-port   a-portdecl   a-vardecl)   (vl-occform-mkport "a" :vl-input n))
 
533
       ((mv b-expr   b-port   b-portdecl   b-vardecl)   (vl-occform-mkport "b" :vl-input n))
 
534
       ((mv tmp-expr tmp-vardecl)                       (vl-occform-mkwire "tmp" n))
535
535
 
536
536
       ;; A bunch of instances: VL_1_BIT_CEQ bit_i (tmp[i], a[i], b[i]);
537
537
       (tmp-wires (vl-make-list-of-bitselects tmp-expr 0 (- n 1)))
548
548
                           :origname  name
549
549
                           :ports     (list out-port a-port b-port)
550
550
                           :portdecls (list out-portdecl a-portdecl b-portdecl)
551
 
                           :netdecls  (list out-netdecl a-netdecl b-netdecl tmp-netdecl)
 
551
                           :vardecls  (list out-vardecl a-vardecl b-vardecl tmp-vardecl)
552
552
                           :modinsts  (append insts (list and-inst))
553
553
                           :minloc    *vl-fakeloc*
554
554
                           :maxloc    *vl-fakeloc*)
599
599
 
600
600
       (name (hons-copy (cat "VL_" (natstr n) "_BIT_X")))
601
601
 
602
 
       ((mv out-expr out-port out-portdecl out-netdecl) (vl-occform-mkport "out" :vl-output n))
 
602
       ((mv out-expr out-port out-portdecl out-vardecl) (vl-occform-mkport "out" :vl-output n))
603
603
 
604
 
       ((mv x-expr x-netdecl) (vl-occform-mkwire "xwire" 1))
 
604
       ((mv x-expr x-vardecl) (vl-occform-mkwire "xwire" 1))
605
605
       (x-inst (vl-simple-inst *vl-1-bit-x* "xdriver" x-expr))
606
606
 
607
607
       (out-wires (vl-make-list-of-bitselects out-expr 0 (- n 1)))
612
612
                          :origname  name
613
613
                          :ports     (list out-port)
614
614
                          :portdecls (list out-portdecl)
615
 
                          :netdecls  (list out-netdecl x-netdecl)
 
615
                          :vardecls  (list out-vardecl x-vardecl)
616
616
                          :modinsts  (cons x-inst out-insts)
617
617
                          :minloc    *vl-fakeloc*
618
618
                          :maxloc    *vl-fakeloc*)