summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/ABlogixDPV.m4
blob: d93cdedc9b62ef288a1c179fca0c1636470c99b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
.PS
# `ABlogixDPV.m4'
  log_init(svg_font(sans-serif,10.5bp__))
  linewid = 0.4
 
#                             A more complex expression
  F: Autologix(And(Or(x3,x1,~x0),Nor(Or(x3,Not(x2),~x1,x0),
               And(x4,Or(x2,x1,~x0),Xor(x2,~x1)))))

  Loopover_(`v_', `"svg_it(v_)" wid 11bp__ at F.In`'v_ above', x0,x1,x2,x3,x4)
  "svg_it(Out)" ljust at F.Out
  "svg_tt(`Autologix(And(Or(x3,x1,~x0),')" \
      wid 201bp__ with .w at F.sw+(0,-0.25)
  "svg_tt(`Nor(Or(x3,Not(x2),~x1,x0),And(x4,Or(x2,x1,~x0),')" \
      wid 343bp__ with .w at last "".w+(65bp__,-16bp__)
  "svg_tt(`Xor(x2,~x1)))))')" \
      wid 105bp__ with .w at last "".w+(0,-16bp__)
#                             Inputs on the left with vert offset in L_units
define(`Doff',LV;offset=25)
  G: Autologix(And(Or(x3,x1,~x0),Nor(Or(x3,Not(x2),~x1,x0),
               And(x4,Or(x2,x1,~x0),Xor(x2,~x1)))),
     Doff*L_unit) \
     with .sw at F.Out+(0.2,-0.7)

  Loopover_(`v_', `"svg_it(v_)" wid 11pt__ at G.In`'v_ rjust ', x0,x1,x2,x3,x4)
  "svg_it(Out)" wid 22bp__ ljust at G.Out
  "svg_tt(`...,'Doff*L`'_unit))" at G.s+(0,-10pt__)

#                             A more complex expression
define(`Eoff',R)
 E: Autologix(And(Or(x3,x1,~x0),Nor(Or(x3,Not(x2),~x1,x0),
               And(x4,Or(x2,x1,~x0),Xor(x2,~x1)))),
        Eoff) \
    with .nw at F.sw+(0,-1.5)

  Loopover_(`v_', `"svg_it(v_)" wid 11bp__ at E.In`'v_ above ', x0,x1,x2,x3,x4)
  "svg_it(Out)" ljust at E.Out
  "svg_tt(...`,'Eoff))" at E.s+(0,-10pt__)

#                             Inputs on the left with vert offset in L_units
define(`Foff',LRV;offset=17)
 D: Autologix(And(Or(x3,x1,~x0),Nor(Or(x3,Not(x2),~x1,x0),
               And(x4,Or(x2,x1,~x0),Xor(x2,~x1)))),
     Foff*L_unit) \
    with .sw at E.Out1+(0.2,-0.5)

  Loopover_(`v_', `"svg_it(v_)" wid 11pt__ at D.In`'v_ rjust ', x0,x1,x2,x3,x4)
  "svg_it(Out)" ljust at D.Out
  "svg_tt(...`,'Foff*L`'_unit))" at D.s+(0,-10pt__)


  command "</g>" # end font
.PE