00001 /******************************************************************************* 00002 * Copyright (c) 2006 International Business Machines Corporation 00003 * All rights reserved. This program and the accompanying materials 00004 * are made available under the terms of the Common Public License v1.0 00005 * which accompanies this distribution, and is available at 00006 * http://www.opensource.org/licenses/cpl1.0.php 00007 * 00008 * Contributors: 00009 * Douglas Sprague, Joel Wheeler - initial API and implementation 00010 * 00011 *****************************************************************************/ 00012 00013 #ifndef STILScanChain_H 00014 #define STILScanChain_H 00015 00016 #include "stilcom.h" // Common 00017 #include "stilcomstr.h" 00018 #include "stilblock.h" // STIL Block common base class 00019 #include "stilnamelist.h" 00020 00021 00022 //--------------------------------------------------------------------------- 00028 //--------------------------------------------------------------------------- 00029 class STILScanChain : public STILBlock { 00030 00031 public: 00032 00033 // - The scan inversion type, may be 0 or 1 (-1 if undefined) 00034 typedef BOOLEAN STILScanInversionType; 00035 00036 // - Default Constructor 00037 STILScanChain(); 00038 00039 // - Copy Constructor 00040 STILScanChain(const STILScanChain &); 00041 00042 // - Destructor which frees storage associated to a STILScanChain object 00043 virtual ~STILScanChain(); 00044 00045 // - Assignment operator 00046 STILScanChain & operator=(const STILScanChain &); 00047 00048 // - Member function to initialize an object (default is global domain name) 00049 void init(const sstring& domain=""); 00050 00051 // - Member function to write the object 00052 virtual void write(FILE * pOutFile, LONG indentation=0) const; 00053 00054 // - Member functions to set/get ScanLength 00055 void setScanLength(LONG); 00056 LONG getScanLength() const; 00057 00058 // - Member functions to set/get ScanOutLength 00059 void setScanOutLength(LONG); 00060 LONG getScanOutLength() const; 00061 00062 // - Member functions to set/get ScanCells 00063 void setScanCells(const STILNameList&); 00064 const STILNameList& getScanCells() const; 00065 00066 // - Member functions to set/get ScanIn 00067 void setScanIn(const sstring&); 00068 const sstring& getScanIn() const; 00069 00070 // - Member functions to set/get ScanOut 00071 void setScanOut(const sstring&); 00072 const sstring& getScanOut() const; 00073 00074 // - Member functions to set/get ScanMasterClock 00075 void setScanMasterClock(const STILNameList&); 00076 const STILNameList& getScanMasterClock() const; 00077 00078 // - Member functions to set/get ScanSlaveClock 00079 void setScanSlaveClock(const STILNameList&); 00080 const STILNameList& getScanSlaveClock() const; 00081 00082 // - Member functions to set/get ScanInversion 00083 void setScanInversion(STILScanInversionType); 00084 STILScanInversionType getScanInversion() const; 00085 00086 private: 00087 00088 LONG m_scanLen; 00089 LONG m_scanOutLen; 00090 STILNameList m_scanCells; 00091 sstring m_scanIn; 00092 sstring m_scanOut; 00093 STILNameList m_scanMasterClk; 00094 STILNameList m_scanSlaveClk; 00095 STILScanInversionType m_scanInv; 00096 00097 00098 }; //end class STILScanChain 00099 00100 // Inlines: /////////////////////////////////////////////////////////////////// 00101 //-------------------------------------------------------------------------- 00109 //-------------------------------------------------------------------------- 00110 inline void STILScanChain::setScanLength(LONG sl) { m_scanLen = sl; } 00111 00112 //-------------------------------------------------------------------------- 00120 //-------------------------------------------------------------------------- 00121 inline LONG STILScanChain::getScanLength() const { return m_scanLen; } 00122 00123 //-------------------------------------------------------------------------- 00131 //-------------------------------------------------------------------------- 00132 inline void STILScanChain::setScanOutLength(LONG sol) { m_scanOutLen = sol; } 00133 00134 //-------------------------------------------------------------------------- 00142 //-------------------------------------------------------------------------- 00143 inline LONG STILScanChain::getScanOutLength() const { return m_scanOutLen; } 00144 00145 //-------------------------------------------------------------------------- 00153 //-------------------------------------------------------------------------- 00154 inline void STILScanChain::setScanCells(const STILNameList& sc) { m_scanCells = sc; } 00155 00156 //-------------------------------------------------------------------------- 00164 //-------------------------------------------------------------------------- 00165 inline const STILNameList& STILScanChain::getScanCells() const { return m_scanCells; } 00166 00167 //-------------------------------------------------------------------------- 00175 //-------------------------------------------------------------------------- 00176 inline void STILScanChain::setScanIn(const sstring& si) { m_scanIn = si; } 00177 00178 //-------------------------------------------------------------------------- 00186 //-------------------------------------------------------------------------- 00187 inline const sstring& STILScanChain::getScanIn() const { return m_scanIn; } 00188 00189 //-------------------------------------------------------------------------- 00197 //-------------------------------------------------------------------------- 00198 inline void STILScanChain::setScanOut(const sstring& so) { m_scanOut = so; } 00199 00200 //-------------------------------------------------------------------------- 00208 //-------------------------------------------------------------------------- 00209 inline const sstring& STILScanChain::getScanOut() const { return m_scanOut; } 00210 00211 //-------------------------------------------------------------------------- 00219 //-------------------------------------------------------------------------- 00220 inline void STILScanChain::setScanMasterClock(const STILNameList& smc) { m_scanMasterClk = smc; } 00221 00222 //-------------------------------------------------------------------------- 00230 //-------------------------------------------------------------------------- 00231 inline const STILNameList& STILScanChain::getScanMasterClock() const { return m_scanMasterClk; } 00232 00233 //-------------------------------------------------------------------------- 00241 //-------------------------------------------------------------------------- 00242 inline void STILScanChain::setScanSlaveClock(const STILNameList& ssc) { m_scanSlaveClk = ssc; } 00243 00244 //-------------------------------------------------------------------------- 00252 //-------------------------------------------------------------------------- 00253 inline const STILNameList& STILScanChain::getScanSlaveClock() const { return m_scanSlaveClk; } 00254 00255 //-------------------------------------------------------------------------- 00263 //-------------------------------------------------------------------------- 00264 inline void STILScanChain::setScanInversion(STILScanChain::STILScanInversionType si) { m_scanInv = si; } 00265 00266 //-------------------------------------------------------------------------- 00274 //-------------------------------------------------------------------------- 00275 inline STILScanChain::STILScanInversionType STILScanChain::getScanInversion() const { return m_scanInv; } 00276 00277 #endif