From 6ceaa6e1c7e378282a6235bb206fb8daa9a8327f Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Sun, 16 Jan 2011 23:15:17 +0100 Subject: Update documentation Signed-off-by: Michael Buesch --- README-DEVELOPERS.lyx | 91 ++-- README-DEVELOPERS.ps | 1145 +++++++++++++++++++++++++------------------------ 2 files changed, 652 insertions(+), 584 deletions(-) diff --git a/README-DEVELOPERS.lyx b/README-DEVELOPERS.lyx index c263f77..4fe9fcb 100644 --- a/README-DEVELOPERS.lyx +++ b/README-DEVELOPERS.lyx @@ -294,8 +294,7 @@ cmdFPGARead(address) \end_layout \begin_layout Standard -Reads a byte from the FPGA and puts it into the microcontroller's buffer - register. +Reads a byte from the FPGA and puts it into the buffer register. \begin_inset Quotes eld \end_inset @@ -308,8 +307,11 @@ address The microcontroller's buffer register has an automagically incrementing pointer. So issueing several cmdFPGARead() in a row will result in all the bytes - being put one after each other into the buffer register. - The buffer register can hold up to 64 bytes. + being put one after another into the buffer register. + The buffer register does have a limited size. + Overflowing it crashes the programmer, requireing a physical USB disconnect + to recover. + Call getBufferRegSize() to get the size of the buffer register. Reading the buffer register (cmdReadBufferReg()) will reset the automagic pointer to zero. Note that address 0x10 is fast-tracked and uses one byte less on the USB @@ -532,6 +534,16 @@ writeLockbits() Write the Lockbit memory. Reimplement this, if your DUT has Lockbits and supports writing them. \end_layout +\begin_layout Description +readRAM() Read the Random Access Memory. + Reimplement this, if your DUT has RAM and supports reading it. +\end_layout + +\begin_layout Description +writeRAM() Write the Random Access Memory. + Reimplement this, if your DUT has RAM and supports writing to it. +\end_layout + \begin_layout Standard After defining your \begin_inset Quotes eld @@ -595,23 +607,24 @@ er/bit/src/ subdirectory and execute the "create.sh" script: \end_layout \begin_layout LyX-Code -./create.sh name_of_chip +./create.sh bitfile_name \end_layout \begin_layout Standard -Where "name_of_chip" is the name of the new chip. - Now go to libtoprammer/bit/src/name_of_chip/ and implement the bottom-half - algorithm in the name_of_chip.v Verilog file. +Where "bitfile_name" is the name of the new chip's bitfile. + (That often matches the chip-ID). + Now go to libtoprammer/bit/src/bitfile_name/ and implement the bottom-half + algorithm in the bitfile_name.v Verilog file. To build the .BIT file from the Verilog sources, go to the libtoprammer/bit/ directory and execute: \end_layout \begin_layout LyX-Code -./build.sh name_of_chip +./build.sh bitfile_name \end_layout \begin_layout Standard -(if you omit the chipname, all chips will be rebuilt). +(if you omit the bitfile_name, all bitfiles will be rebuilt). \end_layout \begin_layout Section @@ -625,8 +638,8 @@ The automatic layout generator (layout_generator.py) can be used to automaticall The advantage of using the autogenerator instead of hardcoding the VCC/VPP/GND connections in the chip implementation is that the autogenerated layout is portable between TOPxxxx programmers and it is much easier to implement. - You do not have to search a chip position in the ZIF socket that fits the - device constraints. + You do not have to search for a chip position in the ZIF socket that fits + the device constraints. The autogenerator will do it for you. \end_layout @@ -709,9 +722,9 @@ chipPinVCCX This parameter is an integer specifying the VCC pin on the chip \begin_layout Description chipPinsVPP This parameter is an integer or a list of integers specifying the VPP pin(s) on the chip package. - Note that it specifies the VCC pin on the chip package and _not_ on the + Note that it specifies the VPP pin on the chip package and _not_ on the ZIF socket. - So if your chip datasheet tells you that VCC is on pin 1, you pass an 1 + So if your chip datasheet tells you that VPP is on pin 1, you pass a 1 here. If your chip needs multiple VPP voltages, just pass a list of pins. Specify all possible VPP pins here. @@ -721,9 +734,9 @@ chipPinsVPP This parameter is an integer or a list of integers specifying \begin_layout Description chipPinGND This parameter is an integer specifying the GND pin on the chip package. - Note that it specifies the VCC pin on the chip package and _not_ on the + Note that it specifies the GND pin on the chip package and _not_ on the ZIF socket. - So if your chip datasheet tells you that VCC is on pin 5, you pass an 5 + So if your chip datasheet tells you that GND is on pin 5, you pass a 5 here. \end_layout @@ -737,20 +750,43 @@ class Chip \end_inset constructor, the autogenerator is initialized and ready to be used. - The following methods can be used to apply or disable a layout: + The following +\begin_inset Quotes eld +\end_inset + +class Chip +\begin_inset Quotes erd +\end_inset + + methods can be used to enable or disable a layout: \end_layout \begin_layout Description -applyVCCX(on) This method enables or disables (depending on the parameter) - a layout. - Enabling the layout means that the VCCX pin will be actively driven by - the configured VCCX voltage. +applyVCCX(on) This method enables or disables (depending on the +\begin_inset Quotes eld +\end_inset + +on +\begin_inset Quotes erd +\end_inset + + parameter) the VCC layout. + Enabling the layout means that the VCC pin will be actively driven by the + configured VCC voltage. Disabling the layout will tristate the driver. \end_layout \begin_layout Description applyVPP(on,packagePinsToTurnOn) This method enables or disables (depending - on the parameter) a layout. + on the +\begin_inset Quotes eld +\end_inset + +on +\begin_inset Quotes erd +\end_inset + + parameter) the VPP layout. Enabling the layout means that the VPP pins will be actively driven by the configured VPP voltage. Disabling the layout will tristate the driver. @@ -779,8 +815,15 @@ on=False \end_layout \begin_layout Description -applyGND(on) This method enables or disables (depending on the parameter) - a layout. +applyGND(on) This method enables or disables (depending on the +\begin_inset Quotes eld +\end_inset + +on +\begin_inset Quotes erd +\end_inset + + parameter) the GND layout. Enabling the layout means that the GND pins will be actively driven by GND. Disabling the layout will tristate the driver. diff --git a/README-DEVELOPERS.ps b/README-DEVELOPERS.ps index 98e6079..b171e75 100644 --- a/README-DEVELOPERS.ps +++ b/README-DEVELOPERS.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 5.98 Copyright 2009 Radical Eye Software %%Title: README-DEVELOPERS.dvi -%%CreationDate: Sun Jan 16 01:36:08 2011 +%%CreationDate: Sun Jan 16 23:14:46 2011 %%Pages: 7 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 @@ -11,7 +11,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -o README-DEVELOPERS.ps README-DEVELOPERS.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2011.01.16:0136 +%DVIPSSource: TeX output 2011.01.16:2314 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -1825,8 +1825,8 @@ F000000FE000001FC000003F8000003F8000007F000600FE000600FE000601FC000603F8 000607F8000E07F0000E0FE0000C1FC0001C1FC0001C3F80003C7F00007CFF0003FCFFFF FFFCFFFFFFFC1F247EA325>I E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe ecbx1000 10 41 -/Fe 41 122 df<00001C00003C0000F80001F00003E00007E0000FC0001F80001F00003F +%DVIPSBitmapFont: Fe ecbx1000 10 42 +/Fe 42 122 df<00001C00003C0000F80001F00003E00007E0000FC0001F80001F00003F 00007E0000FE0000FC0001FC0001F80003F80003F80007F00007F0000FF0000FE0001FE0 001FE0001FC0003FC0003FC0003FC0003FC0007F80007F80007F80007F80007F8000FF80 00FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF80 @@ -1842,385 +1842,399 @@ FFFCFFFFFFFC1F247EA325>I E 007E0000FE0000FC0001FC0001F80003F00003E00007E0000FC0001F80001F00003E0000 7C0000F00000E0000016537BBD25>I<0F803FE07FF07FF0FFF8FFF8FFFCFFFCFFFC7FFC 7FFC3FFC0F9C001C003C0038003800380078007000F001E001E003C007800F001F001C00 -18000E1D798C1B>44 D<0000003FFC0001C0000003FFFFC003C000001FFFFFF007C00000 -FFFFFFFC0FC00003FFFC00FF3FC00007FFC0001FFFC0001FFE00000FFFC0003FFC000003 -FFC0007FF0000001FFC000FFE0000000FFC001FFC0000000FFC003FFC00000007FC007FF -800000003FC00FFF000000003FC00FFF000000001FC01FFE000000001FC01FFE00000000 -0FC03FFE000000000FC03FFC000000000FC03FFC0000000007C07FFC0000000007C07FFC -0000000007C07FF8000000000000FFF8000000000000FFF8000000000000FFF800000000 -0000FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF8 -000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800000000 -0000FFF80000000000007FF80000000000007FFC0000000000007FFC0000000003C03FFC -0000000003C03FFC0000000003C03FFE0000000003C01FFE0000000007C01FFE00000000 -07C00FFF0000000007800FFF000000000F8007FF800000000F0003FFC00000001F0001FF -C00000003E0000FFE00000007E00007FF8000000FC00003FFC000001F800001FFF000003 -F0000007FFC0000FE0000003FFFC00FF80000000FFFFFFFE000000001FFFFFF800000000 -03FFFFE000000000003FFE0000003A3B7BB945>67 DII -I<0000003FFC0001C000000003FFFFC003C00000001FFFFFF007C0000000FFFFFFFC0FC0 -000003FFFC00FF3FC0000007FFC0001FFFC000001FFE00000FFFC000003FFC000003FFC0 -00007FF0000001FFC00000FFE0000000FFC00001FFC0000000FFC00003FFC00000007FC0 -0007FF800000003FC0000FFF000000003FC0000FFF000000001FC0001FFE000000001FC0 -001FFE000000000FC0003FFE000000000FC0003FFC000000000FC0003FFC0000000007C0 -007FFC0000000007C0007FFC0000000007C0007FF800000000000000FFF8000000000000 +18000E1D798C1B>44 D<00000003E00000000000000007F00000000000000007F0000000 +000000000FF8000000000000000FF8000000000000000FF8000000000000001FFC000000 +000000001FFC000000000000003FFE000000000000003FFE000000000000003FFE000000 +000000007FFF000000000000007FFF00000000000000FFFF80000000000000FFFF800000 +00000000FFFF80000000000001FFFFC0000000000001F3FFC0000000000003F3FFE00000 +00000003E1FFE0000000000003E1FFE0000000000007E1FFF0000000000007C0FFF00000 +0000000FC0FFF800000000000F807FF800000000000F807FF800000000001F807FFC0000 +0000001F003FFC00000000003F003FFE00000000003E001FFE00000000003E001FFE0000 +0000007E001FFF00000000007C000FFF0000000000FC000FFF8000000000F80007FF8000 +000000F80007FF8000000001F80007FFC000000001F00003FFC000000003FFFFFFFFE000 +000003FFFFFFFFE000000003FFFFFFFFE000000007FFFFFFFFF000000007C00000FFF000 +00000FC00000FFF80000000F8000007FF80000000F8000007FF80000001F8000007FFC00 +00001F0000003FFC0000003F0000003FFE0000003E0000001FFE0000003E0000001FFE00 +00007E0000001FFF0000007C0000000FFF000000FE0000000FFF8000FFFFF80007FFFFFF +80FFFFF80007FFFFFF80FFFFF80007FFFFFF80FFFFF80007FFFFFF80413A7DB948>65 +D<0000003FFC0001C0000003FFFFC003C000001FFFFFF007C00000FFFFFFFC0FC00003FF +FC00FF3FC00007FFC0001FFFC0001FFE00000FFFC0003FFC000003FFC0007FF0000001FF +C000FFE0000000FFC001FFC0000000FFC003FFC00000007FC007FF800000003FC00FFF00 +0000003FC00FFF000000001FC01FFE000000001FC01FFE000000000FC03FFE000000000F +C03FFC000000000FC03FFC0000000007C07FFC0000000007C07FFC0000000007C07FF800 +0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 +00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800 +0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 +007FF80000000000007FFC0000000000007FFC0000000003C03FFC0000000003C03FFC00 +00000003C03FFE0000000003C01FFE0000000007C01FFE0000000007C00FFF0000000007 +800FFF000000000F8007FF800000000F0003FFC00000001F0001FFC00000003E0000FFE0 +0000007E00007FF8000000FC00003FFC000001F800001FFF000003F0000007FFC0000FE0 +000003FFFC00FF80000000FFFFFFFE000000001FFFFFF80000000003FFFFE00000000000 +3FFE0000003A3B7BB945>67 DIII<0000003FFC0001C0 +00000003FFFFC003C00000001FFFFFF007C0000000FFFFFFFC0FC0000003FFFC00FF3FC0 +000007FFC0001FFFC000001FFE00000FFFC000003FFC000003FFC000007FF0000001FFC0 +0000FFE0000000FFC00001FFC0000000FFC00003FFC00000007FC00007FF800000003FC0 +000FFF000000003FC0000FFF000000001FC0001FFE000000001FC0001FFE000000000FC0 +003FFE000000000FC0003FFC000000000FC0003FFC0000000007C0007FFC0000000007C0 +007FFC0000000007C0007FF800000000000000FFF800000000000000FFF8000000000000 00FFF800000000000000FFF800000000000000FFF800000000000000FFF8000000000000 00FFF800000000000000FFF800000000000000FFF800000000000000FFF8000000000000 -00FFF800000000000000FFF800000000000000FFF800003FFFFFFF80FFF800003FFFFFFF -807FF800003FFFFFFF807FFC00003FFFFFFF807FFC00000003FFC0003FFC00000003FFC0 -003FFC00000003FFC0003FFE00000003FFC0001FFE00000003FFC0001FFE00000003FFC0 -000FFF00000003FFC0000FFF00000003FFC00007FF80000003FFC00003FFC0000003FFC0 -0001FFE0000003FFC00000FFE0000003FFC000007FF8000007FFC000003FFC000007FFC0 -00001FFF00000FFFC0000007FFC0001FFFC0000003FFFC00FF3FC0000000FFFFFFFE0FC0 -0000001FFFFFF803C000000003FFFFE000C0000000003FFE00000000413B7BB94B>I73 DI73 D76 -DII<000000FFF800000000000FFFFF80000000007FFFFFF000000001FFC01FFC000000 -07FF0007FF0000001FFC0001FFC000003FF000007FE000007FE000003FF00000FFC00000 -1FF80001FF8000000FFC0003FF8000000FFE0007FF00000007FF0007FF00000007FF000F -FE00000003FF800FFE00000003FF801FFC00000001FFC01FFC00000001FFC03FFC000000 -01FFE03FFC00000001FFE03FFC00000001FFE07FF800000000FFF07FF800000000FFF07F -F800000000FFF07FF800000000FFF0FFF800000000FFF8FFF800000000FFF8FFF8000000 -00FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FF +F800000000007FF800000000007FF800000000007FF800000000007FF800000000007FF8 +00000000007FF800000000007FF800000000007FF800000000007FF800000000007FF800 +000780007FF800000780007FF800000780007FF800000780007FF800000780007FF80000 +0F80007FF800000F00007FF800000F00007FF800000F00007FF800001F00007FF800001F +00007FF800003F00007FF800003F00007FF800007F00007FF80000FF00007FF80001FF00 +007FF80003FF00007FF8000FFE00007FF8007FFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FF +FFFFFFFFFE00FFFFFFFFFFFE0031397DB839>76 DII<000000FFF800000000000FFFFF +80000000007FFFFFF000000001FFC01FFC00000007FF0007FF0000001FFC0001FFC00000 +3FF000007FE000007FE000003FF00000FFC000001FF80001FF8000000FFC0003FF800000 +0FFE0007FF00000007FF0007FF00000007FF000FFE00000003FF800FFE00000003FF801F +FC00000001FFC01FFC00000001FFC03FFC00000001FFE03FFC00000001FFE03FFC000000 +01FFE07FF800000000FFF07FF800000000FFF07FF800000000FFF07FF800000000FFF0FF F800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF800000000FFF8FFF8000000 -00FFF87FF800000000FFF07FFC00000001FFF07FFC00000001FFF07FFC00000001FFF03F -FC00000001FFE03FFC00000001FFE03FFE00000003FFE01FFE00000003FFC01FFE000000 -03FFC00FFF00000007FF8007FF00000007FF0007FF8000000FFF0003FFC000001FFE0001 -FFC000001FFC0000FFE000003FF800007FF000007FF000003FFC0001FFE000001FFF0007 -FFC0000007FFC01FFF00000001FFFFFFFC000000007FFFFFF0000000000FFFFF80000000 -0000FFF80000003D3B7BB948>III82 D<0007FF000E00003FFFE01E0000FFFFF83E0003FFFFFE -7E0007FC01FFFE000FF0001FFE001FE0000FFE003FC00003FE003F800001FE007F800000 -FE007F000000FE007F0000007E00FF0000007E00FF0000003E00FF0000003E00FF800000 -3E00FF8000001E00FFC000001E00FFE000001E00FFF000000000FFFC000000007FFFE000 -00007FFFFE0000007FFFFFF000003FFFFFFE00003FFFFFFF80001FFFFFFFC0000FFFFFFF -F00007FFFFFFF80003FFFFFFFC0000FFFFFFFE00003FFFFFFE00000FFFFFFF000001FFFF -FF0000000FFFFF800000007FFF800000000FFFC000000003FFC000000001FFC000000000 -FFC0F00000007FC0F00000007FC0F00000007FC0F00000003FC0F00000003FC0F8000000 -3FC0F80000003F80FC0000003F80FC0000007F80FE0000007F00FF0000007F00FF800000 -FE00FFE00001FC00FFF80003FC00FFFF801FF800FCFFFFFFE000F83FFFFFC000F007FFFE -0000E0007FF000002A3B7BB935>I<3FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFF -FFFF803FFFFFFFFFFFFF803FF800FFF003FF807FC000FFF0007FC07F8000FFF0001FC07E -0000FFF0000FC07E0000FFF0000FC07C0000FFF00007C07C0000FFF00007C0780000FFF0 -0003C0780000FFF00003C0780000FFF00003C0780000FFF00003C0F80000FFF00003E0F0 -0000FFF00001E0F00000FFF00001E0F00000FFF00001E0F00000FFF00001E0000000FFF0 -000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000 -0000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0 -000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000 -0000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0 -000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000 -0000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0 -000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000 -0FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF00003B387DB742 ->III<7FFFFFF803FFFFF8007FFFFFF803FFFFF8007FFF -FFF803FFFFF8007FFFFFF803FFFFF800007FFE00000FF00000003FFF00000FE00000001F -FF00000FC00000001FFF80001F800000000FFFC0003F0000000007FFC0003F0000000003 -FFE0007E0000000003FFF000FC0000000001FFF801FC0000000000FFF801F80000000000 -FFFC03F000000000007FFE07E000000000003FFE0FE000000000001FFF0FC00000000000 -1FFF9F8000000000000FFFFF00000000000007FFFF00000000000007FFFE000000000000 -03FFFC00000000000001FFF800000000000000FFF800000000000000FFFC000000000000 -007FFE000000000000003FFE000000000000003FFF000000000000001FFF800000000000 -003FFF800000000000007FFFC0000000000000FFFFE0000000000000FFFFE00000000000 -01F9FFF0000000000003F1FFF8000000000003F0FFFC000000000007E07FFC0000000000 -0FC07FFE00000000001FC03FFF00000000001F801FFF00000000003F000FFF8000000000 -7E000FFFC000000000FE0007FFE000000000FC0003FFE000000001F80003FFF000000003 -F00001FFF800000007F00000FFF800000007E000007FFC0000000FC000007FFE0000001F -8000003FFF0000003F8000001FFF0000007F8000001FFF8000FFFFFF0007FFFFFF80FFFF -FF0007FFFFFF80FFFFFF0007FFFFFF80FFFFFF0007FFFFFF8041397DB848>88 -D<3FFFFFFFFFFE3FFFFFFFFFFE3FFFFFFFFFFE3FFFFFFFFFFE3FFF80007FFC3FFC0000FF -F83FF00001FFF83FC00001FFF03F800003FFE03F000007FFE07F000007FFC07E00000FFF -807E00001FFF807C00001FFF007C00003FFE007C00007FFE007800007FFC00780000FFF8 -00780001FFF800780001FFF000000003FFE000000007FFE000000007FFC00000000FFFC0 -0000001FFF800000001FFF000000003FFF000000007FFE000000007FFC00000000FFFC00 -000001FFF800000001FFF000000003FFF000000007FFE000000007FFC0001E000FFFC000 -1E000FFF80001E001FFF00001E003FFF00001E003FFE00001E007FFC00003E00FFFC0000 -3E00FFF800003E01FFF000003E03FFF000007E03FFE000007C07FFC00000FC0FFFC00000 -FC0FFF800001FC1FFF000003FC3FFF00000FFC3FFE00003FFC7FFC0001FFFCFFFFFFFFFF -FCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFC2F397BB83A>90 D<003FFE00000003FFFF -E000000FFFFFF800001FF00FFE00003FF003FF00003FF801FF80003FF800FFC0003FF800 -FFC0003FF8007FE0003FF8007FE0001FF0007FE0000FE0007FE0000380007FE000000000 -7FE0000000007FE00000003FFFE000000FFFFFE000007FFFFFE00001FFF87FE00007FF80 -7FE0000FFE007FE0003FF8007FE0003FF0007FE0007FE0007FE000FFE0007FE000FFC000 -7FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC000FFE000FFE001FFE0007FE001 -FFE0003FF007FFF8001FFC1FBFFFC00FFFFE1FFFC003FFF80FFFC0003FE003FFC02A257D -A42E>97 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007 -FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003 -FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003 -FF0000000003FF0000000003FF0000000003FF0000000003FF01FF800003FF0FFFF00003 -FF3FFFFC0003FFFE03FF0003FFF000FF8003FFE0007FC003FF80003FE003FF00003FF003 -FF00001FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000FFC03FF00000FFE03 -FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03 -FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFC03FF00000FFC03FF00000FFC03 -FF00001FF803FF00001FF803FF00001FF003FF80003FF003FFC0007FE003FFE0007FC003 -FDF001FF8003F8FC07FE0003F03FFFF80003E00FFFE00003C003FF00002F3A7EB935>I< -0001FFC000000FFFFC00007FFFFF0000FF80FF8003FE00FFC007FC01FFC00FF801FFC01F -F801FFC01FF001FFC03FF001FFC03FF000FF807FE0007F007FE0001C007FE0000000FFE0 -000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 -0000FFE00000007FE00000007FE00000007FF00000003FF00000003FF00001E01FF80001 -E01FF80003E00FFC0007C007FE00078003FF001F8000FFC07E00007FFFFC00000FFFF000 -0001FF800023257DA42A>I<000000007F800000007FFF800000007FFF800000007FFF80 -0000007FFF8000000003FF8000000001FF8000000001FF8000000001FF8000000001FF80 -00000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF80 -00000001FF8000000001FF8000000001FF8000000001FF8000000001FF800001FF81FF80 -000FFFF1FF80003FFFFDFF8000FFC07FFF8003FF001FFF8007FC0007FF800FFC0003FF80 -1FF80001FF801FF00001FF803FF00001FF803FF00001FF807FE00001FF807FE00001FF80 -7FE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80 -FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF807FE00001FF80 -7FE00001FF807FF00001FF803FF00001FF803FF00001FF801FF80003FF800FF80007FF80 -07FC000FFF8003FE001FFFC001FF80FDFFFE007FFFF9FFFE001FFFE1FFFE0001FF01FFFE -2F3A7DB935>I<0003FF8000001FFFF000007FFFFC0001FF83FE0003FE007F8007FC003F -800FF8003FC01FF8001FE01FF0001FE03FF0000FF03FF0000FF07FE0000FF07FE0000FF8 -7FE00007F8FFE00007F8FFE00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FF -E0000000FFE0000000FFE00000007FE00000007FE00000007FE00000003FF00000003FF0 -0000781FF00000780FF80000F80FFC0000F007FC0003F001FF000FE000FFC07FC0007FFF -FF00000FFFFC000001FFE00025257DA42C>I<000000001F000007FE00FFC0007FFFE3FF -C001FFFFFFEFE007FE07FF8FE00FF801FF1FE01FF000FF8FE03FF000FFCFE03FE0007FC7 -C03FE0007FC0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0 -007FE0007FE0003FE0007FC0003FE0007FC0003FF000FFC0001FF000FF80000FF801FF00 -0007FE07FE00000FFFFFF800000F7FFFE000001E07FE0000001E00000000001E00000000 -003E00000000003F00000000003F80000000001FC0000000001FFFFFF800001FFFFFFF80 -001FFFFFFFE0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0007FFFFFFFE001FFFFFFFFF -003FC0000FFF007F000000FF80FF0000007F80FE0000007F80FE0000003F80FE0000003F -80FE0000003F80FF0000007F807F0000007F007F800000FF003FC00001FE001FF00007FC -0007FE003FF00001FFFFFFC000007FFFFF00000007FFF000002B377DA530>103 -D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF000000 -0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 -0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 -0003FF0000000003FF0000000003FF0000000003FF007FC00003FF03FFF80003FF0FFFFE -0003FF1F03FF0003FF3C01FF8003FF7801FF8003FFF000FF8003FFE000FFC003FFC000FF -C003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FF -C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF -C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF -C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF -C0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303A7DB935>I<01F00007 -FC000FFE000FFE001FFF001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F00000 -000000000000000000000000000000000000000000000000000000FF007FFF007FFF007F -FF007FFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 -FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 -FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>I< -00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000000007FF00000000 +00000000007FF800000000007FF800000000007FF800000000007FF800000000007FF800 +000000007FF800000000007FF800000000007FF800000000007FF800000000007FF80000 +0000007FF800000000FFFFFFFC000000FFFFFFFC000000FFFFFFFC000000FFFFFFFC0000 +0038397DB841>I82 +D<0007FF000E00003FFFE01E0000FFFFF83E0003FFFFFE7E0007FC01FFFE000FF0001FFE +001FE0000FFE003FC00003FE003F800001FE007F800000FE007F000000FE007F0000007E +00FF0000007E00FF0000003E00FF0000003E00FF8000003E00FF8000001E00FFC000001E +00FFE000001E00FFF000000000FFFC000000007FFFE00000007FFFFE0000007FFFFFF000 +003FFFFFFE00003FFFFFFF80001FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC +0000FFFFFFFE00003FFFFFFE00000FFFFFFF000001FFFFFF0000000FFFFF800000007FFF +800000000FFFC000000003FFC000000001FFC000000000FFC0F00000007FC0F00000007F +C0F00000007FC0F00000003FC0F00000003FC0F80000003FC0F80000003F80FC0000003F +80FC0000007F80FE0000007F00FF0000007F00FF800000FE00FFE00001FC00FFF80003FC +00FFFF801FF800FCFFFFFFE000F83FFFFFC000F007FFFE0000E0007FF000002A3B7BB935 +>I<3FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFFFFFF803FF8 +00FFF003FF807FC000FFF0007FC07F8000FFF0001FC07E0000FFF0000FC07E0000FFF000 +0FC07C0000FFF00007C07C0000FFF00007C0780000FFF00003C0780000FFF00003C07800 +00FFF00003C0780000FFF00003C0F80000FFF00003E0F00000FFF00001E0F00000FFF000 +01E0F00000FFF00001E0F00000FFF00001E0000000FFF0000000000000FFF00000000000 +00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000 +0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000 +00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000 +0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000 +00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000 +0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000 +00FFF0000000000000FFF0000000000000FFF0000000000FFFFFFFFF0000000FFFFFFFFF +0000000FFFFFFFFF0000000FFFFFFFFF00003B387DB742>III<7FFFFFF803FFFFF8007FFFFFF803FFFFF8007FFFFFF803FFFFF8007FFFFFF803FF +FFF800007FFE00000FF00000003FFF00000FE00000001FFF00000FC00000001FFF80001F +800000000FFFC0003F0000000007FFC0003F0000000003FFE0007E0000000003FFF000FC +0000000001FFF801FC0000000000FFF801F80000000000FFFC03F000000000007FFE07E0 +00000000003FFE0FE000000000001FFF0FC000000000001FFF9F8000000000000FFFFF00 +000000000007FFFF00000000000007FFFE00000000000003FFFC00000000000001FFF800 +000000000000FFF800000000000000FFFC000000000000007FFE000000000000003FFE00 +0000000000003FFF000000000000001FFF800000000000003FFF800000000000007FFFC0 +000000000000FFFFE0000000000000FFFFE0000000000001F9FFF0000000000003F1FFF8 +000000000003F0FFFC000000000007E07FFC00000000000FC07FFE00000000001FC03FFF +00000000001F801FFF00000000003F000FFF80000000007E000FFFC000000000FE0007FF +E000000000FC0003FFE000000001F80003FFF000000003F00001FFF800000007F00000FF +F800000007E000007FFC0000000FC000007FFE0000001F8000003FFF0000003F8000001F +FF0000007F8000001FFF8000FFFFFF0007FFFFFF80FFFFFF0007FFFFFF80FFFFFF0007FF +FFFF80FFFFFF0007FFFFFF8041397DB848>88 D<3FFFFFFFFFFE3FFFFFFFFFFE3FFFFFFF +FFFE3FFFFFFFFFFE3FFF80007FFC3FFC0000FFF83FF00001FFF83FC00001FFF03F800003 +FFE03F000007FFE07F000007FFC07E00000FFF807E00001FFF807C00001FFF007C00003F +FE007C00007FFE007800007FFC00780000FFF800780001FFF800780001FFF000000003FF +E000000007FFE000000007FFC00000000FFFC00000001FFF800000001FFF000000003FFF +000000007FFE000000007FFC00000000FFFC00000001FFF800000001FFF000000003FFF0 +00000007FFE000000007FFC0001E000FFFC0001E000FFF80001E001FFF00001E003FFF00 +001E003FFE00001E007FFC00003E00FFFC00003E00FFF800003E01FFF000003E03FFF000 +007E03FFE000007C07FFC00000FC0FFFC00000FC0FFF800001FC1FFF000003FC3FFF0000 +0FFC3FFE00003FFC7FFC0001FFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFF +FFFC2F397BB83A>90 D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00003FF0 +03FF00003FF801FF80003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0001FF0 +007FE0000FE0007FE0000380007FE0000000007FE0000000007FE00000003FFFE000000F +FFFFE000007FFFFFE00001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0003FF0 +007FE0007FE0007FE000FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC0 +007FE000FFC000FFE000FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFFC00FFF +FE1FFFC003FFF80FFFC0003FE003FFC02A257DA42E>97 D<00FF00000000FFFF00000000 +FFFF00000000FFFF00000000FFFF0000000007FF0000000003FF0000000003FF00000000 03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 -03FF0000000003FF0000000003FF0000000003FF000FFFE003FF000FFFE003FF000FFFE0 -03FF000FFFE003FF0003FC0003FF0003F00003FF000FE00003FF001F800003FF003F0000 -03FF007E000003FF00FC000003FF03F8000003FF07E0000003FF0FC0000003FF1FC00000 -03FF7FE0000003FFFFF0000003FFFFF8000003FFFFFC000003FFFFFC000003FFCFFE0000 -03FF0FFF000003FE07FF800003FE03FF800003FE01FFC00003FE00FFE00003FE00FFF000 -03FE007FF00003FE003FF80003FE001FFC0003FE001FFE0003FE000FFE0003FE000FFF00 -FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF82D3A7EB932>107 -D<00FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF +03FF0000000003FF01FF800003FF0FFFF00003FF3FFFFC0003FFFE03FF0003FFF000FF80 +03FFE0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001FF803FF00001FFC +03FF00000FFC03FF00000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE +03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE +03FF00000FFC03FF00000FFC03FF00000FFC03FF00001FF803FF00001FF803FF00001FF0 +03FF80003FF003FFC0007FE003FFE0007FC003FDF001FF8003F8FC07FE0003F03FFFF800 +03E00FFFE00003C003FF00002F3A7EB935>I<0001FFC000000FFFFC00007FFFFF0000FF +80FF8003FE00FFC007FC01FFC00FF801FFC01FF801FFC01FF001FFC03FF001FFC03FF000 +FF807FE0007F007FE0001C007FE0000000FFE0000000FFE0000000FFE0000000FFE00000 +00FFE0000000FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE0000000 +7FF00000003FF00000003FF00001E01FF80001E01FF80003E00FFC0007C007FE00078003 +FF001F8000FFC07E00007FFFFC00000FFFF0000001FF800023257DA42A>I<000000007F +800000007FFF800000007FFF800000007FFF800000007FFF8000000003FF8000000001FF +8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF +8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF +8000000001FF8000000001FF800001FF81FF80000FFFF1FF80003FFFFDFF8000FFC07FFF +8003FF001FFF8007FC0007FF800FFC0003FF801FF80001FF801FF00001FF803FF00001FF +803FF00001FF807FE00001FF807FE00001FF807FE00001FF80FFE00001FF80FFE00001FF +80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF +80FFE00001FF80FFE00001FF807FE00001FF807FE00001FF807FF00001FF803FF00001FF +803FF00001FF801FF80003FF800FF80007FF8007FC000FFF8003FE001FFFC001FF80FDFF +FE007FFFF9FFFE001FFFE1FFFE0001FF01FFFE2F3A7DB935>I<0003FF8000001FFFF000 +007FFFFC0001FF83FE0003FE007F8007FC003F800FF8003FC01FF8001FE01FF0001FE03F +F0000FF03FF0000FF07FE0000FF07FE0000FF87FE00007F8FFE00007F8FFE00007F8FFFF +FFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE00000007FE000 +00007FE00000007FE00000003FF00000003FF00000781FF00000780FF80000F80FFC0000 +F007FC0003F001FF000FE000FFC07FC0007FFFFF00000FFFFC000001FFE00025257DA42C +>I<000000001F000007FE00FFC0007FFFE3FFC001FFFFFFEFE007FE07FF8FE00FF801FF +1FE01FF000FF8FE03FF000FFCFE03FE0007FC7C03FE0007FC0007FE0007FE0007FE0007F +E0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0003FE0007FC0003FE0007F +C0003FF000FFC0001FF000FF80000FF801FF000007FE07FE00000FFFFFF800000F7FFFE0 +00001E07FE0000001E00000000001E00000000003E00000000003F00000000003F800000 +00001FC0000000001FFFFFF800001FFFFFFF80001FFFFFFFE0000FFFFFFFF80007FFFFFF +FC0003FFFFFFFE0007FFFFFFFE001FFFFFFFFF003FC0000FFF007F000000FF80FF000000 +7F80FE0000007F80FE0000003F80FE0000003F80FE0000003F80FF0000007F807F000000 +7F007F800000FF003FC00001FE001FF00007FC0007FE003FF00001FFFFFFC000007FFFFF +00000007FFF000002B377DA530>103 D<00FF00000000FFFF00000000FFFF00000000FF +FF00000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003 +FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003 +FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003 +FF007FC00003FF03FFF80003FF0FFFFE0003FF1F03FF0003FF3C01FF8003FF7801FF8003 +FFF000FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFF +FFFC3FFFFF303A7DB935>I<01F00007FC000FFE000FFE001FFF001FFF001FFF001FFF00 +1FFF000FFE000FFE0007FC0001F000000000000000000000000000000000000000000000 +00000000000000FF007FFF007FFF007FFF007FFF0007FF0003FF0003FF0003FF0003FF00 +03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 +03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8 +FFFFF8FFFFF8FFFFF8153B7DBA1B>I<00FF00000000FFFF00000000FFFF00000000FFFF +00000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003FF +0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF +0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF +000FFFE003FF000FFFE003FF000FFFE003FF000FFFE003FF0003FC0003FF0003F00003FF +000FE00003FF001F800003FF003F000003FF007E000003FF00FC000003FF03F8000003FF +07E0000003FF0FC0000003FF1FC0000003FF7FE0000003FFFFF0000003FFFFF8000003FF +FFFC000003FFFFFC000003FFCFFE000003FF0FFF000003FE07FF800003FE03FF800003FE +01FFC00003FE00FFE00003FE00FFF00003FE007FF00003FE003FF80003FE001FFC0003FE +001FFE0003FE000FFE0003FE000FFF00FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF8FFFF +F83FFFF82D3A7EB932>107 D<00FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF -0003FF0003FF0003FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC163A7DB91B ->I<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE07FFFF00FFFFE000FFFE1F81 -FF83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001FF80003FEF000FFDE001FF800 -03FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC0007FF8000FFC0003FF80007FF0 -000FFC0003FF80007FF0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF +0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFFCFFFF +FCFFFFFCFFFFFC163A7DB91B>I<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE +07FFFF00FFFFE000FFFE1F81FF83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001F +F80003FEF000FFDE001FF80003FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC000 +7FF8000FFC0003FF80007FF0000FFC0003FF80007FF0000FFC0003FF00007FE0000FFC00 +03FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0 +000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF 00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000F FC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF0000 7FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC00 -03FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0 -000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF -00007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FF -FFF0FFFFFC1FFFFF83FFFFF04C257DA451>I<00FE007FC000FFFE03FFF800FFFE0FFFFE -00FFFE1F03FF00FFFE3C01FF8007FE7801FF8003FEF000FF8003FFE000FFC003FFC000FF -C003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF0000FF +03FF00007FE0000FFC0003FF00007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF +83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF04C257DA451>I<00FE007FC0 +00FFFE03FFF800FFFE0FFFFE00FFFE1F03FF00FFFE3C01FF8007FE7801FF8003FEF000FF +8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF -C0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30257DA435>I<0001FFC0 -0000000FFFF80000007FFFFF000000FF80FF800003FE003FE00007FC001FF0000FF8000F -F8001FF00007FC001FF00007FC003FF00007FE003FE00003FE007FE00003FF007FE00003 -FF007FE00003FF00FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003 -FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF807FE00003FF007FE00003 -FF007FE00003FF003FE00003FE003FF00007FE001FF00007FC001FF00007FC000FF8000F -F80007FC001FF00003FE003FE00001FF80FFC000007FFFFF0000001FFFFC00000001FFC0 -000029257DA430>I<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE07FF00FFFFF0 -01FF8003FFE000FFC003FF80007FE003FF00007FF003FF00003FF803FF00003FF803FF00 -001FFC03FF00001FFC03FF00001FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00 +C003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFF +FF30257DA435>I<0001FFC00000000FFFF80000007FFFFF000000FF80FF800003FE003F +E00007FC001FF0000FF8000FF8001FF00007FC001FF00007FC003FF00007FE003FE00003 +FE007FE00003FF007FE00003FF007FE00003FF00FFE00003FF80FFE00003FF80FFE00003 +FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003 +FF807FE00003FF007FE00003FF007FE00003FF003FE00003FE003FF00007FE001FF00007 +FC001FF00007FC000FF8000FF80007FC001FF00003FE003FE00001FF80FFC000007FFFFF +0000001FFFFC00000001FFC0000029257DA430>I<00FF01FF8000FFFF0FFFF000FFFF3F +FFFC00FFFFFE07FF00FFFFF001FF8003FFE000FFC003FF80007FE003FF00007FF003FF00 +003FF803FF00003FF803FF00001FFC03FF00001FFC03FF00001FFC03FF00000FFE03FF00 000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00 -000FFE03FF00000FFC03FF00001FFC03FF00001FFC03FF00001FF803FF00003FF803FF00 -003FF003FF80007FF003FFC0007FE003FFE000FFC003FFF003FF8003FFFC07FE0003FF3F -FFF80003FF0FFFE00003FF03FF000003FF0000000003FF0000000003FF0000000003FF00 +000FFE03FF00000FFE03FF00000FFE03FF00000FFC03FF00001FFC03FF00001FFC03FF00 +001FF803FF00003FF803FF00003FF003FF80007FF003FFC0007FE003FFE000FFC003FFF0 +03FF8003FFFC07FE0003FF3FFFF80003FF0FFFE00003FF03FF000003FF0000000003FF00 00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 -00000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC -0000002F357EA435>I<00FE03F000FFFE0FFE00FFFE3FFF00FFFE7C7F80FFFEF8FFC007 -FEF0FFC003FFE0FFC003FFC0FFC003FFC0FFC003FF807F8003FF803F0003FF800C0003FF -80000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 -000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF0000 -0003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000 -FFFFFE0000FFFFFE0000FFFFFE000022257EA427>114 D<003FF03803FFFEF80FFFFFF8 -1FC00FF83F0003F87E0001F87C0000F8FC0000F8FC000078FE000078FF000078FF800000 -FFFC0000FFFFE0007FFFFC007FFFFF803FFFFFC01FFFFFF00FFFFFF803FFFFF800FFFFFC -001FFFFC00007FFE000007FEF00001FEF00000FEF80000FEF800007EFC00007EFC00007C -FE0000FCFF0000F8FF8001F8FFF007F0FFFFFFC0F8FFFF00E01FF8001F257DA426>I<00 -0F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F000000 -3F0000003F0000007F000000FF000000FF000001FF000007FF00001FFFFFE0FFFFFFE0FF -FFFFE0FFFFFFE003FF000003FF000003FF000003FF000003FF000003FF000003FF000003 -FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003 -FF000003FF000003FF007803FF007803FF007803FF007803FF007803FF007803FF007803 -FF007803FF00F801FF80F001FF81F000FFC3E0003FFFC0001FFF800003FE001D357EB425 ->I<00FF00003FC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC007FF0001 -FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 -FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 -FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 -FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0001FFC003FF0001FFC003FF0003 -FFC003FF0003FFC001FF0007FFC001FF800FFFE000FFC03EFFFF007FFFFCFFFF001FFFF0 -FFFF0003FF80FFFF30257DA435>I119 -D121 D E +00000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC +000000FFFFFC000000FFFFFC0000002F357EA435>I<00FE03F000FFFE0FFE00FFFE3FFF +00FFFE7C7F80FFFEF8FFC007FEF0FFC003FFE0FFC003FFC0FFC003FFC0FFC003FF807F80 +03FF803F0003FF800C0003FF80000003FF00000003FF00000003FF00000003FF00000003 +FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF +00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 +000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000022257EA427>114 +D<003FF03803FFFEF80FFFFFF81FC00FF83F0003F87E0001F87C0000F8FC0000F8FC0000 +78FE000078FF000078FF800000FFFC0000FFFFE0007FFFFC007FFFFF803FFFFFC01FFFFF +F00FFFFFF803FFFFF800FFFFFC001FFFFC00007FFE000007FEF00001FEF00000FEF80000 +FEF800007EFC00007EFC00007CFE0000FCFF0000F8FF8001F8FFF007F0FFFFFFC0F8FFFF +00E01FF8001F257DA426>I<000F0000000F0000000F0000000F0000000F0000001F0000 +001F0000001F0000001F0000003F0000003F0000007F000000FF000000FF000001FF0000 +07FF00001FFFFFE0FFFFFFE0FFFFFFE0FFFFFFE003FF000003FF000003FF000003FF0000 +03FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF0000 +03FF000003FF000003FF000003FF000003FF000003FF007803FF007803FF007803FF0078 +03FF007803FF007803FF007803FF007803FF00F801FF80F001FF81F000FFC3E0003FFFC0 +001FFF800003FE001D357EB425>I<00FF00003FC0FFFF003FFFC0FFFF003FFFC0FFFF00 +3FFFC0FFFF003FFFC007FF0001FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 +00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 +00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 +00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 +01FFC003FF0001FFC003FF0003FFC003FF0003FFC001FF0007FFC001FF800FFFE000FFC0 +3EFFFF007FFFFCFFFF001FFFF0FFFF0003FF80FFFF30257DA435>I119 D121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff ecbx1440 14.4 42 /Ff 42 122 df<000000007FFC0000000000001FFFFF800000000001FFFFFFE000000000 @@ -3423,262 +3437,273 @@ g(\020b)n(yte\021)37 b(as)515 2232 y(pa)n(yload)26 b(data.)39 b(Note)28 b(that)h(address)e(0x10)f(is)i(fast-trac)n(k)n(ed)f(and)h (uses)g(one)f(b)n(yte)i(less)e(on)515 2331 y(the)h(USB)g(bus.)36 b(So)28 b(it)g(is)f(p)r(oten)n(tially)g(faster.)515 2564 -y Fb(3.15)112 b(cmdFPGARead\(address\))515 2717 y Fd(Reads)23 -b(a)h(b)n(yte)g(from)f(the)i(FPGA)g(and)f(puts)g(it)h(in)n(to)f(the)g -(micro)r(con)n(troller's)d(bu\033er)k(regis-)515 2816 -y(ter.)38 b(\020address\021)c(is)28 b(used)g(for)g(address)f(latc)n -(hing)g(on)h(the)h(FPGA.)g(The)g(micro)r(con)n(troller's)515 -2916 y(bu\033er)j(register)f(has)g(an)h(automagically)e(incremen)n -(ting)i(p)r(oin)n(ter.)50 b(So)31 b(issueing)h(sev)n(eral)515 -3016 y(cmdFPGARead\(\))f(in)f(a)f(ro)n(w)f(will)i(result)f(in)h(all)f -(the)h(b)n(ytes)f(b)r(eing)h(put)g(one)f(after)g(eac)n(h)515 -3115 y(other)22 b(in)n(to)g(the)g(bu\033er)h(register.)33 -b(The)23 b(bu\033er)f(register)f(can)h(hold)h(up)f(to)h(64)e(b)n(ytes.) -35 b(Read-)515 3215 y(ing)c(the)h(bu\033er)f(register)f -(\(cmdReadBu\033erReg\(\)\))h(will)h(reset)f(the)h(automagic)e(p)r(oin) -n(ter)515 3315 y(to)j(zero.)52 b(Note)33 b(that)h(address)d(0x10)h(is)h -(fast-trac)n(k)n(ed)e(and)i(uses)g(one)f(b)n(yte)h(less)g(on)g(the)515 -3414 y(USB)28 b(bus.)36 b(So)28 b(it)g(is)f(p)r(oten)n(tially)h -(faster.)515 3647 y Fb(3.16)112 b(cmdDela)m(y\(seconds\))515 -3800 y Fd(Send)41 b(a)f(dela)n(y)f(command)h(to)g(the)h(programmer.)73 -b(The)41 b(Programmer)d(will)j(p)r(erform)515 3899 y(the)35 +y Fb(3.15)112 b(cmdFPGARead\(address\))515 2717 y Fd(Reads)29 +b(a)h(b)n(yte)g(from)f(the)i(FPGA)g(and)f(puts)g(it)g(in)n(to)g(the)h +(bu\033er)f(register.)42 b(\020address\021)35 b(is)515 +2816 y(used)21 b(for)g(address)f(latc)n(hing)g(on)h(the)h(FPGA.)h(The)e +(micro)r(con)n(troller's)d(bu\033er)k(register)e(has)515 +2916 y(an)j(automagically)e(incremen)n(ting)h(p)r(oin)n(ter.)35 +b(So)23 b(issueing)f(sev)n(eral)f(cmdFPGARead\(\))k(in)515 +3016 y(a)35 b(ro)n(w)g(will)h(result)g(in)g(all)g(the)g(b)n(ytes)f(b)r +(eing)h(put)h(one)e(after)h(another)f(in)n(to)h(the)g(bu\033er)515 +3115 y(register.)57 b(The)35 b(bu\033er)h(register)d(do)r(es)i(ha)n(v)n +(e)f(a)g(limited)i(size.)59 b(Ov)n(er\035o)n(wing)32 +b(it)k(crashes)515 3215 y(the)26 b(programmer,)e(requireing)h(a)g(ph)n +(ysical)h(USB)g(disconnect)g(to)g(reco)n(v)n(er.)34 b(Call)25 +b(getBuf-)515 3315 y(ferRegSize\(\))33 b(to)g(get)g(the)g(size)g(of)g +(the)h(bu\033er)f(register.)52 b(Reading)33 b(the)g(bu\033er)h +(register)515 3414 y(\(cmdReadBu\033erReg\(\)\))29 b(will)g(reset)f +(the)i(automagic)d(p)r(oin)n(ter)i(to)g(zero.)40 b(Note)28 +b(that)i(ad-)515 3514 y(dress)38 b(0x10)g(is)i(fast-trac)n(k)n(ed)d +(and)j(uses)f(one)g(b)n(yte)h(less)f(on)g(the)h(USB)g(bus.)73 +b(So)39 b(it)h(is)515 3613 y(p)r(oten)n(tially)27 b(faster.)515 +3846 y Fb(3.16)112 b(cmdDela)m(y\(seconds\))515 3999 +y Fd(Send)41 b(a)f(dela)n(y)f(command)h(to)g(the)h(programmer.)73 +b(The)41 b(Programmer)d(will)j(p)r(erform)515 4099 y(the)35 b(dela)n(y)-7 b(.)58 b(A)35 b(v)-5 b(alue)35 b(up)g(to)g(0.5)f(seconds) g(is)h(p)r(ossible.)59 b(Note)34 b(that)i(the)f(actual)f(v)-5 -b(alue)515 3999 y(will)30 b(b)r(e)h(rounded)f(up)h(to)f(the)h(next)g(p) +b(alue)515 4198 y(will)30 b(b)r(e)h(rounded)f(up)h(to)f(the)h(next)g(p) r(ossible)f(w)n(ait)g(in)n(terv)-5 b(al)30 b(v)-5 b(alue.)45 -b(Use)30 b(this)h(for)f(short)515 4099 y(\(microsecond)g(or)g(lo)n(w)g +b(Use)30 b(this)h(for)f(short)515 4298 y(\(microsecond)g(or)g(lo)n(w)g (millisecond\))h(dela)n(ys.)47 b(Note)31 b(that)g(this)g(do)r(es)g -(_not_)f(\035ush)i(the)515 4198 y(command)27 b(queue.)515 -4431 y Fb(3.17)112 b(hostDela)m(y\(seconds\))515 4584 +(_not_)f(\035ush)i(the)515 4398 y(command)27 b(queue.)515 +4630 y Fb(3.17)112 b(hostDela)m(y\(seconds\))515 4783 y Fd(Sends)23 b(all)g(queued)g(commands)f(to)h(the)g(device)g(and)g(w)n (aits)f(for)h(\020seconds\021.)33 b(\020seconds\021)c(is)22 -b(a)515 4684 y(\035oating)j(p)r(oin)n(t)h(n)n(um)n(b)r(er.)37 +b(a)515 4883 y(\035oating)j(p)r(oin)n(t)h(n)n(um)n(b)r(er.)37 b(The)26 b(dela)n(y)f(is)h(p)r(erformed)g(on)g(the)g(host)g(computer)g -(b)n(y)g(simply)515 4783 y(not)j(sending)g(commands)f(to)h(the)h -(programmer)d(for)i(the)g(time)h(sp)r(eci\034ed)f(after)g(\035ushing) -515 4883 y(the)f(command)f(queue.)1926 5255 y(3)p eop -end +(b)n(y)g(simply)1926 5255 y(3)p eop end %%Page: 4 4 -TeXDict begin 4 3 bop 515 523 a Ff(4)131 b(TX)44 b(command)f(queueing) -515 705 y Fd(All)29 b(commands)f(transmitted)h(to)f(the)h(device)g(are) -e(not)i(sen)n(t)g(immediately)-7 b(,)29 b(but)g(queued)515 -804 y(in)f(soft)n(w)n(are)f(and)h(sen)n(t)h(later.)38 -b(This)29 b(is)f(done)g(to)g(sp)r(eed)h(up)g(device)f(access)f -(signi\034can)n(tly)-7 b(.)515 904 y(The)27 b(command)g(transmission)g -(queue)g(has)g(sev)n(eral)f(\035ushing)h(conditions:)639 -1070 y Fc(\017)41 b Fd(Commands)18 b(can)g(b)r(e)h(\035ushed)f -(explicitely)h(using)f(the)g(\020\035ushCommands\(\)\021)25 -b(metho)r(d)722 1170 y(of)j(\020class)e(TOP\021.)639 -1336 y Fc(\017)41 b Fd(Commands)18 b(are)g(automatically)f(\035ushed)i -(on)g(cmdReadBu\033erReg\(\))f(b)r(efore)g(read-)722 -1435 y(ing)30 b(the)h(data)f(from)g(the)h(device.)45 +TeXDict begin 4 3 bop 515 523 a Fd(not)29 b(sending)g(commands)f(to)h +(the)h(programmer)d(for)i(the)g(time)h(sp)r(eci\034ed)f(after)g +(\035ushing)515 623 y(the)f(command)f(queue.)515 897 +y Ff(4)131 b(TX)44 b(command)f(queueing)515 1079 y Fd(All)29 +b(commands)f(transmitted)h(to)f(the)h(device)g(are)e(not)i(sen)n(t)g +(immediately)-7 b(,)29 b(but)g(queued)515 1179 y(in)f(soft)n(w)n(are)f +(and)h(sen)n(t)h(later.)38 b(This)29 b(is)f(done)g(to)g(sp)r(eed)h(up)g +(device)f(access)f(signi\034can)n(tly)-7 b(.)515 1278 +y(The)27 b(command)g(transmission)g(queue)g(has)g(sev)n(eral)f +(\035ushing)h(conditions:)639 1444 y Fc(\017)41 b Fd(Commands)18 +b(can)g(b)r(e)h(\035ushed)f(explicitely)h(using)f(the)g +(\020\035ushCommands\(\)\021)25 b(metho)r(d)722 1544 +y(of)j(\020class)e(TOP\021.)639 1710 y Fc(\017)41 b Fd(Commands)18 +b(are)g(automatically)f(\035ushed)i(on)g(cmdReadBu\033erReg\(\))f(b)r +(efore)g(read-)722 1810 y(ing)30 b(the)h(data)f(from)g(the)h(device.)45 b(This)30 b(is)g(to)g(ensure)g(sequen)n(tial)g(consistency)f(of)722 -1535 y(the)f(commands.)639 1701 y Fc(\017)41 b Fd(Commands)27 +1909 y(the)f(commands.)639 2075 y Fc(\017)41 b Fd(Commands)27 b(are)g(\035ushed)h(on)f(v)-5 b(arious)26 b(v)n(oltage-la)n(y)n(out)e -(op)r(erations.)515 1867 y(Y)-7 b(ou)27 b(usually)g(do)h(not)f(need)h -(to)f(\035ush)h(commands)f(explicitely)-7 b(.)515 2142 +(op)r(erations.)515 2241 y(Y)-7 b(ou)27 b(usually)g(do)h(not)f(need)h +(to)f(\035ush)h(commands)f(explicitely)-7 b(.)515 2516 y Ff(5)131 b(Implemen)l(ting)44 b(a)g(new)f(c)l(hip)j(\(DUT\))e -(algorithm)515 2324 y Fd(The)32 b(reading)f(and)g(programming)f +(algorithm)515 2698 y Fd(The)32 b(reading)f(and)g(programming)f (algorithms)h(for)g(the)i(c)n(hips)e(\(DUT)-7 b(s\))33 -b(are)e(separated)515 2423 y(in)n(to)c(t)n(w)n(o)g(parts:)639 -2589 y Fc(\017)41 b Fd(Lo)n(w)27 b(lev)n(el)g(FPGA)i(b)r(ottom-half)639 -2755 y Fc(\017)41 b Fd(High)28 b(lev)n(el)f(Python)h(co)r(de)f -(top-half)515 2921 y(The)35 b(FPGA)i(b)r(ottom-half)f(implemen)n(ts)f +b(are)e(separated)515 2797 y(in)n(to)c(t)n(w)n(o)g(parts:)639 +2963 y Fc(\017)41 b Fd(Lo)n(w)27 b(lev)n(el)g(FPGA)i(b)r(ottom-half)639 +3129 y Fc(\017)41 b Fd(High)28 b(lev)n(el)f(Python)h(co)r(de)f +(top-half)515 3295 y(The)35 b(FPGA)i(b)r(ottom-half)f(implemen)n(ts)f (the)h(basic)f(op)r(erations)g(\(fetc)n(hing)g(data)g(from)515 -3021 y(DUT.)27 b(W)-7 b(riting)26 b(data)g(to)g(DUT.)h(etc...\).)37 +3395 y(DUT.)27 b(W)-7 b(riting)26 b(data)g(to)g(DUT.)h(etc...\).)37 b(It)27 b(ma)n(y)f(also)f(implemen)n(t)i(timingcritical)f(parts)515 -3121 y(of)e(the)h(algorithm.)34 b(Ev)n(erything)24 b(else)g(is)g +3495 y(of)e(the)h(algorithm.)34 b(Ev)n(erything)24 b(else)g(is)g (implemen)n(ted)h(in)f(the)h(high)f(lev)n(el)g(Python)g(co)r(de,)515 -3220 y(that)k(liv)n(es)e(on)i(the)g(other)f(end)g(of)h(the)g(USB)g -(line.)515 3453 y Fb(5.1)112 b(Python)37 b(top-half)h(implemen)m -(tation)515 3606 y Fd(The)27 b(DUT)i(sp)r(eci\034c)e(top-half)h(liv)n +3594 y(that)k(liv)n(es)e(on)i(the)g(other)f(end)g(of)h(the)g(USB)g +(line.)515 3827 y Fb(5.1)112 b(Python)37 b(top-half)h(implemen)m +(tation)515 3980 y Fd(The)27 b(DUT)i(sp)r(eci\034c)e(top-half)h(liv)n (es)f(in)h(the)g(\020c)n(hip_xxx.p)n(y\021)k(\034les,)c(where)f(xxx)g -(is)h(the)g(ID)515 3705 y(of)23 b(the)h(DUT.)h(This)e(\034le)h(con)n +(is)h(the)g(ID)515 4080 y(of)23 b(the)h(DUT.)h(This)e(\034le)h(con)n (tains)f(a)g(class)g(deriv)n(ed)g(from)g(the)h(\020Chip\021)30 -b(class.)35 b(The)24 b(\020Chip\021)515 3805 y(class)g(pro)n(vides)g +b(class.)35 b(The)24 b(\020Chip\021)515 4179 y(class)g(pro)n(vides)g (some)h(basic)g(help)r(er)g(metho)r(ds)h(for)f(algorithm)f(implemen)n -(tation.)36 b(It)26 b(also)515 3905 y(de\034nes)h(the)h(in)n(terface)f +(tation.)36 b(It)26 b(also)515 4279 y(de\034nes)h(the)h(in)n(terface)f (that)h(is)f(to)h(b)r(e)f(re-implemen)n(ted)h(in)f(the)h(deriv)n(ed)f -(sub)r(class.)36 b(This)515 4004 y(in)n(terface)27 b(consists)f(of)i -(the)g(follo)n(wing)e(metho)r(ds:)515 4170 y Fe(sh)m(utdo)m(wnChip\(\)) +(sub)r(class.)36 b(This)515 4378 y(in)n(terface)27 b(consists)f(of)i +(the)g(follo)n(wing)e(metho)r(ds:)515 4544 y Fe(sh)m(utdo)m(wnChip\(\)) 41 b Fd(Called)26 b(once)f(on)g(c)n(hip)h(sh)n(utdo)n(wn.)35 -b(The)26 b(default)g(implemen)n(tation)722 4270 y(turns)i(o\033)f(all)h +b(The)26 b(default)g(implemen)n(tation)722 4644 y(turns)i(o\033)f(all)h (v)n(oltages.)34 b(There's)27 b(usually)g(no)h(need)f(to)h(o)n(v)n -(erride)d(that.)515 4436 y Fe(readSignature\(\))42 b +(erride)d(that.)515 4810 y Fe(readSignature\(\))42 b Fd(Read)31 b(the)i(DUT)f(signature)f(and)g(return)h(it.)49 -b(Reimplemen)n(t)33 b(this,)722 4536 y(if)28 b(y)n(our)f(DUT)h(supp)r -(orts)f(signature)f(reading.)515 4702 y Fe(erase\(\))41 -b Fd(Erase)d(the)g(DUT.)h(Reimplemen)n(t)g(this,)i(if)e(y)n(our)d(DUT)j -(supp)r(orts)f(electrical)722 4801 y(erasing.)1926 5255 -y(4)p eop end +b(Reimplemen)n(t)33 b(this,)722 4910 y(if)28 b(y)n(our)f(DUT)h(supp)r +(orts)f(signature)f(reading.)1926 5255 y(4)p eop end %%Page: 5 5 -TeXDict begin 5 4 bop 515 523 a Fe(test\(\))41 b Fd(Run)28 -b(an)f(optional)f(unit-test)i(on)f(the)g(c)n(hip.)37 +TeXDict begin 5 4 bop 515 523 a Fe(erase\(\))41 b Fd(Erase)d(the)g +(DUT.)h(Reimplemen)n(t)g(this,)i(if)e(y)n(our)d(DUT)j(supp)r(orts)f +(electrical)722 623 y(erasing.)515 789 y Fe(test\(\))j +Fd(Run)28 b(an)f(optional)f(unit-test)i(on)f(the)g(c)n(hip.)37 b(The)27 b(con)n(v)n(enience)f(wrapp)r(er)g(gener-)722 -623 y(icT)-7 b(est\(self,)45 b(readF)-7 b(unc,)43 b(writeF)-7 +888 y(icT)-7 b(est\(self,)45 b(readF)-7 b(unc,)43 b(writeF)-7 b(unc,)45 b(size\))c(ma)n(y)f(b)r(e)h(used)g(to)f(implemen)n(t)i(this) -722 722 y(metho)r(d.)515 887 y Fe(readProgmem\(\))d Fd(Read)22 -b(the)g(program)e(memory)h(and)h(return)g(it.)35 b(Reimplemen)n(t)23 -b(this,)722 987 y(if)28 b(y)n(our)f(DUT)h(has)f(program)e(memory)i(and) -h(supp)r(orts)f(reading)f(it.)515 1152 y Fe(writeProgmem\(image\))36 -b Fd(W)-7 b(rite)39 b(the)h(program)c(memory)-7 b(.)71 -b(Reimplemen)n(t)39 b(this,)k(if)722 1252 y(y)n(our)27 -b(DUT)h(has)f(program)e(memory)i(and)g(supp)r(orts)h(writing)f(it.)515 -1417 y Fe(readEEPR)m(OM\(\))41 b Fd(Read)27 b(the)g(\(E\)EPR)n(OM)i -(memory)d(and)h(return)f(it.)38 b(Reimplemen)n(t)722 -1516 y(this,)28 b(if)g(y)n(our)f(DUT)h(has)f(\(E\)EPR)n(OM)i(memory)e -(and)g(supp)r(orts)g(reading)g(it.)515 1681 y Fe(writeEEPR)m(OM\(\))40 -b Fd(W)-7 b(rite)28 b(the)g(\(E\)EPR)n(OM)h(memory)-7 -b(.)37 b(Reimplemen)n(t)28 b(this,)g(if)g(y)n(our)722 -1781 y(DUT)h(has)e(\(E\)EPR)n(OM)i(memory)d(and)i(supp)r(orts)f -(writing)g(it.)515 1946 y Fe(readF)-8 b(use\(\))42 b +722 988 y(metho)r(d.)515 1154 y Fe(readProgmem\(\))d +Fd(Read)22 b(the)g(program)e(memory)h(and)h(return)g(it.)35 +b(Reimplemen)n(t)23 b(this,)722 1254 y(if)28 b(y)n(our)f(DUT)h(has)f +(program)e(memory)i(and)h(supp)r(orts)f(reading)f(it.)515 +1420 y Fe(writeProgmem\(image\))36 b Fd(W)-7 b(rite)39 +b(the)h(program)c(memory)-7 b(.)71 b(Reimplemen)n(t)39 +b(this,)k(if)722 1519 y(y)n(our)27 b(DUT)h(has)f(program)e(memory)i +(and)g(supp)r(orts)h(writing)f(it.)515 1685 y Fe(readEEPR)m(OM\(\))41 +b Fd(Read)27 b(the)g(\(E\)EPR)n(OM)i(memory)d(and)h(return)f(it.)38 +b(Reimplemen)n(t)722 1785 y(this,)28 b(if)g(y)n(our)f(DUT)h(has)f +(\(E\)EPR)n(OM)i(memory)e(and)g(supp)r(orts)g(reading)g(it.)515 +1951 y Fe(writeEEPR)m(OM\(\))40 b Fd(W)-7 b(rite)28 b(the)g(\(E\)EPR)n +(OM)h(memory)-7 b(.)37 b(Reimplemen)n(t)28 b(this,)g(if)g(y)n(our)722 +2051 y(DUT)h(has)e(\(E\)EPR)n(OM)i(memory)d(and)i(supp)r(orts)f +(writing)g(it.)515 2217 y Fe(readF)-8 b(use\(\))42 b Fd(Read)31 b(the)h(F)-7 b(use)32 b(memory)f(and)h(return)f(it.)50 -b(Reimplemen)n(t)33 b(this,)g(if)f(y)n(our)722 2046 y(DUT)d(has)e(F)-7 -b(uses)27 b(and)g(supp)r(orts)g(reading)g(them.)515 2211 +b(Reimplemen)n(t)33 b(this,)g(if)f(y)n(our)722 2316 y(DUT)d(has)e(F)-7 +b(uses)27 b(and)g(supp)r(orts)g(reading)g(them.)515 2482 y Fe(writeF)-8 b(use\(\))41 b Fd(W)-7 b(rite)19 b(the)g(F)-7 b(use)20 b(memory)-7 b(.)33 b(Reimplemen)n(t)19 b(this,)j(if)d(y)n(our) -f(DUT)i(has)e(F)-7 b(uses)722 2310 y(and)28 b(supp)r(orts)f(writing)g -(them.)515 2475 y Fe(readLo)s(c)m(kbits\(\))42 b Fd(Read)31 +f(DUT)i(has)e(F)-7 b(uses)722 2582 y(and)28 b(supp)r(orts)f(writing)g +(them.)515 2748 y Fe(readLo)s(c)m(kbits\(\))42 b Fd(Read)31 b(the)h(Lo)r(c)n(kbit)g(memory)e(and)i(return)f(it.)49 -b(Reimplemen)n(t)32 b(this,)722 2575 y(if)c(y)n(our)f(DUT)h(has)f(Lo)r +b(Reimplemen)n(t)32 b(this,)722 2848 y(if)c(y)n(our)f(DUT)h(has)f(Lo)r (c)n(kbits)g(and)g(supp)r(orts)g(reading)g(them.)515 -2740 y Fe(writeLo)s(c)m(kbits\(\))41 b Fd(W)-7 b(rite)30 +3014 y Fe(writeLo)s(c)m(kbits\(\))41 b Fd(W)-7 b(rite)30 b(the)f(Lo)r(c)n(kbit)g(memory)-7 b(.)41 b(Reimplemen)n(t)29 -b(this,)h(if)g(y)n(our)d(DUT)722 2840 y(has)g(Lo)r(c)n(kbits)g(and)h -(supp)r(orts)f(writing)g(them.)515 3004 y(After)f(de\034ning)g(y)n(our) -e(\020Chip\021-deriv)n(ed)h(class)g(y)n(ou)g(need)h(to)f(register)g -(it.)36 b(This)26 b(is)g(done)f(b)n(y)515 3103 y(de\034ning)i(a)g -(ChipDescription\(\):)722 3383 y Fa(ChipDescription\(C)o(hi)o(p_)o(MyD) -o(ev)o(ic)o(e,)37 b(bitfile)k(=)i(\020bitfileID\021,)38 -b(chipID)j(=)j(\020myChipID\021\))515 3563 y Fd(The)39 -b(c)n(hip)g(class)f(\(_not_)g(an)h(instance)g(of)g(it\))g(is)g(passed)f -(as)h(\034rst)f(parameter.)70 b(The)515 3663 y(ID)33 -b(string)f(of)g(the)h(required)f(bit\034le)h(is)g(past)f(as)g(second)g -(parameter.)50 b(A)33 b(c)n(hipID)g(migh)n(t)515 3763 -y(also)28 b(b)r(e)h(passed.)41 b(If)29 b(the)g(c)n(hipID)h(is)f +b(this,)h(if)g(y)n(our)d(DUT)722 3113 y(has)g(Lo)r(c)n(kbits)g(and)h +(supp)r(orts)f(writing)g(them.)515 3279 y Fe(readRAM\(\))41 +b Fd(Read)c(the)g(Random)g(A)n(ccess)f(Memory)-7 b(.)65 +b(Reimplemen)n(t)37 b(this,)j(if)d(y)n(our)722 3379 y(DUT)29 +b(has)e(RAM)h(and)f(supp)r(orts)g(reading)f(it.)515 3545 +y Fe(writeRAM\(\))40 b Fd(W)-7 b(rite)33 b(the)f(Random)g(A)n(ccess)f +(Memory)-7 b(.)50 b(Reimplemen)n(t)32 b(this,)i(if)e(y)n(our)722 +3645 y(DUT)d(has)e(RAM)h(and)f(supp)r(orts)g(writing)g(to)h(it.)515 +3811 y(After)e(de\034ning)g(y)n(our)e(\020Chip\021-deriv)n(ed)h(class)g +(y)n(ou)g(need)h(to)f(register)g(it.)36 b(This)26 b(is)g(done)f(b)n(y) +515 3910 y(de\034ning)i(a)g(ChipDescription\(\):)722 +4193 y Fa(ChipDescription\(C)o(hi)o(p_)o(MyD)o(ev)o(ic)o(e,)37 +b(bitfile)k(=)i(\020bitfileID\021,)38 b(chipID)j(=)j +(\020myChipID\021\))515 4375 y Fd(The)39 b(c)n(hip)g(class)f(\(_not_)g +(an)h(instance)g(of)g(it\))g(is)g(passed)f(as)h(\034rst)f(parameter.)70 +b(The)515 4475 y(ID)33 b(string)f(of)g(the)h(required)f(bit\034le)h(is) +g(past)f(as)g(second)g(parameter.)50 b(A)33 b(c)n(hipID)g(migh)n(t)515 +4575 y(also)28 b(b)r(e)h(passed.)41 b(If)29 b(the)g(c)n(hipID)h(is)f (omitted,)h(the)f(bit\034leID)h(is)f(used)g(as)f(c)n(hipID.)i(There)515 -3862 y(are)g(more)h(optional)g(parameters)e(to)j(ChipDescription\(\).) -49 b(See)31 b(the)h(inline)g(sourceco)r(de)515 3962 y(do)r(cumen)n -(tation)27 b(for)g(details.)515 4194 y Fb(5.2)112 b(FPGA)37 -b(b)s(ottom-half)g(implemen)m(tation)515 4347 y Fd(F)-7 +4674 y(are)g(more)h(optional)g(parameters)e(to)j(ChipDescription\(\).) +49 b(See)31 b(the)h(inline)g(sourceco)r(de)515 4774 y(do)r(cumen)n +(tation)27 b(for)g(details.)1926 5255 y(5)p eop end +%%Page: 6 6 +TeXDict begin 6 5 bop 515 523 a Fb(5.2)112 b(FPGA)37 +b(b)s(ottom-half)g(implemen)m(tation)515 676 y Fd(F)-7 b(or)25 b(the)i(FPGA)h(part)e(y)n(ou)f(need)i(to)f(get)g(the)h(Xilinx)g (dev)n(elopmen)n(t)f(suite)g(\(ISE\))i(v)n(ersion)515 -4447 y(10.1)d(service)g(pac)n(k)h(3.)36 b(The)26 b("W)-7 +776 y(10.1)d(service)g(pac)n(k)h(3.)36 b(The)26 b("W)-7 b(ebP)g(A)n(CK",)26 b(whic)n(h)h(is)f(su\036cien)n(t)g(for)g(our)g -(purp)r(oses,)f(can)515 4546 y(b)r(e)j(do)n(wnloaded)e(for)h(free)g +(purp)r(oses,)f(can)515 876 y(b)r(e)j(do)n(wnloaded)e(for)h(free)g (\(as)g(in)h(b)r(eer\))g(from)f(the)h(Xilinx)g(homepage:)722 -4726 y Fa(http://www.xilinx)o(.c)o(om)o(/su)o(pp)o(or)o(t/d)o(ow)o(nl)o -(oad)o(/i)o(nd)o(ex.)o(ht)o(m)515 4907 y Fd(T)-7 b(o)24 +1058 y Fa(http://www.xilinx)o(.c)o(om)o(/su)o(pp)o(or)o(t/d)o(ow)o(nl)o +(oad)o(/i)o(nd)o(ex.)o(ht)o(m)515 1241 y Fd(T)-7 b(o)24 b(create)f(a)g(new)i(sourceco)r(de)d(template)j(\034leset)f(for)f(a)h -(new)g(c)n(hip,)h(go)e(to)i(the)f(libtopram-)515 5006 +(new)g(c)n(hip,)h(go)e(to)i(the)f(libtopram-)515 1340 y(mer/bit/src/)h(sub)r(directory)i(and)g(execute)g(the)h("create.sh")e -(script:)1926 5255 y(5)p eop end -%%Page: 6 6 -TeXDict begin 6 5 bop 722 523 a Fa(./create.sh)39 b(name_of_chip)515 -706 y Fd(Where)34 b("name_of_c)n(hip")e(is)j(the)g(name)f(of)h(the)g -(new)g(c)n(hip.)58 b(No)n(w)34 b(go)g(to)g(libtopram-)515 -805 y(mer/bit/src/name_of_c)n(hip/)27 b(and)32 b(implemen)n(t)g(the)g -(b)r(ottom-half)g(algorithm)f(in)h(the)515 905 y(name_of_c)n(hip.v)f(V) --7 b(erilog)32 b(\034le.)53 b(T)-7 b(o)32 b(build)i(the)f(.BIT)g -(\034le)g(from)f(the)i(V)-7 b(erilog)32 b(sources,)515 -1005 y(go)26 b(to)i(the)g(libtoprammer/bit/)e(directory)g(and)h -(execute:)722 1187 y Fa(./build.sh)40 b(name_of_chip)515 -1370 y Fd(\(if)28 b(y)n(ou)f(omit)h(the)f(c)n(hipname,)h(all)f(c)n -(hips)g(will)h(b)r(e)g(rebuilt\).)515 1644 y Ff(6)131 -b(Automatic)44 b(la)l(y)l(out)h(generator)515 1826 y +(script:)722 1523 y Fa(./create.sh)39 b(bitfile_name)515 +1706 y Fd(Where)20 b("bit\034le_name")g(is)h(the)g(name)f(of)h(the)g +(new)g(c)n(hip's)g(bit\034le.)35 b(\(That)21 b(often)g(matc)n(hes)515 +1805 y(the)37 b(c)n(hip-ID\).)h(No)n(w)f(go)f(to)h +(libtoprammer/bit/src/bit\034le_name/)d(and)j(implemen)n(t)515 +1905 y(the)27 b(b)r(ottom-half)f(algorithm)g(in)g(the)h +(bit\034le_name.v)g(V)-7 b(erilog)25 b(\034le.)37 b(T)-7 +b(o)26 b(build)h(the)g(.BIT)515 2005 y(\034le)21 b(from)g(the)h(V)-7 +b(erilog)20 b(sources,)h(go)f(to)h(the)h(libtoprammer/bit/)d(directory) +h(and)h(execute:)722 2187 y Fa(./build.sh)40 b(bitfile_name)515 +2370 y Fd(\(if)28 b(y)n(ou)f(omit)h(the)f(bit\034le_name,)h(all)f +(bit\034les)h(will)g(b)r(e)g(rebuilt\).)515 2644 y Ff(6)131 +b(Automatic)44 b(la)l(y)l(out)h(generator)515 2826 y Fd(The)39 b(automatic)f(la)n(y)n(out)g(generator)f(\(la)n(y)n (out_generator.p)n(y\))e(can)k(b)r(e)g(used)g(to)g(auto-)515 -1926 y(matically)27 b(generate)f(a)i(V)n(CC/VPP/GND)h(la)n(y)n(out.)36 +2926 y(matically)27 b(generate)f(a)i(V)n(CC/VPP/GND)h(la)n(y)n(out.)36 b(The)28 b(generator)d(will)j(then)h(tell)f(y)n(ou)515 -2025 y(ho)n(w)j(to)i(insert)f(the)g(c)n(hip)h(in)n(to)f(the)g(ZIF)h(so) +3026 y(ho)n(w)j(to)i(insert)f(the)g(c)n(hip)h(in)n(to)f(the)g(ZIF)h(so) r(c)n(k)n(et.)50 b(The)32 b(adv)-5 b(an)n(tage)31 b(of)h(using)g(the)h -(auto-)515 2125 y(generator)d(instead)j(of)f(hardco)r(ding)g(the)h(V)n -(CC/VPP/GND)g(connections)f(in)h(the)g(c)n(hip)515 2225 +(auto-)515 3125 y(generator)d(instead)j(of)f(hardco)r(ding)g(the)h(V)n +(CC/VPP/GND)g(connections)f(in)h(the)g(c)n(hip)515 3225 y(implemen)n(tation)26 b(is)f(that)h(the)h(autogenerated)d(la)n(y)n (out)g(is)i(p)r(ortable)f(b)r(et)n(w)n(een)h(TOPxxxx)515 -2324 y(programmers)g(and)i(it)h(is)g(m)n(uc)n(h)f(easier)g(to)g -(implemen)n(t.)41 b(Y)-7 b(ou)29 b(do)g(not)f(ha)n(v)n(e)g(to)g(searc)n -(h)f(a)515 2424 y(c)n(hip)g(p)r(osition)g(in)h(the)f(ZIF)h(so)r(c)n(k)n -(et)e(that)h(\034ts)h(the)f(device)g(constrain)n(ts.)36 -b(The)27 b(autogener-)515 2524 y(ator)f(will)i(do)f(it)h(for)f(y)n(ou.) -639 2623 y(The)20 b(c)n(hip)g(in)n(terface)f(of)h(the)g(autogenerator)e +3324 y(programmers)c(and)i(it)h(is)g(m)n(uc)n(h)f(easier)f(to)i +(implemen)n(t.)36 b(Y)-7 b(ou)25 b(do)f(not)h(ha)n(v)n(e)e(to)i(searc)n +(h)e(for)515 3424 y(a)k(c)n(hip)g(p)r(osition)g(in)h(the)f(ZIF)h(so)r +(c)n(k)n(et)e(that)h(\034ts)h(the)g(device)f(constrain)n(ts.)35 +b(The)27 b(autogen-)515 3524 y(erator)f(will)h(do)h(it)g(for)f(y)n(ou.) +639 3623 y(The)20 b(c)n(hip)g(in)n(terface)f(of)h(the)g(autogenerator)e (is)h(em)n(b)r(edded)i(in)n(to)e(\020class)g(Chip\021.)34 -b(So)20 b(y)n(ou)515 2723 y(don't)28 b(ha)n(v)n(e)f(to)h(w)n(ork)f +b(So)20 b(y)n(ou)515 3723 y(don't)28 b(ha)n(v)n(e)f(to)h(w)n(ork)f (with)i(\020class)e(La)n(y)n(outGenerator\021)k(directly)-7 -b(.)39 b(Y)-7 b(ou'll)28 b(do)g(it)h(through)515 2822 +b(.)39 b(Y)-7 b(ou'll)28 b(do)g(it)h(through)515 3823 y(\020class)d(Chip\021)34 b(instead.)j(So)27 b(let's)h(lo)r(ok)f(at)g (\020class)g(Chip\021s)g(autogenerator)e(in)n(terface.)639 -2922 y(The)j(constructor)e(\(__init__\(\)\))h(has)g(some)g -(autogenerator)e(related)i(parameters:)515 3088 y Fe(c)m(hipP)m(ac)m(k) +3922 y(The)j(constructor)e(\(__init__\(\)\))h(has)g(some)g +(autogenerator)e(related)i(parameters:)515 4088 y Fe(c)m(hipP)m(ac)m(k) -5 b(age)43 b Fd(This)36 b(parameter)e(is)i(a)f(string)h(iden)n (tifying)g(the)g(pac)n(k)-5 b(age)34 b(t)n(yp)r(e)i(of)g(the)722 -3188 y(DUT)26 b(c)n(hip.)36 b(It)25 b(is)g(something)g(lik)n(e)f +4188 y(DUT)26 b(c)n(hip.)36 b(It)25 b(is)g(something)g(lik)n(e)f (\020DIP28\021)31 b(or)25 b(\020DIP40\021,)f(etc...)37 -b(.)f(If)25 b(this)h(param-)722 3287 y(eter)i(is)f(passed)g(to)g(the)h +b(.)f(If)25 b(this)h(param-)722 4287 y(eter)i(is)f(passed)g(to)g(the)h (constructor,)e(the)i(autogenerator)d(is)i(enabled.)515 -3453 y Fe(c)m(hipPin)-8 b(V)m(CCX)42 b Fd(This)34 b(parameter)e(is)i +4453 y Fe(c)m(hipPin)-8 b(V)m(CCX)42 b Fd(This)34 b(parameter)e(is)i (an)g(in)n(teger)f(sp)r(ecifying)h(the)h(V)n(CC)f(pin)g(on)g(the)722 -3553 y(c)n(hip)26 b(pac)n(k)-5 b(age.)35 b(Note)26 b(that)g(it)h(sp)r -(eci\034es)f(the)g(V)n(CC)g(pin)h(on)e(the)i(c)n(hip)f(pac)n(k)-5 -b(age)24 b(and)722 3653 y(_not_)h(on)g(the)g(ZIF)h(so)r(c)n(k)n(et.)35 -b(So)25 b(if)g(y)n(our)g(c)n(hip)g(datasheet)f(tells)i(y)n(ou)e(that)i -(V)n(CC)f(is)722 3752 y(on)j(pin)g(8,)f(y)n(ou)g(pass)f(an)i(8)f(here.) -515 3918 y Fe(c)m(hipPinsVPP)42 b Fd(This)27 b(parameter)e(is)i(an)f -(in)n(teger)g(or)h(a)f(list)h(of)g(in)n(tegers)f(sp)r(ecifying)h(the) -722 4018 y(VPP)34 b(pin\(s\))f(on)f(the)h(c)n(hip)f(pac)n(k)-5 -b(age.)49 b(Note)32 b(that)h(it)g(sp)r(eci\034es)f(the)h(V)n(CC)f(pin)g -(on)722 4118 y(the)27 b(c)n(hip)f(pac)n(k)-5 b(age)24 -b(and)i(_not_)g(on)f(the)i(ZIF)f(so)r(c)n(k)n(et.)35 -b(So)26 b(if)h(y)n(our)e(c)n(hip)h(datasheet)722 4217 -y(tells)35 b(y)n(ou)e(that)h(V)n(CC)g(is)g(on)g(pin)h(1,)g(y)n(ou)f -(pass)f(an)h(1)g(here.)56 b(If)34 b(y)n(our)f(c)n(hip)h(needs)722 -4317 y(m)n(ultiple)d(VPP)h(v)n(oltages,)d(just)i(pass)f(a)g(list)h(of)f -(pins.)46 b(Sp)r(ecify)31 b(all)f(p)r(ossible)g(VPP)722 -4416 y(pins)25 b(here.)35 b(Whic)n(h)25 b(pin)g(is)g(actually)e(activ) --5 b(ated)25 b(is)f(decided)h(later)f(in)h(applyVPP\(\).)515 -4583 y Fe(c)m(hipPinGND)41 b Fd(This)d(parameter)e(is)i(an)g(in)n -(teger)e(sp)r(ecifying)i(the)g(GND)h(pin)f(on)g(the)722 -4682 y(c)n(hip)26 b(pac)n(k)-5 b(age.)35 b(Note)26 b(that)g(it)h(sp)r +4553 y(c)n(hip)26 b(pac)n(k)-5 b(age.)35 b(Note)26 b(that)g(it)h(sp)r (eci\034es)f(the)g(V)n(CC)g(pin)h(on)e(the)i(c)n(hip)f(pac)n(k)-5 -b(age)24 b(and)722 4782 y(_not_)h(on)g(the)g(ZIF)h(so)r(c)n(k)n(et.)35 +b(age)24 b(and)722 4653 y(_not_)h(on)g(the)g(ZIF)h(so)r(c)n(k)n(et.)35 b(So)25 b(if)g(y)n(our)g(c)n(hip)g(datasheet)f(tells)i(y)n(ou)e(that)i -(V)n(CC)f(is)722 4881 y(on)j(pin)g(5,)f(y)n(ou)g(pass)f(an)i(5)f(here.) +(V)n(CC)f(is)722 4752 y(on)j(pin)g(8,)f(y)n(ou)g(pass)f(an)i(8)f(here.) 1926 5255 y(6)p eop end %%Page: 7 7 -TeXDict begin 7 6 bop 515 523 a Fd(After)28 b(passing)e(all)h -(parameters)f(to)h(the)h(\020class)e(Chip\021)34 b(constructor,)26 -b(the)i(autogenerator)515 623 y(is)c(initialized)h(and)f(ready)g(to)g -(b)r(e)h(used.)36 b(The)24 b(follo)n(wing)g(metho)r(ds)g(can)h(b)r(e)g -(used)f(to)g(apply)515 722 y(or)i(disable)i(a)f(la)n(y)n(out:)515 -888 y Fe(applyV)m(CCX\(on\))42 b Fd(This)27 b(metho)r(d)h(enables)f(or) -f(disables)g(\(dep)r(ending)i(on)f(the)h(param-)722 988 -y(eter\))37 b(a)f(la)n(y)n(out.)63 b(Enabling)37 b(the)g(la)n(y)n(out)f -(means)g(that)h(the)g(V)n(CCX)g(pin)g(will)g(b)r(e)722 -1088 y(activ)n(ely)22 b(driv)n(en)h(b)n(y)f(the)i(con\034gured)d(V)n -(CCX)j(v)n(oltage.)33 b(Disabling)23 b(the)g(la)n(y)n(out)f(will)722 -1187 y(tristate)27 b(the)h(driv)n(er.)515 1353 y Fe(applyVPP\(on,pac)m -(k)-5 b(agePinsT)d(oT)g(urnOn\))43 b Fd(This)18 b(metho)r(d)h(enables)f -(or)f(disables)h(\(de-)722 1453 y(p)r(ending)29 b(on)e(the)i -(parameter\))d(a)i(la)n(y)n(out.)37 b(Enabling)28 b(the)g(la)n(y)n(out) -f(means)g(that)i(the)722 1553 y(VPP)22 b(pins)f(will)f(b)r(e)h(activ)n -(ely)f(driv)n(en)g(b)n(y)g(the)h(con\034gured)e(VPP)j(v)n(oltage.)32 -b(Disabling)722 1652 y(the)g(la)n(y)n(out)d(will)j(tristate)e(the)i -(driv)n(er.)46 b(The)31 b(\034rst)g(parameter)e(\020on\021)37 -b(is)31 b(a)g(b)r(o)r(olean)722 1752 y(to)24 b(turn)g(ON)g(or)f(OFF)h -(the)g(VPP)h(la)n(y)n(out.)35 b(The)24 b(second)f(parameter)f(is)i(an)g -(optional)722 1851 y(list)f(of)g(pac)n(k)-5 b(age-pin-n)n(um)n(b)r(ers) -21 b(sp)r(ecifying)h(whic)n(h)h(VPP)h(is)f(turned)g(on.)35 -b(If)24 b(the)f(sec-)722 1951 y(ond)28 b(parameter)e(is)h(not)g -(passed,)g(all)g(p)r(ossible)g(VPPs)i(that)f(w)n(ere)e(sp)r(eci\034ed)i -(in)g(the)722 2051 y(constructor)21 b(are)h(turned)h(on.)34 -b(The)23 b(second)f(parameter)f(is)h(un)n(used,)i(if)f(\020on=F)-7 -b(alse\021.)515 2217 y Fe(applyGND\(on\))42 b Fd(This)34 -b(metho)r(d)g(enables)g(or)g(disables)f(\(dep)r(ending)i(on)f(the)h -(param-)722 2316 y(eter\))j(a)g(la)n(y)n(out.)67 b(Enabling)38 -b(the)g(la)n(y)n(out)f(means)h(that)g(the)g(GND)h(pins)f(will)h(b)r(e) -722 2416 y(activ)n(ely)27 b(driv)n(en)g(b)n(y)g(GND.)i(Disabling)e(the) -h(la)n(y)n(out)e(will)i(tristate)f(the)h(driv)n(er.)1926 -5255 y(7)p eop end +TeXDict begin 7 6 bop 515 523 a Fe(c)m(hipPinsVPP)42 +b Fd(This)27 b(parameter)e(is)i(an)f(in)n(teger)g(or)h(a)f(list)h(of)g +(in)n(tegers)f(sp)r(ecifying)h(the)722 623 y(VPP)d(pin\(s\))f(on)f(the) +h(c)n(hip)g(pac)n(k)-5 b(age.)33 b(Note)23 b(that)g(it)g(sp)r +(eci\034es)f(the)h(VPP)h(pin)f(on)f(the)722 722 y(c)n(hip)i(pac)n(k)-5 +b(age)22 b(and)h(_not_)f(on)i(the)f(ZIF)h(so)r(c)n(k)n(et.)34 +b(So)23 b(if)h(y)n(our)f(c)n(hip)g(datasheet)g(tells)722 +822 y(y)n(ou)28 b(that)h(VPP)h(is)f(on)f(pin)i(1,)e(y)n(ou)g(pass)g(a)g +(1)h(here.)40 b(If)29 b(y)n(our)e(c)n(hip)i(needs)g(m)n(ultiple)722 +922 y(VPP)f(v)n(oltages,)d(just)i(pass)f(a)g(list)h(of)f(pins.)37 +b(Sp)r(ecify)27 b(all)f(p)r(ossible)g(VPP)i(pins)f(here.)722 +1021 y(Whic)n(h)h(pin)g(is)g(actually)e(activ)-5 b(ated)28 +b(is)f(decided)h(later)f(in)h(applyVPP\(\).)515 1187 +y Fe(c)m(hipPinGND)41 b Fd(This)d(parameter)e(is)i(an)g(in)n(teger)e +(sp)r(ecifying)i(the)g(GND)h(pin)f(on)g(the)722 1287 +y(c)n(hip)25 b(pac)n(k)-5 b(age.)35 b(Note)25 b(that)g(it)h(sp)r +(eci\034es)f(the)h(GND)g(pin)f(on)g(the)h(c)n(hip)f(pac)n(k)-5 +b(age)23 b(and)722 1386 y(_not_)30 b(on)g(the)h(ZIF)f(so)r(c)n(k)n(et.) +44 b(So)30 b(if)h(y)n(our)e(c)n(hip)i(datasheet)e(tells)i(y)n(ou)f +(that)g(GND)722 1486 y(is)e(on)f(pin)h(5,)f(y)n(ou)g(pass)g(a)g(5)g +(here.)515 1652 y(After)h(passing)e(all)h(parameters)f(to)h(the)h +(\020class)e(Chip\021)34 b(constructor,)26 b(the)i(autogenerator)515 +1752 y(is)g(initialized)h(and)g(ready)f(to)h(b)r(e)g(used.)40 +b(The)29 b(follo)n(wing)f(\020class)f(Chip\021)36 b(metho)r(ds)29 +b(can)g(b)r(e)515 1851 y(used)e(to)h(enable)f(or)g(disable)g(a)g(la)n +(y)n(out:)515 2017 y Fe(applyV)m(CCX\(on\))42 b Fd(This)f(metho)r(d)g +(enables)f(or)g(disables)g(\(dep)r(ending)i(on)e(the)h(\020on\021)722 +2117 y(parameter\))34 b(the)i(V)n(CC)f(la)n(y)n(out.)58 +b(Enabling)35 b(the)h(la)n(y)n(out)e(means)g(that)i(the)f(V)n(CC)722 +2217 y(pin)29 b(will)g(b)r(e)g(activ)n(ely)f(driv)n(en)g(b)n(y)h(the)g +(con\034gured)e(V)n(CC)i(v)n(oltage.)38 b(Disabling)29 +b(the)722 2316 y(la)n(y)n(out)e(will)g(tristate)h(the)g(driv)n(er.)515 +2482 y Fe(applyVPP\(on,pac)m(k)-5 b(agePinsT)d(oT)g(urnOn\))43 +b Fd(This)18 b(metho)r(d)h(enables)f(or)f(disables)h(\(de-)722 +2582 y(p)r(ending)39 b(on)f(the)g(\020on\021)45 b(parameter\))37 +b(the)h(VPP)i(la)n(y)n(out.)67 b(Enabling)39 b(the)f(la)n(y)n(out)722 +2682 y(means)30 b(that)h(the)g(VPP)h(pins)f(will)g(b)r(e)g(activ)n(ely) +e(driv)n(en)h(b)n(y)g(the)h(con\034gured)f(VPP)722 2781 +y(v)n(oltage.)36 b(Disabling)27 b(the)h(la)n(y)n(out)f(will)g(tristate) +h(the)g(driv)n(er.)36 b(The)27 b(\034rst)h(parameter)722 +2881 y(\020on\021)i(is)24 b(a)f(b)r(o)r(olean)g(to)g(turn)h(ON)g(or)f +(OFF)g(the)h(VPP)h(la)n(y)n(out.)35 b(The)24 b(second)f(param-)722 +2980 y(eter)34 b(is)g(an)g(optional)g(list)g(of)h(pac)n(k)-5 +b(age-pin-n)n(um)n(b)r(ers)31 b(sp)r(ecifying)j(whic)n(h)h(VPP)g(is)722 +3080 y(turned)29 b(on.)40 b(If)30 b(the)f(second)f(parameter)f(is)i +(not)g(passed,)f(all)h(p)r(ossible)f(VPPs)i(that)722 +3180 y(w)n(ere)d(sp)r(eci\034ed)i(in)f(the)g(constructor)f(are)g +(turned)h(on.)38 b(The)28 b(second)g(parameter)e(is)722 +3279 y(un)n(used,)i(if)g(\020on=F)-7 b(alse\021.)515 +3445 y Fe(applyGND\(on\))42 b Fd(This)29 b(metho)r(d)h(enables)f(or)g +(disables)g(\(dep)r(ending)i(on)e(the)h(\020on\021)36 +b(pa-)722 3545 y(rameter\))25 b(the)h(GND)h(la)n(y)n(out.)35 +b(Enabling)26 b(the)g(la)n(y)n(out)e(means)h(that)h(the)g(GND)h(pins) +722 3645 y(will)41 b(b)r(e)g(activ)n(ely)f(driv)n(en)g(b)n(y)g(GND.)i +(Disabling)e(the)h(la)n(y)n(out)f(will)g(tristate)h(the)722 +3744 y(driv)n(er.)1926 5255 y(7)p eop end %%Trailer userdict /end-hook known{end-hook}if -- cgit v1.2.3