! PLA chip generator, with the PLA described as equations, Tables or Roms %include "ilap:ilap.inc" %begin %constant %integer max port = 100 %integer Mode, rest %string (255) data file, out file %routine pla chip (%integer mode, %string (255) data file, out file) %integer p1, p2, outs, ins, i %integer %array null (1:1) %integer %array ia, oa (1:max port) %record (connf) %array ports (1:max port) initialise (out file) %if mode='E' %start sepla ("Pla", data file, top outputs, null, null, p1, p2, ia, oa) %finish %else %if mode='T' %start stpla ("Pla", data file, top outputs, null, null, p1, p2, ia, oa) %finish %else %start srom ("Pla", data file, top outputs, null, null, p1, p2, ia, oa) %finish pla data size (ins, outs) fill port (ports(1), vdd pad, left, 0, 8, metal) fill port (ports(2), in pad, left, p1, 2, poly) fill port (ports(3), in pad, right, p2, 2, poly) fill port (ports(4), gnd pad, right, 0, 8, metal) fill port (ports(i+4), in pad, bottom, ia(i), 2, diffusion) %for i=1,1,ins ins = ins + 4 fill port (ports(i+ins), out pad, top, oa(i), 2, diffusion) %for i=1,1,outs place pads ("Pla chip", "Pla", ports, outs+ins) finish %end prompt ("PLA from Equations, Truth Tables or Rom data (E, T, or R)? ") read symbol (mode) %and mode=mode&95 %until mode='E' %or mode='T' %or mode='R' read symbol (rest) %until rest=nl prompt ("File name containing PLA data: ") read (data file) prompt ("File name for the chip: ") read (out file) pla chip (mode, data file, out file) %end %of %program