 |
Belle II Software
release-05-02-19
|
14 #ifndef TRGCDCJSignal_FLAG_
15 #define TRGCDCJSignal_FLAG_
23 #ifdef TRGCDC_SHORT_NAMES
24 #define JSignal TRGCDCJSignal
33 class TRGCDCJSignalData;
49 TRGCDCJSignal(
signed long long const& intValue,
double const& toReal,
signed long long const& minInt,
50 signed long long const& maxInt,
double const& actual,
double const& minActual,
double const& maxActual,
int const& finishClock,
86 TRGCDCJSignal const& reference, std::vector<std::vector<TRGCDCJSignal> > data,
int targetClock);
89 TRGCDCJSignal const& reference, std::vector<std::vector<TRGCDCJSignal> >& data);
96 static void ifElse(std::vector<std::pair<
TRGCDCJSignal, std::vector<std::pair<TRGCDCJSignal*, TRGCDCJSignal> > > >& data,
99 static void ifElse(std::vector<std::pair<
TRGCDCJSignal, std::vector<std::pair<TRGCDCJSignal*, TRGCDCJSignal> > > >& data);
101 TRGCDCJSignal const limit(
signed long long minInt,
signed long long maxInt,
double minActual,
double maxActual)
const;
117 signed long long const& maxInt,
double const& actual,
double const& minActual,
double const& maxActual,
int const& finishClock);
122 signed long long const& maxInt,
double const& actual,
double const& minActual,
double const& maxActual,
int const& finishClock);
136 void setName(std::string name);
138 void setInt(
signed long long value);
164 signed long long getInt()
const;
186 std::vector<std::pair<std::string, std::vector<int> > >
const getArgumentSignals()
const;
192 int calType(
double minValue)
const;
196 int calBitwidth(
int type,
signed long long minInt,
signed long long maxInt);
238 std::string& targtVhdlCode);
243 std::vector<std::pair<std::string, std::vector<int> > >
const& fromVhdlSignals,
int const& finishClock,
244 std::map<std::string, std::vector<int> >& buffers);
249 std::vector<std::vector<TRGCDCJSignal> >
const& data);
256 void checkInt(std::string name)
const;
261 static void valuesToMapSignals(std::vector<std::tuple<std::string, double, int, double, double, int> >
const& inValues,
266 static void mapSignalsToValues(std::map<std::string, Belle2::TRGCDCJSignal>
const& inMap,
267 std::vector<std::pair<std::string, int> >
const& inChoose,
268 std::vector<std::tuple<std::string, double, int, double, double, int> >& outValues);
void setVhdlOutputFile(std::string filename)
Sets ouptut VHDL filename.
signed long long getInt() const
Get integer value of signal.
int calFinishClock() const
Claculates the clock tick where the signal is valid.
void checkInt(std::string name) const
Checks underflow or overflow for TRGCDCJSignal.
static std::string replaceWithSignalNames(std::string const &fromVhdlCode, std::vector< std::pair< std::string, std::vector< int > > > const &fromVhdlSignals, int const &finishClock, std::map< std::string, std::vector< int > > &buffers)
Writes final vhdl code.
std::string m_name
Memebers.
TRGCDCJSignalData * m_commonData
The common JSignalData.
signed long long m_minInt
The minimum integer value.
static signed long long calInt(double value, TRGCDCJSignal const &mother)
Calculates integer value with unit of a TRGCDCJSignal.
void setName(std::string name)
Setters, Getters Sets name of signal.
void setPrintVhdl(bool printVhdl)
Sets print flag for signal.
const TRGCDCJSignal operator-() const
Unary operator.
static std::string chooseVhdlCode(TRGCDCJSignal const &target, TRGCDCJSignal const &reference, std::vector< std::vector< TRGCDCJSignal > > const &data)
Writes the choose vhdl code.
void initArgumentSignals()
Initializes the argument signals for the signal.
static void choose(TRGCDCJSignal &target, TRGCDCJSignal const &targetMin, TRGCDCJSignal const &targetMax, TRGCDCJSignal const &reference, std::vector< std::vector< TRGCDCJSignal > > data, int targetClock)
Case method.
static const TRGCDCJSignal slvToSigned(TRGCDCJSignal const &in, double const &toReal, signed long long const &minInt, signed long long const &maxInt, double const &actual, double const &minActual, double const &maxActual, int const &finishClock)
Change slv to signed with target clock.
TRGCDCJSignalData * getCommonData() const
Get the sharged JSignalData.
void toUnsignedVhdlCode()
Changes signal type to unsigned type in VHDL.
int getType() const
Get type of signal.
void setCommonData(TRGCDCJSignalData *)
Sets JSignalData to signal.
void initVhdlCode()
Initializes the vhdl code.
double m_minActual
The minimum float value.
double getActual() const
Get float value of signal.
const TRGCDCJSignal operator+(TRGCDCJSignal const &rhs) const
Arithmetic add operator.
A class to use Signals for TRGCDC 3D tracker.
int getFinishClock() const
Gets clock tick where signal is make.
static TRGCDCJSignal comp(TRGCDCJSignal const &lhs, std::string operate, TRGCDCJSignal const &rhs)
Compare two signals.
int m_type
Type of signal.
TRGCDCJSignal & operator<=(TRGCDCJSignal const &rhs)
Assign operator.
int calType() const
Calculated what type the signal is.
int m_bitsize
+1: unsigned.
double getRealMinInt() const
Get converted float value of minimum integer.
signed long long calMinInteger() const
Calculate min value for a binary number.
std::vector< bool > m_slv
storage for std_logic_vector. (Will be deprecated.)
double getMinActual() const
Get minimum float value of signal.
double getRealMaxInt() const
Get converted float value of maximum integer.
const TRGCDCJSignal invOffset(TRGCDCJSignal const &valueMin) const
Outputs a signal that is not offset.
std::string getVhdlOutputFile() const
Gets the vhdl output file name.
A class to hold common data for JSignals.
bool m_debug
The debug flag.
void toSignedVhdlCode()
Changes signal type to signed type in VHDL.
static void vhdlCode(TRGCDCJSignal const &first, std::string operation, TRGCDCJSignal const &second, TRGCDCJSignal const &result, std::string &targtVhdlCode)
Writes vhdl code using two signals.
Abstract base class for different kinds of events.
double m_toReal
The toReal value.
double getBitsize() const
Get bitwidth of signal.
bool orderLargestBitsize(TRGCDCJSignal &large, TRGCDCJSignal &small) const
Orders the TRGCDCJSignals by bitsize. Next priority is unsigned, signed, minus unsigned....
double getToReal() const
Get toReal value of signal.
const TRGCDCJSignal shift(int nBits, int operate=1) const
Shift signal. Shift direction is right. operate=0 to change m_toReal(unit).
int calBitwidth() const
Calculates the bit width.
void setFinishClock(int finishClock)
Sets finish clock of signal.
static const TRGCDCJSignal unsignedToSlv(TRGCDCJSignal const &in)
Change unsigned to slv.
static void mapSignalsToValues(std::map< std::string, Belle2::TRGCDCJSignal >const &inMap, std::vector< std::pair< std::string, int > > const &inChoose, std::vector< std::tuple< std::string, double, int, double, double, int > > &outValues)
Choose => [signalName, FpgaEffects(=1)/NoFpgaEffects(=0)] Values => [name, value, bitwidth,...
int m_finishClock
Holds the clock tick when the signal is valid.
void matchUnit(TRGCDCJSignal &first, TRGCDCJSignal &second) const
Utilities.
static void combineArguments(TRGCDCJSignal const &first, TRGCDCJSignal const &second, TRGCDCJSignal &result)
Combines arguments of signals.
const TRGCDCJSignal offset(TRGCDCJSignal const &valueMin) const
Outputs an offset signal which is an unsigned signal.
double getRealInt() const
Get converted float value of integer.
const TRGCDCJSignal operator*(TRGCDCJSignal const &rhs) const
Arithmetic multiply operator.
static void calVhdlTypeBitwidth(TRGCDCJSignal const &first, std::string &operation, TRGCDCJSignal const &second, int &type, int &bitwidth)
Calculates vhdl bitwidth and type for operation.
static const TRGCDCJSignal signedToSlv(TRGCDCJSignal const &in)
Change signed to slv.
bool getPrintVhdl() const
Gets the print vhdl flag from common JSignalData class.
const TRGCDCJSignal limit(signed long long minInt, signed long long maxInt, double minActual, double maxActual) const
Limits min and max values using specific integers. Use only for ifElse. Doesn't check overflow,...
static void ifElse(std::vector< std::pair< TRGCDCJSignal, std::vector< std::pair< TRGCDCJSignal *, TRGCDCJSignal > > > > &data, int targetClock)
If else implementation with target clock.
void setDebug(bool debug)
Sets debug flag for signal.
~TRGCDCJSignal()
Destructor.
static const TRGCDCJSignal toSlv(TRGCDCJSignal const &in, int test)
Change signal to std_logic_vector using vector<bool>. (Will be deprecated.)
static void valuesToMapSignals(std::vector< std::tuple< std::string, double, int, double, double, int > > const &inValues, Belle2::TRGCDCJSignalData *inCommonData, std::map< std::string, Belle2::TRGCDCJSignal > &outMap)
Values => [name, value, bitwidth, min, max, clock] Changes values to signals.
void dump() const
Methods.
const std::vector< std::pair< std::string, std::vector< int > > > getArgumentSignals() const
Gets the signal names and values that made this signal.
static const TRGCDCJSignal slvToUnsigned(TRGCDCJSignal const &in, double const &toReal, signed long long const &minInt, signed long long const &maxInt, double const &actual, double const &minActual, double const &maxActual, int const &finishClock)
Change slv to unsigned with target clock.
const TRGCDCJSignal resize(int bitwidth) const
Resizes signal.
void setInt(signed long long value)
Sets integer value of signal.
void printVhdl(std::string &vhdlCode)
Prints vhdl code.
double getMaxActual() const
Get maximum float value of signal.
signed long long getMaxInt() const
Get maximum integer value of signal.
std::string getName() const
Get name of signal.
static const TRGCDCJSignal absolute(TRGCDCJSignal const &first)
Absolute TRGCDCJSignal. Removes 1 bit if signed or minus unsigned.
signed long long m_maxInt
The maximum integer value.
void setToReal(double value)
Sets toReal factor of signal.
double m_maxActual
The maximum float value.
std::vector< std::pair< std::string, std::vector< int > > > m_argumentSignals
vector<int> is {type, bitwidth, clock} Holds the arguments that made the signal.
void setBitsize(int bitsize)
Sets bitwidth of signal.
signed long long calMaxInteger() const
Calculate max value for a binary number.
void setActual(double value)
Sets float value of signal.
TRGCDCJSignal & assignTo(TRGCDCJSignal const &rhs, int targetClock, std::string &finalCode)
Assign operator with setting target clock with outputing final code.
double m_actual
The float value.
signed long long getMinInt() const
Get minimum integer value of signal.
void swap(TRGCDCJSignal &first, TRGCDCJSignal &second) const
Swaps the TRGCDCJSignals.
void setType(int type)
Sets type of signal.
static std::string ifElseVhdlCode(std::vector< std::pair< TRGCDCJSignal, std::vector< std::pair< TRGCDCJSignal *, TRGCDCJSignal > > > > const &data)
Writes the ifElse vhdl code.
static bool isSameSignal(TRGCDCJSignal const &lhs, TRGCDCJSignal const &rhs)
Checks if signal is same signal.
std::string getVhdlCode() const
Gets the vhdl code for the signal.
signed long long m_int
integer value of signal.
TRGCDCJSignal()
Constructor.
static std::string assignVhdlCode(TRGCDCJSignal const &target, TRGCDCJSignal const &from)
Writes the assign vhdl code.
std::string m_vhdlCode
Holds the vhdl code.