14 #ifndef CIRCT_DIALECT_LLHD_SIMULATOR_TRACE_H
15 #define CIRCT_DIALECT_LLHD_SIMULATOR_TRACE_H
33 llvm::raw_ostream &
out;
34 std::unique_ptr<State>
const &
state;
40 std::vector<std::pair<std::string, std::string>>
changes;
44 std::map<std::pair<std::string, int>, std::string>
lastValue;
47 void pushChange(
unsigned inst,
unsigned sigIndex,
int elem);
64 Trace(std::unique_ptr<State>
const &
state, llvm::raw_ostream &
out,
73 void flush(
bool force =
false);
The simulator's internal representation of time.
std::vector< bool > isTraced
void flush(bool force=false)
Flush the changes buffer to the output stream.
void addChangeMerged(unsigned)
Add a merged change to the change buffer.
std::map< std::pair< std::string, int >, std::string > lastValue
void pushChange(unsigned inst, unsigned sigIndex, int elem)
Push one change to the changes vector.
void addChange(unsigned)
Add a value change to the trace changes buffer.
void flushFull()
Flush the changes buffer to the output stream with full format.
std::vector< std::pair< std::string, std::string > > changes
std::unique_ptr< State > const & state
void pushAllChanges(unsigned inst, unsigned sigIndex)
Push one change for each element of a signal if it is of a structured type, or the full signal otherw...
Trace(std::unique_ptr< State > const &state, llvm::raw_ostream &out, TraceMode mode)
void sortChanges()
Sorts the changes buffer lexicographically wrt. the hierarchical paths.
std::map< std::pair< unsigned, int >, std::string > mergedChanges
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.