PADDLE(10.6)                                         PADDLE(10.6)

     NAME
          paddle - pal description language

     DESCRIPTION
          Paddle is a description language for detailing the fuse for-
          mat of programmable devices.  Paddle is used by xpal(10.1)
          to create the fuse map that urom(10.1) and friends want.  It
          is also used by xpart(10.1).

          Paddle has an underlying model of arrays of fuses.  This
          mGoidnevl{l[oolkisnesofmreotmhi(n8g,-l3i2k)ettohi(s8:,0s)calliene=f1r6o/m0.(182,50)detfoin(e32,-
          1162)) lliinnee ffrroomm ((302,,--1166))ttoo((88,,--1362))]G}budbebflienewiGtbhuf.n{w[ altin(e32f,r-om
          ((83,2-,3-21)6)toto(8(,80,)-3l2i)nelifnreomfr(o8m,0()32t,o-1(63)2,t-o16()40l,i-n1e6)frloimne from
          ((02,,-01)6)litnoe (f8r,o-m16()0,]-}6)detfoin(e0,G-b2u)bblliene{[frloimne(2f,r-o8m) (t0o,-(20),-t6o)
          lfirnoem f(r8o,m-2()6,t-o8)(8t,o-6()2,l-i8n)e lfirnoem f(r6o,m0)(8t,o-6()8,t-o2)(6l,i-n8e)flrionme
          (l2i,n0e)ftroom(6(,201),-]3}) dteofi(n1e1,G-r3o)rl{i[nelifnreomfr(o3m2,(01)1,t-o3)(2t1o,-(30),0)
          lliinnee ffrroomm ((3225,,--1265)) ttoo ((3229,,0-)21l)inleinferofmro(m29(,2-12,1-)29t)ot(o32(,2-51,6-)
          2(51)6,l-i3n2e) flrionme (f1r6o,m-3(24),-t2o3)(2t1o,-(299,)-2l8i)nelifnreomfr(o9m,-(208,)-1t6o) to
          (]4},-d2e3f)inleinGerofrr5om{[(0G,r0o)r twoit(h0,.-n1w6)atli(n1e6,f0r)omli(n0e,0f)rotmo((00,,00))
          tloju(s1t6,a0b)ovleinaet f(r3o2m0,(-6141,20))"tionv(e4r8t,e0d)l]i}ne""idlejmupsotteanbtovleinaet"
          ((312902,,--18502))tloin(e19f2r,o-m25(62)32l,i-n8e0)frtoom ((213824,,--28506))tloin(e18f4r,o-m256)
          "(i4n6p4u,t-1n1o2d)e"lilnjeusftroambo(v9e6,a-t11(20),-t1o52()96l,i-n1e52f)rolmin(e16f0r,o-m112) to
          ((112200,,--111522)) ttoo ((906,,--115122))lGibnueffwriotmh(.1n6w0,a-t15(21)20t,o-9(64)64l,i-n1e52f)rom
          Gliinnve wfirtohm .(n2w08a,t-2(8182)0,t-o13(62)08G,r-o3r250)wi"t.h" .lnjwusatta(b1o7v6e,-a2t56)
          (200,-208) "." ljust above at (208,-208) "." ljust above at
          (216,-208) "output node" center below at (208,-320) The
          input to an and/or array is a set of nodes; the output is
          also a set of nodes.  A node can be externally visible (such
          as a pin) or it may be an internal node.  The buffered or
          inverted version of a node is called a "line".  The inter-
          section of a line with the input term of the OR is con-
          trolled by a fuse.  The collection of fuses over a set of
          input and output nodes is called an array.

          It is possible that a device may have multiple and/or
          arrays; examples of such devices include the Advanced Micro
          Devices Mach parts, the Cypress 7C361 finite state machine
          controller and the Signetics Macrologic (PLS 501, 601 and
          701) parts.  Therefore, every array declaration must be fol-
          lowed by a symbolic name.  This helps xpal and xpart to give
          useful error messages.  Also, each array must have an "off-
          set" declaration.  This permits the array to be placed any-
          where in the fuse space.  Next, the declaration of input and
          output nodes must be given.  Note that in most programmable
          logic devices, input lines come in both complement and idem-
          potent flavors and are provided courtesy of the buffer on
          the input pin.  Paddle therefore has a declaration that
          declares that a given set of nodes are doubled, either the
          complement or idempotent line first.



     Page 1                       Plan 9             (printed 12/2/22)

     PADDLE(10.6)                                         PADDLE(10.6)

          Fuse arrays are used for declaring special fuses that some
          programmable parts offer.  For example, the 22V10 has fuses
          that set the polarity of the output pin, whether the output
          is latched or combinatorial and so forth.  These fuses are
          not organized in an and/or array and so paddle just permits
          a one-to-one mapping between artificial pin (external node)
          numbers and fuse numbers.  permits multiple fuse arrays pro-
          vided they are given unique names.  Each definition begins
          by defining the name of the part along with possible syn-
          onyms.  This is followed by (1) an array declaration (2) a
          fuse block definition (3) a type declaration (the .tt line)
          and lastly, a (4) pins declaration.  The array declaration
          permits declaration of input and output pins to the array.
          The use of the complement keyword create 2 input lines for a
          given pin.  The general form of a pin declaration is
          pin:terms=fuse, where terms is the maximum number of terms
          for the pin and fuse is the optional fuse number.

     EXAMPLES
          Here is part of the declaration of a 20L10:

          20L10=NS20L10=AM20L10 {
              package "DIP24"
              declare {
               internal {
                    output enables { 114..123 }
               }
               external {
                    inputs { 1..13 }
                    inverted outputs { 14..23 }
                    ground { 12 }
                    supply { 24 }
               }
              }
              array and/or {
               inputs complement+ {
                    2,   1,
                    .
                    .
                    .
                    11,  13
               }
               outputs {
                    123:1,
                    23:3,
                    .
                    .
                    .
                    }
               }
          }

     Page 2                       Plan 9             (printed 12/2/22)

     PADDLE(10.6)                                         PADDLE(10.6)

     SEE ALSO
          xpal(10.1)

     FILES
          /sys/lib/cda/library.paddle

     Page 3                       Plan 9             (printed 12/2/22)