|  | /***************************************************************************** | 
|  |  | 
|  | Licensed to Accellera Systems Initiative Inc. (Accellera) under one or | 
|  | more contributor license agreements.  See the NOTICE file distributed | 
|  | with this work for additional information regarding copyright ownership. | 
|  | Accellera licenses this file to you under the Apache License, Version 2.0 | 
|  | (the "License"); you may not use this file except in compliance with the | 
|  | License.  You may obtain a copy of the License at | 
|  |  | 
|  | http://www.apache.org/licenses/LICENSE-2.0 | 
|  |  | 
|  | Unless required by applicable law or agreed to in writing, software | 
|  | distributed under the License is distributed on an "AS IS" BASIS, | 
|  | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | 
|  | implied.  See the License for the specific language governing | 
|  | permissions and limitations under the License. | 
|  |  | 
|  | *****************************************************************************/ | 
|  |  | 
|  | /***************************************************************************** | 
|  |  | 
|  | scfx_params.h - | 
|  |  | 
|  | Original Author: Martin Janssen, Synopsys, Inc. | 
|  |  | 
|  | *****************************************************************************/ | 
|  |  | 
|  | /***************************************************************************** | 
|  |  | 
|  | MODIFICATION LOG - modifiers, enter your name, affiliation, date and | 
|  | changes you are making here. | 
|  |  | 
|  | Name, Affiliation, Date: | 
|  | Description of Modification: | 
|  |  | 
|  | *****************************************************************************/ | 
|  |  | 
|  | // $Log: scfx_params.h,v $ | 
|  | // Revision 1.1.1.1  2006/12/15 20:20:04  acg | 
|  | // SystemC 2.3 | 
|  | // | 
|  | // Revision 1.3  2006/01/13 18:53:58  acg | 
|  | // Andy Goodrich: added $Log command so that CVS comments are reproduced in | 
|  | // the source. | 
|  | // | 
|  |  | 
|  | #ifndef __SYSTEMC_EXT_DT_FX_SCFX_PARAMS_HH__ | 
|  | #define __SYSTEMC_EXT_DT_FX_SCFX_PARAMS_HH__ | 
|  |  | 
|  | #include "sc_fxcast_switch.hh" | 
|  | #include "sc_fxtype_params.hh" | 
|  |  | 
|  | namespace sc_dt | 
|  | { | 
|  |  | 
|  | // classes defined in this module | 
|  | class scfx_params; | 
|  |  | 
|  |  | 
|  | // ---------------------------------------------------------------------------- | 
|  | //  CLASS : scfx_params | 
|  | // | 
|  | //  ... | 
|  | // ---------------------------------------------------------------------------- | 
|  |  | 
|  | class scfx_params | 
|  | { | 
|  | public: | 
|  | // constructor | 
|  | scfx_params(const sc_fxtype_params &, sc_enc, const sc_fxcast_switch &); | 
|  |  | 
|  | // query functions | 
|  | const sc_fxtype_params &type_params() const; | 
|  | sc_enc enc() const; | 
|  | const sc_fxcast_switch &cast_switch() const; | 
|  |  | 
|  | // shortcuts | 
|  | int wl() const; | 
|  | int iwl() const; | 
|  | int fwl() const; | 
|  | sc_q_mode q_mode() const; | 
|  | sc_o_mode o_mode() const; | 
|  | int n_bits() const; | 
|  |  | 
|  | // dump content | 
|  | void dump(::std::ostream &) const; | 
|  |  | 
|  | private: | 
|  | sc_fxtype_params m_type_params; | 
|  | sc_enc m_enc; | 
|  | sc_fxcast_switch m_cast_switch; | 
|  | }; | 
|  |  | 
|  |  | 
|  | // IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII | 
|  |  | 
|  | // constructor | 
|  | inline scfx_params::scfx_params(const sc_fxtype_params &type_params_, | 
|  | sc_enc enc_, | 
|  | const sc_fxcast_switch &cast_sw) : | 
|  | m_type_params(type_params_), m_enc(enc_), m_cast_switch(cast_sw) | 
|  | { | 
|  | if (m_enc == SC_US_ && m_type_params.o_mode() == SC_WRAP_SM) { | 
|  | SC_REPORT_ERROR("invalid overflow mode", | 
|  | "SC_WRAP_SM not defined for unsigned numbers"); | 
|  | // may continue, if suppressed | 
|  | } | 
|  | } | 
|  |  | 
|  | // query functions | 
|  | inline const sc_fxtype_params & | 
|  | scfx_params::type_params() const | 
|  | { | 
|  | return m_type_params; | 
|  | } | 
|  |  | 
|  | inline sc_enc | 
|  | scfx_params::enc() const | 
|  | { | 
|  | return m_enc; | 
|  | } | 
|  |  | 
|  | inline const sc_fxcast_switch & | 
|  | scfx_params::cast_switch() const | 
|  | { | 
|  | return m_cast_switch; | 
|  | } | 
|  |  | 
|  | // shortcuts | 
|  | inline int | 
|  | scfx_params::wl() const | 
|  | { | 
|  | return m_type_params.wl(); | 
|  | } | 
|  |  | 
|  | inline int | 
|  | scfx_params::iwl() const | 
|  | { | 
|  | return m_type_params.iwl(); | 
|  | } | 
|  |  | 
|  | inline int | 
|  | scfx_params::fwl() const | 
|  | { | 
|  | return (m_type_params.wl() - m_type_params.iwl()); | 
|  | } | 
|  |  | 
|  | inline sc_q_mode | 
|  | scfx_params::q_mode() const | 
|  | { | 
|  | return m_type_params.q_mode(); | 
|  | } | 
|  |  | 
|  | inline sc_o_mode | 
|  | scfx_params::o_mode() const | 
|  | { | 
|  | return m_type_params.o_mode(); | 
|  | } | 
|  |  | 
|  | inline int | 
|  | scfx_params::n_bits() const | 
|  | { | 
|  | return m_type_params.n_bits(); | 
|  | } | 
|  |  | 
|  | // dump content | 
|  | inline void | 
|  | scfx_params::dump(::std::ostream &os) const | 
|  | { | 
|  | os << "scfx_params" << ::std::endl; | 
|  | os << "(" << ::std::endl; | 
|  | os << "type_params = "; | 
|  | m_type_params.dump( os ); | 
|  | os << "enc         = " << m_enc << ::std::endl; | 
|  | os << "cast_switch = "; | 
|  | m_cast_switch.dump( os ); | 
|  | os << ")" << ::std::endl; | 
|  | } | 
|  |  | 
|  | } // namespace sc_dt | 
|  |  | 
|  | #endif // __SYSTEMC_EXT_DT_FX_SCFX_PARAMS_HH__ |