#---------------------------------- cut here ---------------------------------- # This is a shell archive. Remove anything before this line, # then unpack it by saving it in a file and typing "sh file". # # This archive contains: # time # # Modification/access file times will be preserved. LANG=""; export LANG PATH=/bin:/usr/bin:$PATH; export PATH echo mkdir - time mkdir time echo x - time/README cat >time/README <<'@EOF' This directory contains all the material necessary to generate simple chip for a 24 hour clock. The root file is "lineclock.bdnet", which consists of the core of the chip. Data pads and corner pads are added with "linepads.bdnet" and "linechip.bdnet". The pads and padframe are of the MOSIS tinychip variety. The script to build the chip is "bld"; the script that cleans the directory for the build is "bldcln". Individual scripts can be used to invoke individual tools; these scripts are all named "m". The build script does not use all the tools in the m* scripts (such as mps or mstats), but only those necessary for the build. A simple simulation of the chip can be run by typing "msim lineclock". Remember that the OCTTOOLS and USER shell variables must be defined for the build to complete, and that $OCTTOOLS/bin must be in the search path. The build takes approximately 20 minutes on a Sun 4/260. The resulting chip can be examined in vem by running vem and typing "linechip:wired"o Note that three warning messages may occur in the mosaico step, one from NLE and the other two from PGcurrent. With respect to the chip itself, the input consists of a 60 Hz signal (one cycle of which is called a "jiffy"), a count up line, a count down line, and a reset line. The chip outputs the time in BCD. It also outputs a second clock line, and a line that flashes on every other second (for a blinking ":" display, for example). It is anticipated that the clock will be set by running a fast clock in on the 60Hz input line. The shar file was created via "shar -Cmv time > timar" @EOF touch -m 1117143092 time/README touch -a 1117143092 time/README chmod 644 time/README echo x - time/digitclock.bds cat >time/digitclock.bds <<'@EOF' model digitClock carryNext<0>, latchClock<0> = enableNext<0>, carryLast<0>, basicClock<0>, clear<0>, jiffy; routine digitClock; begin if ((clear EQL 1) AND (jiffy EQL 1)) OR ((basicClock EQL 1) AND (carryLast EQL 1)) then latchClock = 1 else latchClock = 0; if enableNext EQL 1 AND carryLast EQL 1 then carryNext = 1; end; endroutine; endmodel; @EOF touch -m 0811015792 time/digitclock.bds touch -a 1116173992 time/digitclock.bds chmod 644 time/digitclock.bds echo x - time/mblif cat >time/mblif <<'@EOF' bdsyn -A -o $1.blif $1.bds @EOF touch -m 0303001292 time/mblif touch -a 1116173992 time/mblif chmod 755 time/mblif echo x - time/mlogic cat >time/mlogic <<'@EOF' misII -f script.msu -T oct -o $1:logic $1.blif @EOF touch -m 0303001292 time/mlogic touch -a 1116173992 time/mlogic chmod 755 time/mlogic echo x - time/mnet cat >time/mnet <<'@EOF' bdnet $1.bdnet @EOF touch -m 0303001292 time/mnet touch -a 1116173992 time/mnet chmod 755 time/mnet echo x - time/mplace cat >time/mplace <<'@EOF' #/bin/csh octflatten -t LEAF -o $1\:flat $1\:unplaced >& $1.log padplace -cv $1\:flat >>& $1.log wolfe -o $1\:placed $1\:flat >>& $1.log @EOF touch -m 0819162392 time/mplace touch -a 1116173992 time/mplace chmod 755 time/mplace echo x - time/msim cat >time/msim <<'@EOF' musa -i $1.sim $1:unplaced | more @EOF touch -m 0808234992 time/msim touch -a 1116173992 time/msim chmod 755 time/msim echo x - time/second60.bds cat >time/second60.bds <<'@EOF' model second60 d<5:0>, second<0> = q<5:0>, reset<0>; ! Output: Babylonian second clock signal ! Input: master reset ! (latch is clocked by jiffy source) routine second60; begin if (reset EQL 1) then begin d = 0; second = 0; end else if (q EQL 59) then begin d = 0; second = 1; end else begin d = q + 1; second = 0; end; end; endroutine; endmodel; @EOF touch -m 0812140292 time/second60.bds touch -a 1116173992 time/second60.bds chmod 644 time/second60.bds echo x - time/second.bdnet cat >time/second.bdnet <<'@EOF' MODEL second:unplaced; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Declare the formal terminals of this circuit. INPUT reset<0>; CLOCK jiffy; OUTPUT second<0>; OUTPUT secflash<0>; SUPPLY Vdd; GROUND GND; ! Put down an instance of the 60 count logic INSTANCE second60:logic NAME = c60 PROMOTE; d<5:0>:c60d<5:0>; q<5:0>:c60q<5:0>; second<0>:secondlogic<0>; reset<0>:reset<0>; ! Put down latches to hold the count. ARRAY %i FROM 0 TO 5 OF INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:c60d<%i>; CLK2:jiffy; Q:c60q<%i>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ! Put down a latch to hold the output. INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:secondlogic<0>; CLK2:jiffy; Q:second<0>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ! Put down logic to flip (flop) every (other) second. INSTANCE flash:logic NAME = secblink PROMOTE; flashIn<0>:secflash<0>; flashOut<0>:secflashNext<0>; invert<0>:second<0>; reset<0>:reset<0>; ! Put down a latch to flip (flop) every (other) second. INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:secflashNext<0>; CLK2:jiffy; Q:secflash<0>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ENDMODEL; @EOF touch -m 0810014992 time/second.bdnet touch -a 1116173992 time/second.bdnet chmod 644 time/second.bdnet echo x - time/second.sim cat >time/second.sim <<'@EOF' ! Make the counter output vectors mv q60 c60q<5:0> ! Define a single cycle jiffy clock macro ma c se jiffy 1 ev se jiffy 0 ev sh second<0> secflash<0> q60 $end ! Define a many cycle jiffy clock macro ma cc se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev sh second<0> secflash<0> q60 $end ! reset se reset<0> 0 c se reset<0> 1 rp 2 c se reset<0> 0 ! just do it. rp 100 c rp 100 cc rp 100 c @EOF touch -m 0810015092 time/second.sim touch -a 1116173992 time/second.sim chmod 644 time/second.sim echo x - time/bld cat >time/bld <<'@EOF' #/bin/csh echo mblogic digit10count bdsyn -A -o digit10count.blif digit10count.bds misII -f script.msu -T oct -o digit10count\:logic digit10count.blif echo mnet digit10latch bdnet digit10latch.bdnet echo mblogic digit24count bdsyn -A -o digit24count.blif digit24count.bds misII -f script.msu -T oct -o digit24count\:logic digit24count.blif echo mnet digit24latch bdnet digit24latch.bdnet echo mblogic digit6count bdsyn -A -o digit6count.blif digit6count.bds misII -f script.msu -T oct -o digit6count\:logic digit6count.blif echo mnet digit6latch bdnet digit6latch.bdnet echo mblogic digitclock bdsyn -A -o digitclock.blif digitclock.bds misII -f script.msu -T oct -o digitclock\:logic digitclock.blif echo mnet hours bdnet hours.bdnet echo mblogic second60 bdsyn -A -o second60.blif second60.bds misII -f script.msu -T oct -o second60\:logic second60.blif echo mblogic flash bdsyn -A -o flash.blif flash.bds misII -f script.msu -T oct -o flash\:logic flash.blif echo mnet second bdnet second.bdnet echo mblogic udlogic bdsyn -A -o udlogic.blif udlogic.bds misII -f script.msu -T oct -o udlogic\:logic udlogic.blif echo mnet udnet bdnet udnet.bdnet echo mnet lineclock bdnet lineclock.bdnet echo mplacer lineclock 9 octflatten -t LEAF -o lineclock\:flat lineclock\:unplaced padplace -cv lineclock\:flat wolfe -r 9 -o lineclock\:placed lineclock\:flat echo mnet linepads bdnet linepads.bdnet echo mwired linepads mosaico -c -s -o linepads\:wired linepads\:placed echo mnet linechip bdnet linechip.bdnet echo mfab linechip # fabprep -cif linechip.cif linechip\:wired # This doesn't work in a script. @EOF touch -m 1115014692 time/bld touch -a 1116173992 time/bld chmod 755 time/bld echo x - time/lineclock.bdnet cat >time/lineclock.bdnet <<'@EOF' MODEL lineclock:unplaced; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Note that up, down, clear, second, and jiffy are widely used. ! Declare the formal terminals of this circuit. ! They are ordered for clockwise pad assignment. INPUT up<0>; INPUT down<0>; INPUT clear<0>; CLOCK jiffy; OUTPUT sec1<3:0>; OUTPUT sec10<2:0>; INPUT GndStub<0>; OUTPUT min1<3:0>; OUTPUT min10<2:0>; OUTPUT outStub1<0>; OUTPUT hour1<3:0>; OUTPUT hour10<1:0>; OUTPUT second<0>; OUTPUT secflash<0>; OUTPUT outStub2<0>; INPUT VddStub<0>; SUPPLY Vdd; GROUND GND; ! Instantiate the second logic INSTANCE second:unplaced NAME = secClock PROMOTE; reset<0>:clear<0>; jiffy:jiffy; second<0>:secondon<0>; secflash<0>:secflash<0>; ! Instantiate the up/down control logic INSTANCE udnet:unplaced NAME = updown PROMOTE; upin<0>:up<0>; downin<0>:down<0>; upout<0>:upset<0>; downout<0>:downset<0>; decin<0>:GndStub<0>; secin<0>:secondon<0>; decout<0>:outStub1<0>; secout<0>:second<0>; jiffy:jiffy; ! Instantiate the time display INSTANCE hours:unplaced NAME = secTime PROMOTE; up<0>:upset<0>; down<0>:downset<0>; clear<0>:clear<0>; VddStub<0>:VddStub<0>; GndStub<0>:GndStub<0>; jiffy:jiffy; second<0>:second<0>; sec1<3:0>:sec1<3:0>; sec10<2:0>:sec10<2:0>; min1<3:0>:min1<3:0>; min10<2:0>:min10<2:0>; hour1<3:0>:hour1<3:0>; hour10<1:0>:hour10<1:0>; outStub<0>:outStub2<0>; ENDMODEL; @EOF touch -m 1022161592 time/lineclock.bdnet touch -a 1117135892 time/lineclock.bdnet chmod 644 time/lineclock.bdnet echo x - time/sectest.bdnet cat >time/sectest.bdnet <<'@EOF' MODEL sectest:unplaced; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Declare the formal terminals of this circuit. INPUT up<0>; INPUT down<0>; INPUT clear<0>; CLOCK second<0>; CLOCK jiffy; OUTPUT sec1<3:0>; OUTPUT sec10<2:0>; OUTPUT hour1<3:0>; OUTPUT hour10<1:0>; OUTPUT highOut<0>; SUPPLY Vdd; GROUND GND; ! Put down an instance of the 10 count logic INSTANCE digit10count:logic NAME = sec1count PROMOTE; d<3:0>:sec1d<3:0>; q<3:0>:sec1<3:0>; enableNext<0>:enableNext1<0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = sec1clock PROMOTE; carryLast<0>:Vdd; enableNext<0>:enableNext1<0>; basicClock<0>:second<0>; carryNext<0>:carry1<0>; latchClock<0>:latchClock1<0>; jiffy:jiffy; ! Put down 4 latches to hold the state. INSTANCE digit10latch:logic NAME = sec1latch PROMOTE d<3:0>:sec1d<3:0>; q<3:0>:sec1<3:0>; latchClock:latchClock1<0>; ! Put down an instance of the 6 count logic INSTANCE digit6count:logic NAME = sec10count PROMOTE; d<2:0>:sec10d<2:0>; q<2:0>:sec10<2:0>; enableNext<0>:enableNext2<0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = sec10clock PROMOTE; carryLast<0>:carry1<0>; enableNext<0>:enableNext2<0>; basicClock<0>:second<0>; carryNext<0>:carry2<0>; latchClock<0>:latchClock2<0>; jiffy:jiffy; ! Put down 3 latches to hold the state. INSTANCE digit6latch:logic NAME = sec10latch PROMOTE d<2:0>:sec10d<2:0>; q<2:0>:sec10<2:0>; latchClock:latchClock2<0>; ! Put down an instance of the 24 count logic INSTANCE digit24count:logic NAME = hourcount PROMOTE; dlow<3:0>:dlow<3:0>; qlow<3:0>:hour1<3:0>; dhigh<1:0>:dhigh<1:0>; qhigh<1:0>:hour10<1:0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = hourclock PROMOTE; carryLast<0>:carry2<0>; enableNext<0>:GND; basicClock<0>:second<0>; carryNext<0>:highOut<0>; latchClock<0>:latchClock3<0>; jiffy:jiffy; ! Put down the latches to hold the state. INSTANCE digit24latch:logic NAME = hourlatch PROMOTE dlow<3:0>:dlow<3:0>; qlow<3:0>:hour1<3:0>; dhigh<1:0>:dhigh<1:0>; qhigh<1:0>:hour10<1:0>; latchClock:latchClock3<0>; ENDMODEL; @EOF touch -m 0812145492 time/sectest.bdnet touch -a 1116173992 time/sectest.bdnet chmod 644 time/sectest.bdnet echo x - time/digit6latch.bdnet cat >time/digit6latch.bdnet <<'@EOF' MODEL digit6latch:logic; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Declare the formal terminals of this circuit. INPUT d<2:0>; CLOCK latchClock; OUTPUT q<2:0>; SUPPLY Vdd; GROUND GND; ! Put down latches to hold the state. ARRAY %i FROM 0 TO 2 OF INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:d<%i>; CLK2:latchClock; Q:q<%i>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ENDMODEL; @EOF touch -m 0809020592 time/digit6latch.bdnet touch -a 1116173992 time/digit6latch.bdnet chmod 644 time/digit6latch.bdnet echo x - time/sectest.sim cat >time/sectest.sim <<'@EOF' ! Make output vectors mv sec1 sec1<3:0> mv sec10 sec10<2:0> mv hour1 hour1<3:0> mv hour10 hour10<1:0> ! Define a jiffy clock macro ma cj se jiffy 1 ev se jiffy 0 ev sh up<0> down<0> hour10 hour1 sec10 sec1 carry1<0> carry2<0> $end ! Define a single cycle clock macro ma c se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev sh up<0> down<0> hour10 hour1 sec10 sec1 carry1<0> carry2<0> $end ! Define a ten cycle clock macro ma cc se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev sh up<0> down<0> hour10 hour1 sec10 sec1 carry1<0> carry2<0> $end ! clear se up<0> 0 se down<0> 0 se clear<0> 1 rp 2 cj se clear<0> 0 ! count up 60 se up<0> 1 se down<0> 0 cj rp 60 c ! count down 60 se up<0> 0 se down<0> 1 cj rp 60 c ! count up 144*10 se up<0> 1 se down<0> 0 cj rp 144 cc ! count down 144*10 + 1 se up<0> 0 se down<0> 1 cj rp 144 cc c @EOF touch -m 0812153792 time/sectest.sim touch -a 1116173992 time/sectest.sim chmod 644 time/sectest.sim echo x - time/hours.sim cat >time/hours.sim <<'@EOF' ! This is a test of the hour counters, counting up and down one minute. ! Make output vectors mv sec1 sec1<3:0> mv sec10 sec10<2:0> mv min1 min1<3:0> mv min10 min10<2:0> mv hour1 hour1<3:0> mv hour10 hour10<1:0> ! Define a single cycle clock macro ma c se second<0> 1 se jiffy 1 ev se jiffy 0 ev se second<0> 0 se jiffy 1 ev se jiffy 0 ev sh up<0> down<0> hour10 hour1 min10 min1 sec10 sec1 $end ! initialize Vdd and Gnd connections se VddStub<0> 1 se GndStub<0> 1 ! clear se clear<0> 1 rp 2 c se clear<0> 0 ! set to idle se up<0> 0 se down<0> 0 rp 2 c ! count up 61 se up<0> 1 se down<0> 0 rp 61 c ! count down 61 se up<0> 0 se down<0> 1 rp 61 c @EOF touch -m 1022163492 time/hours.sim touch -a 1116173992 time/hours.sim chmod 644 time/hours.sim echo x - time/lineclock.sim cat >time/lineclock.sim <<'@EOF' ! This test checks basic up/down/count functionality. ! ! Make output vectors mv sec1 sec1<3:0> mv sec10 sec10<2:0> mv min1 min1<3:0> mv min10 min10<2:0> mv hour1 hour1<3:0> mv hour10 hour10<1:0> ! Define a single cycle clock macro ma c se jiffy 1 ev se jiffy 0 ev sh second<0> secflash<0> hour10 hour1 min10 min1 sec10 sec1 $end ! Define a ten cycle clock macro ma cc se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev se jiffy 1 ev se jiffy 0 ev sh second<0> secflash<0> hour10 hour1 min10 min1 sec10 sec1 $end ! initialize Vdd and Gnd connections se VddStub<0> 1 se GndStub<0> 0 ! clear se clear<0> 1 se up<0> 0 se down<0> 0 rp 2 c se clear<0> 0 ! count up 61 se up<0> 1 se down<0> 0 rp 61 c ! count down 60 (10 at idle) se up<0> 0 se down<0> 0 rp 10 c se up<0> 0 se down<0> 1 rp 50 c ! idle for 60 (flashes will continue) se up<0> 0 se down<0> 0 rp 60 c @EOF touch -m 0827155592 time/lineclock.sim touch -a 1116173992 time/lineclock.sim chmod 644 time/lineclock.sim echo x - time/linechip.bdnet cat >time/linechip.bdnet <<'@EOF' MODEL linechip:wired; TECHNOLOGY scmos; EDITSTYLE SYMBOLIC; VIEWTYPE SYMBOLIC; INSTANCE linepads:wired [0,0] NAME=iopads PROMOTE; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4_cv":physical [4200,40500] NAME=pin15; "pad":UNCONNECTED; "Vdd_ring_LEFT":UNCONNECTED; "Vdd_ring_RIGHT":UNCONNECTED; "GND_ring_LEFT":UNCONNECTED; "GND_ring_RIGHT":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4_cg":physical [4200,4500] NAME=pin25; "pad":UNCONNECTED; "Vdd_ring":UNCONNECTED; "GND_ring_LEFT":UNCONNECTED; "GND_ring_RIGHT":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4_cg":physical [40200,4500,OCT_MIRROR_X] NAME=pin35; "pad":UNCONNECTED; "Vdd_ring":UNCONNECTED; "GND_ring_LEFT":UNCONNECTED; "GND_ring_RIGHT":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4_cv":physical [40200,40500,OCT_MIRROR_X] NAME=pin5; "pad":UNCONNECTED; "Vdd_ring_LEFT":UNCONNECTED; "Vdd_ring_RIGHT":UNCONNECTED; "GND_ring_LEFT":UNCONNECTED; "GND_ring_RIGHT":UNCONNECTED; ENDMODEL; @EOF touch -m 1022161892 time/linechip.bdnet touch -a 1116173992 time/linechip.bdnet chmod 644 time/linechip.bdnet echo x - time/linepads.bdnet cat >time/linepads.bdnet <<'@EOF' MODEL linepads:placed; TECHNOLOGY scmos; EDITSTYLE SYMBOLIC; VIEWTYPE SYMBOLIC; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4iom":physical [40200,28500,OCT_ROT270] NAME=pin1; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [40200,32500,OCT_ROT270] NAME=pin2; "pad":UNCONNECTED; "OUT":min10<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [40200,36500,OCT_ROT270] NAME=pin3; "pad":UNCONNECTED; "OUT":min10<1>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [40200,40500,OCT_ROT270] NAME=pin4; "pad":UNCONNECTED; "OUT":min10<2>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [36200,40800] NAME=pin6; "pad":UNCONNECTED; "OUT":min1<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [32200,40800] NAME=pin7; "pad":UNCONNECTED; "OUT":min1<1>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [28200,40800] NAME=pin8; "pad":UNCONNECTED; "OUT":min1<2>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [24200,40800] NAME=pin9; "pad":UNCONNECTED; "OUT":min1<3>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4gnd":physical [20200,40800] NAME=pin10; "pad":UNCONNECTED; "GND":GND; "Vdd_ring_LEFT":UNCONNECTED; "Vdd_ring_RIGHT":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4io":physical [16200,40800] NAME=pin11; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [12200,40800] NAME=pin12; "pad":UNCONNECTED; "OUT":sec10<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [8200,40800] NAME=pin13; "pad":UNCONNECTED; "OUT":sec10<1>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [4200,40800] NAME=pin14; "pad":UNCONNECTED; "OUT":sec10<2>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [4200,36500,OCT_ROT90] NAME=pin16; "pad":UNCONNECTED; "OUT":sec1<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [4200,32500,OCT_ROT90] NAME=pin17; "pad":UNCONNECTED; "OUT":sec1<1>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [4200,28500,OCT_ROT90] NAME=pin18 "pad":UNCONNECTED; "OUT":sec1<2>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [4200,24500,OCT_ROT90] NAME=pin19; "pad":UNCONNECTED; "OUT":sec1<3>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4io":physical [4200,20500,OCT_ROT90] NAME=pin20; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4in":physical [4200,16500,OCT_ROT90] NAME=pin21; "pad":UNCONNECTED; "IN":jiffy; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4inm":physical [4200,12500,OCT_ROT90] NAME=pin22; "pad":UNCONNECTED; "IN":clear<0>; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4in":physical [4200,8500,OCT_ROT90] NAME=pin23; "pad":UNCONNECTED; "IN":down<0>; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4inm":physical [4200,4500,OCT_ROT90] NAME=pin24; "pad":UNCONNECTED; "IN":up<0>; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4io":physical [8200,4200,OCT_ROT180] NAME=pin26; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4io":physical [12200,4200,OCT_ROT180] NAME=pin27; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4io":physical [16200,4200,OCT_ROT180] NAME=pin28; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4iom":physical [20200,4200,OCT_ROT180] NAME=pin29; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4vdd":physical [24200,4200,OCT_ROT180] NAME=pin30; "pad":UNCONNECTED; "Vdd":Vdd; "GND_ring_LEFT":UNCONNECTED; "GND_ring_RIGHT":UNCONNECTED; "Vdd_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [28200,4200,OCT_ROT180] NAME=pin31; "pad":UNCONNECTED; "OUT":secflash<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [32200,4200,OCT_ROT180] NAME=pin32; "pad":UNCONNECTED; "OUT":second<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [36200,4200,OCT_ROT180] NAME=pin33; "pad":UNCONNECTED; "OUT":hour10<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [40200,4200,OCT_ROT180] NAME=pin34; "pad":UNCONNECTED; "OUT":hour10<1>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [40200,8500,OCT_ROT270] NAME=pin36; "pad":UNCONNECTED; "OUT":hour1<0>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [40200,12500,OCT_ROT270] NAME=pin37; "pad":UNCONNECTED; "OUT":hour1<1>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4out":physical [40200,16500,OCT_ROT270] NAME=pin38; "pad":UNCONNECTED; "OUT":hour1<2>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4outm":physical [40200,20500,OCT_ROT270] NAME=pin39; "pad":UNCONNECTED; "OUT":hour1<3>; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE "$OCTTOOLS/tech/scmos/pads/mosis/V4io":physical [40200,24500,OCT_ROT270] NAME=pin40; "pad":UNCONNECTED; "IN":UNCONNECTED; "INB":UNCONNECTED; "IN_unB":UNCONNECTED; "OUT":GND; "ENABLE":GND; "Vdd_ring":UNCONNECTED; "GND_ring":UNCONNECTED; INSTANCE lineclock:placed [10000,9000] NAME=lineclock up<0>:up<0>; down<0>:down<0>; clear<0>:clear<0>; jiffy:jiffy; sec1<3:0>:sec1<3:0>; sec10<2:0>:sec10<2:0>; GndStub<0>:GND; min1<3:0>:min1<3:0>; min10<2:0>:min10<2:0>; outStub1<0>:UNCONNECTED; hour1<3:0>:hour1<3:0>; hour10<1:0>:hour10<1:0>; second<0>:second<0>; secflash<0>:secflash<0>; outStub2<0>:UNCONNECTED; VddStub<0>:Vdd; Vdd:Vdd; GND:GND; ENDMODEL; (FACET linepads:placed (IPROP PAD_MINIMUM_SEPARATION 0) (INSTANCE "pin1" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin2" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin3" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin4" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin6" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin7" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin8" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin9" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin10" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin11" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin12" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin13" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin14" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin16" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin17" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin18" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin19" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin20" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin21" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin22" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin23" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin24" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin26" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin27" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin28" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin29" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin30" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin31" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin32" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin33" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin34" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin36" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin37" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin38" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin39" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) (INSTANCE "pin40" (SPROP PLACEMENT_CLASS "PAD") (SPROP MOBILITY "FIXED")) ) @EOF touch -m 1022161792 time/linepads.bdnet touch -a 1117142292 time/linepads.bdnet chmod 644 time/linepads.bdnet echo x - time/mfab cat >time/mfab <<'@EOF' fabprep -cif $1.cif $1:wired @EOF touch -m 1112152392 time/mfab touch -a 1116173992 time/mfab chmod 755 time/mfab echo x - time/msims cat >time/msims <<'@EOF' musa -i $2.sim $1:unplaced @EOF touch -m 0811221692 time/msims touch -a 1116173992 time/msims chmod 755 time/msims echo x - time/digit10count.bds cat >time/digit10count.bds <<'@EOF' model digit10count d<3:0>, enableNext<0> = q<3:0>, clear<0>, up<0>, down<0>; routine digit10count; if clear EQL 1 then d = 0 else begin if (up EQL 1) then begin if (q EQL 9) then begin d = 0; enableNext = 1; end else begin d = q + 1; enableNext = 0; end; end else if (down EQL 1) then begin if (q EQL 0) then begin d = 9; enableNext = 1; end else begin d = q - 1; enableNext = 0; end; end else begin d = q; enableNext = 0; end; end; endroutine; endmodel; @EOF touch -m 0808232492 time/digit10count.bds touch -a 1116173992 time/digit10count.bds chmod 644 time/digit10count.bds echo x - time/digit6count.bds cat >time/digit6count.bds <<'@EOF' model digit6count d<2:0>, enableNext<0> = q<2:0>, clear<0>, up<0>, down<0>; routine digit6count; if clear EQL 1 then d = 0 else begin if (up EQL 1) then begin if (q EQL 5) then begin d = 0; enableNext = 1; end else begin d = q + 1; enableNext = 0; end; end else if (down EQL 1) then begin if (q EQL 0) then begin d = 5; enableNext = 1; end else begin d = q - 1; enableNext = 0; end; end else begin d = q; enableNext = 0; end; end; endroutine; endmodel; @EOF touch -m 0808232392 time/digit6count.bds touch -a 1116173992 time/digit6count.bds chmod 644 time/digit6count.bds echo x - time/digit10latch.bdnet cat >time/digit10latch.bdnet <<'@EOF' MODEL digit10latch:logic; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Declare the formal terminals of this circuit. INPUT d<3:0>; CLOCK latchClock; OUTPUT q<3:0>; SUPPLY Vdd; GROUND GND; ! Put down latches to hold the state. ARRAY %i FROM 0 TO 3 OF INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:d<%i>; CLK2:latchClock; Q:q<%i>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ENDMODEL; @EOF touch -m 0809020592 time/digit10latch.bdnet touch -a 1116173992 time/digit10latch.bdnet chmod 644 time/digit10latch.bdnet echo x - time/flash.bds cat >time/flash.bds <<'@EOF' model flash flashOut<0> = flashIn<0>, invert<0>, reset<0>; routine flash; begin if (reset EQL 1) then flashOut = 1 else if (invert EQL 1) then flashOut = NOT flashIn else flashOut = flashIn; end; endroutine; endmodel; @EOF touch -m 0810014192 time/flash.bds touch -a 1116173992 time/flash.bds chmod 644 time/flash.bds echo x - time/digit24count.bds cat >time/digit24count.bds <<'@EOF' model digit24count dhigh<1:0>, dlow<3:0> = qhigh<1:0>, qlow<3:0>, clear<0>, up<0>, down<0>; routine digit24count; if clear EQL 1 then begin dhigh = 0; dlow = 0; end else begin if (up EQL 1) then begin if ((qhigh EQL 2) AND (qlow EQL 3)) then begin dhigh = 0; dlow = 0; end else if (qlow EQL 9) then begin dhigh = qhigh + 1; dlow = 0; end else begin dhigh = qhigh; dlow = qlow + 1; end; end else if (down EQL 1) then begin if ((qhigh EQL 0) AND (qlow EQL 0)) then begin dhigh = 2; dlow = 3; end else if (qlow EQL 0) then begin dhigh = qhigh - 1; dlow = 9; end else begin dhigh = qhigh; dlow = qlow - 1; end; end else begin dhigh = qhigh; dlow = qlow; end; end; endroutine; endmodel; @EOF touch -m 0809012692 time/digit24count.bds touch -a 1116173992 time/digit24count.bds chmod 644 time/digit24count.bds echo x - time/hours.bdnet cat >time/hours.bdnet <<'@EOF' MODEL hours:unplaced; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Declare the formal terminals of this circuit. INPUT up<0>; INPUT down<0>; INPUT clear<0>; INPUT VddStub<0>; INPUT GndStub<0>; CLOCK second<0>; CLOCK jiffy; OUTPUT sec1<3:0>; OUTPUT sec10<2:0>; OUTPUT min1<3:0>; OUTPUT min10<2:0>; OUTPUT hour1<3:0>; OUTPUT hour10<1:0>; OUTPUT outStub<0>; SUPPLY Vdd; GROUND GND; ! One's digit, second ! Put down an instance of the 10 count logic INSTANCE digit10count:logic NAME = count1 PROMOTE; d<3:0>:d1<3:0>; q<3:0>:sec1<3:0>; enableNext<0>:enableNext1<0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = clock1 PROMOTE; carryLast<0>:VddStub<0>; enableNext<0>:enableNext1<0>; basicClock<0>:second<0>; carryNext<0>:carry1<0>; latchClock<0>:latchClock1<0>; jiffy:jiffy; ! Put down 4 latches to hold the count. INSTANCE digit10latch:logic NAME = latch1 PROMOTE d<3:0>:d1<3:0>; q<3:0>:sec1<3:0>; latchClock:latchClock1<0>; ! Ten's digit, second ! Put down an instance of the 6 count logic INSTANCE digit6count:logic NAME = count2 PROMOTE; d<2:0>:d2<2:0>; q<2:0>:sec10<2:0>; enableNext<0>:enableNext2<0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = clock2 PROMOTE; carryLast<0>:carry1<0>; enableNext<0>:enableNext2<0>; basicClock<0>:second<0>; carryNext<0>:carry2<0>; latchClock<0>:latchClock2<0>; jiffy:jiffy; ! Put down 3 latches to hold the count. INSTANCE digit6latch:logic NAME = latch2 PROMOTE d<2:0>:d2<2:0>; q<2:0>:sec10<2:0>; latchClock:latchClock2<0>; ! One's digit, minute ! Put down an instance of the 10 count logic INSTANCE digit10count:logic NAME = count3 PROMOTE; d<3:0>:d3<3:0>; q<3:0>:min1<3:0>; enableNext<0>:enableNext3<0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = clock3 PROMOTE; carryLast<0>:carry2<0>; enableNext<0>:enableNext3<0>; basicClock<0>:second<0>; carryNext<0>:carry3<0>; latchClock<0>:latchClock3<0>; jiffy:jiffy; ! Put down 4 latches to hold the count. INSTANCE digit10latch:logic NAME = latch3 PROMOTE d<3:0>:d3<3:0>; q<3:0>:min1<3:0>; latchClock:latchClock3<0>; ! Ten's digit, minute ! Put down an instance of the 6 count logic INSTANCE digit6count:logic NAME = count4 PROMOTE; d<2:0>:d4<2:0>; q<2:0>:min10<2:0>; enableNext<0>:enableNext4<0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = clock4 PROMOTE; carryLast<0>:carry3<0>; enableNext<0>:enableNext4<0>; basicClock<0>:second<0>; carryNext<0>:carry4<0>; latchClock<0>:latchClock4<0>; jiffy:jiffy; ! Put down 3 latches to hold the count. INSTANCE digit6latch:logic NAME = latch4 PROMOTE d<2:0>:d4<2:0>; q<2:0>:min10<2:0>; latchClock:latchClock4<0>; ! Hour digits ! Put down an instance of the 24 count logic INSTANCE digit24count:logic NAME = count5 PROMOTE; dlow<3:0>:dlow<3:0>; qlow<3:0>:hour1<3:0>; dhigh<1:0>:dhigh<1:0>; qhigh<1:0>:hour10<1:0>; ! Put down an instance of the clock logic INSTANCE digitclock:logic NAME = clock5 PROMOTE; carryLast<0>:carry4<0>; enableNext<0>:GndStub<0>; basicClock<0>:second<0>; carryNext<0>:outStub<0>; latchClock<0>:latchClock5<0>; jiffy:jiffy; ! Put down the latches to hold the count. INSTANCE digit24latch:logic NAME = latch5 PROMOTE dlow<3:0>:dlow<3:0>; qlow<3:0>:hour1<3:0>; dhigh<1:0>:dhigh<1:0>; qhigh<1:0>:hour10<1:0>; latchClock:latchClock5<0>; ENDMODEL; @EOF touch -m 0827160492 time/hours.bdnet touch -a 1116173992 time/hours.bdnet chmod 644 time/hours.bdnet echo x - time/digit24latch.bdnet cat >time/digit24latch.bdnet <<'@EOF' MODEL digit24latch:logic; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Declare the formal terminals of this circuit. INPUT dlow<3:0>; INPUT dhigh<1:0>; CLOCK latchClock; OUTPUT qlow<3:0>; OUTPUT qhigh<1:0>; SUPPLY Vdd; GROUND GND; ! Put down latches to hold the state of the ones. ARRAY %i FROM 0 TO 3 OF INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:dlow<%i>; CLK2:latchClock; Q:qlow<%i>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ! Put down latches to hold the state of the ones. ARRAY %i FROM 0 TO 1 OF INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:dhigh<%i>; CLK2:latchClock; Q:qhigh<%i>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ENDMODEL; @EOF touch -m 0809014892 time/digit24latch.bdnet touch -a 1116173992 time/digit24latch.bdnet chmod 644 time/digit24latch.bdnet echo x - time/bldcln cat >time/bldcln <<'@EOF' rm -rf digit10count rm -rf digit10latch rm -rf digit24count rm -rf digit24latch rm -rf digit6count rm -rf digit6latch rm -rf digitclock rm -rf flash rm -rf hours rm -rf linechip rm -rf lineclock rm -rf linepads rm -rf second rm -rf second60 rm -rf udlogic rm -rf udnet rm -f .mosaicolock rm -f *.blif rm -f *.cif rm -f *.log @EOF touch -m 1115014492 time/bldcln touch -a 1116173992 time/bldcln chmod 755 time/bldcln echo x - time/mstats cat >time/mstats <<'@EOF' chipstats -l 20 $1:placed > $1.stats @EOF touch -m 0811220292 time/mstats touch -a 1116173992 time/mstats chmod 755 time/mstats echo x - time/udlogic.bds cat >time/udlogic.bds <<'@EOF' ! up/down control logic model udlogic decout<0>, secout<0>, upout<0>, downout<0> = decin<0>, secin<0>, upin<0>, downin<0>, uplast<0>, downlast<0>; routine udlogic; ! If the up/down input has changed, ! inhibit the clocks, but preserve the old up/down values. ! This lets carry values propagate properly. if (upin NEQ uplast) OR (downin NEQ downlast) then begin decout = 0; secout = 0; upout = uplast; downout = downlast; end ! ! If both or neither up and down are set, inhibit counting. else if ((upin XOR downin) EQL 0) then begin decout = 0; secout = 0; upout = 0; downout = 0; end ! ! Enable everything. else begin decout = decin; secout = secin; upout = upin; downout = downin; end; endroutine; endmodel; @EOF touch -m 0813023592 time/udlogic.bds touch -a 1116173992 time/udlogic.bds chmod 644 time/udlogic.bds echo x - time/udnet.bdnet cat >time/udnet.bdnet <<'@EOF' MODEL udnet:unplaced; ! All these properties are required. TECHNOLOGY scmos; VIEWTYPE SYMBOLIC; EDITSTYLE SYMBOLIC; ! Declare the formal terminals of this circuit. INPUT upin<0>; INPUT downin<0>; INPUT decin<0>; INPUT secin<0>; OUTPUT upout<0>; OUTPUT downout<0>; OUTPUT decout<0>; OUTPUT secout<0>; CLOCK jiffy; SUPPLY Vdd; GROUND GND; ! Put down an instance of the count logic INSTANCE udlogic:logic NAME = udgates PROMOTE; upin<0>:upin<0>; downin<0>:downin<0>; upout<0>:upout<0>; downout<0>:downout<0>; uplast<0>:uplast<0>; downlast<0>:downlast<0>; decin<0>:decin<0>; secin<0>:secin<0>; decout<0>:decout<0>; secout<0>:secout<0>; ! Put down latches to hold the last up/down values. INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:upin<0>; CLK2:jiffy; Q:uplast<0>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; INSTANCE "$OCTTOOLS/tech/scmos/msu/stdcell2_2/dfnf311":physical DATA1:downin<0>; CLK2:jiffy; Q:downlast<0>; Q_b:UNCONNECTED; "Vdd!":Vdd; "GND!":GND; ENDMODEL; @EOF touch -m 0813021392 time/udnet.bdnet touch -a 1116173992 time/udnet.bdnet chmod 644 time/udnet.bdnet echo x - time/mmagic cat >time/mmagic <<'@EOF' mkdir magic/$1 oct2mag -l magic/$1 $1:wired @EOF touch -m 0828013592 time/mmagic touch -a 1116173992 time/mmagic chmod 755 time/mmagic echo x - time/mblogic cat >time/mblogic <<'@EOF' bdsyn -A -o $1.blif $1.bds misII -f script.msu -T oct -o $1:logic $1.blif @EOF touch -m 1013014292 time/mblogic touch -a 1116173992 time/mblogic chmod 755 time/mblogic echo x - time/mwired cat >time/mwired <<'@EOF' #/bin/csh mosaico -c -s -o $1\:wired $1\:placed >& $1.log @EOF touch -m 0827172292 time/mwired touch -a 1116173992 time/mwired chmod 755 time/mwired echo x - time/mplacer cat >time/mplacer <<'@EOF' #/bin/csh echo "Number of rows:" $2 >& $1.log octflatten -t LEAF -o $1\:flat $1\:unplaced >>& $1.log padplace -cv $1\:flat >>& $1.log wolfe -r $2 -o $1\:placed $1\:flat >>& $1.log @EOF touch -m 0819152492 time/mplacer touch -a 1116173992 time/mplacer chmod 755 time/mplacer echo x - time/mps cat >time/mps <<'@EOF' oct2ps -o $1.ps $1:wired @EOF touch -m 0901011392 time/mps touch -a 1116173992 time/mps chmod 755 time/mps touch -m 1117143092 time touch -a 1117143092 time chmod 755 time exit 0