12#define ID_MASK 0x7800000
14#define REG1_MASK 0x7c0000
16#define REG2_MASK 0x3e000
18#define BIT_MASK 0x1f00
19#define CYCLE_OFFSET 32
20#define EXTENSION_MASK 0xff
21#define DEPENDENCY_OFFSET 27
22#define DEPENDENCY_MASK 0x78000000
51 void GetMultivariateProbingSets(std::vector<std::vector<Software::ProbesStruct>>& OneSimulationStandardProbes,
SettingsStruct& Settings,
Software::TestStruct& Test, std::vector<std::tuple<uint32_t, uint32_t>>& OrderOverTwoCombination, std::vector<std::vector<uint32_t>>& ProbeInfoToStandardProbe, uint32_t ThreadIndex, uint32_t SimulationIndex);
78 void CreateNormalProbe(std::vector<uint8_t>& NormalProbesRegister, std::vector<Software::ProbesStruct>& StandardProbes, std::vector<std::vector<uint8_t>>& ProbeValueRegister, uint32_t& ProbeIndex, uint64_t& ProbeInfo, uint32_t RegisterTransitionCycle, uint32_t InstrNr, uint64_t SimulationIdx, uint32_t DestinationRegisterValue, uint8_t RegNr);
90 void CreateHorizontalProbe(std::vector<Software::ProbesStruct>& StandardProbes, uint32_t RegisterTransitionCycle, uint8_t ExtensionSize, uint32_t& ProbeIndex, uint32_t InstrNr, uint8_t RegisterNumber);
101 void CreateLargeVerticalProbe(std::vector<Software::ProbesStruct>& StandardProbes, uint64_t& ProbeInfo , uint32_t& ProbeIndex, uint32_t TransCycleRegNr, uint32_t TransCyclePartnerRegNr);
112 void CreateSmallVerticalProbe(std::vector<Software::ProbesStruct>& StandardProbes, uint64_t& ProbeInfo , uint32_t& ProbeIndex, uint32_t TransCycleRegNr, uint32_t CyclePartnerRegNr);
123 void CreateLargeFullHorizontalProbe(std::vector<Software::ProbesStruct>& StandardProbes, uint64_t& ProbeInfo , uint32_t& ProbeIndex, uint32_t TransCycleRegNr, uint32_t TransCyclePartnerRegNr);
134 void CreateSmallFullHorizontalProbe(std::vector<Software::ProbesStruct>& StandardProbes, uint64_t& ProbeInfo , uint32_t& ProbeIndex, uint32_t TransCycleRegNr, uint32_t CyclePartnerRegNr);
150 void CreateLargeFullVerticalProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& FullVerticalProbes, uint8_t BitIdx, uint8_t RegNr, uint32_t& ProbeIndex, uint64_t ProbeInfo, std::vector<uint32_t>& RegisterValues, uint32_t TransValueRegNr, uint32_t TransValuePC, uint32_t TransValuePSR);
166 void CreateSmallFullVerticalProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& FullVerticalProbes, uint8_t BitIdx, uint8_t RegNr1, uint8_t RegNr2, uint32_t& ProbeIndex, uint64_t ProbeInfo, std::vector<uint32_t>& RegisterValues, uint32_t TransValueReg1, uint32_t TransValueReg2);
180 void CreateOneRegisterOnlyFullVerticalProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& FullVerticalProbes, uint8_t BitIdx, uint8_t RegNr1, uint32_t& ProbeIndex, uint64_t ProbeInfo, std::vector<uint32_t>& RegisterValues, uint32_t TransValueRegNr);
198 void CreateDSPLargeFullVerticalProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& FullVerticalProbes, uint8_t BitIdx, uint8_t low_RegNr, uint8_t high_RegNr, uint32_t& ProbeIndex, uint64_t ProbeInfo, std::vector<uint32_t>& RegisterValues, uint32_t TransValueLowRegNr, uint32_t TransValueHighRegNr, uint32_t TransValuePC, uint32_t TransValuePSR);
215 void CreateDSPSmallFullVerticalProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& FullVerticalProbes, uint8_t BitIdx, uint8_t low_RegNr, uint8_t high_RegNr, uint32_t& ProbeIndex, uint64_t ProbeInfo, std::vector<uint32_t>& RegisterValues, uint32_t TransValueLowRegNr, uint32_t TransValueHighRegNr, uint32_t TransValuePC);
230 void CreateMemShadowProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& MemoryShadowRegisterProbesIncluded, uint64_t ProbeInfo, uint32_t& ProbeIndex, uint32_t memory_shadow_register, uint32_t next_shadow_register_value, uint32_t TransitionCycle);
246 void CreateSeperateLoadStoreMemShadowProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& MemoryShadowRegisterProbesIncluded, uint32_t RegNr, uint32_t InstrNr, uint32_t& ProbeIndex, uint32_t load_store_memory_shadow_register, uint32_t next_load_store_shadow_register_value, uint32_t TransitionCycle, uint32_t ExtensionSize, uint32_t LoadStoreFlag);
260 void CreateHorizontalMemShadowProbe(std::vector<Software::ProbesStruct>& StandardProbes, uint32_t InstrNr, uint32_t& ProbeIndex, uint8_t RegNr, uint32_t memory_shadow_register, uint32_t next_shadow_register_value, uint32_t TransitionCycle, uint32_t ExtensionSize);
273 void CreatePipelineForwardingProbe(std::vector<Software::ProbesStruct>& StandardProbes, std::vector<uint8_t>& PipelineForwardingProbes, uint8_t BitIdx, uint32_t& ProbeIndex, uint64_t ProbeInfo, uint32_t NrOfPipelineStages, std::vector<::mulator::CPU_State>& pipeline_cpu_states);
void CreateHorizontalProbe(std::vector< Software::ProbesStruct > &StandardProbes, uint32_t RegisterTransitionCycle, uint8_t ExtensionSize, uint32_t &ProbeIndex, uint32_t InstrNr, uint8_t RegisterNumber)
Create a Horizontal Probe.
void ExtractAllProbeInfo(uint8_t &Register, uint8_t &Id, uint8_t &PartnerRegister, uint32_t &Cycle, uint8_t &Bit, uint16_t &ExtensionSize, uint8_t &Dependency, Software::ProbesStruct &ProbeFromProbingSet)
extract all informations from probe info
void CreateNormalProbe(std::vector< uint8_t > &NormalProbesRegister, std::vector< Software::ProbesStruct > &StandardProbes, std::vector< std::vector< uint8_t > > &ProbeValueRegister, uint32_t &ProbeIndex, uint64_t &ProbeInfo, uint32_t RegisterTransitionCycle, uint32_t InstrNr, uint64_t SimulationIdx, uint32_t DestinationRegisterValue, uint8_t RegNr)
Create a Normal Probe object.
void ExtractIdProbeInfo(uint8_t &Id, Software::ProbesStruct &ProbeFromProbingSet)
extract id from probe info
void CreateSmallFullVerticalProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &FullVerticalProbes, uint8_t BitIdx, uint8_t RegNr1, uint8_t RegNr2, uint32_t &ProbeIndex, uint64_t ProbeInfo, std::vector< uint32_t > &RegisterValues, uint32_t TransValueReg1, uint32_t TransValueReg2)
Create a Small Full Vertical Probe object.
void ExtractBitProbeInfo(uint8_t &Bit, Software::ProbesStruct &ProbeFromProbingSet)
extract bit index from probe info
void CreateDSPSmallFullVerticalProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &FullVerticalProbes, uint8_t BitIdx, uint8_t low_RegNr, uint8_t high_RegNr, uint32_t &ProbeIndex, uint64_t ProbeInfo, std::vector< uint32_t > &RegisterValues, uint32_t TransValueLowRegNr, uint32_t TransValueHighRegNr, uint32_t TransValuePC)
Create a.
void GetMultivariateProbingSets(std::vector< std::vector< Software::ProbesStruct > > &OneSimulationStandardProbes, SettingsStruct &Settings, Software::TestStruct &Test, std::vector< std::tuple< uint32_t, uint32_t > > &OrderOverTwoCombination, std::vector< std::vector< uint32_t > > &ProbeInfoToStandardProbe, uint32_t ThreadIndex, uint32_t SimulationIndex)
Get the Multivariate Probing Sets object.
void FillHigherOrderRedundantCases(std::vector< std::vector< uint32_t > > &)
void CreatePipelineForwardingProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &PipelineForwardingProbes, uint8_t BitIdx, uint32_t &ProbeIndex, uint64_t ProbeInfo, uint32_t NrOfPipelineStages, std::vector<::mulator::CPU_State > &pipeline_cpu_states)
Create a Pipeline Forwarding Probe probe.
void Multivariate_AddCombinationToProbingSet(Software::ProbingSetStruct &ProbingSet, std::vector< Software::ProbesStruct > &Combination, std::vector< std::tuple< uint32_t, uint32_t > > &OrderOverTwoCombination, std::vector< std::vector< uint32_t > > &ProbeMapping, std::vector< std::vector< uint32_t > > &ResolvedProbes, uint32_t TestOrder)
void ExtractDependencyProbeInfo(uint8_t &Dependency, Software::ProbesStruct &ProbeFromProbingSet)
Extract the dependency from probe info.
void CreateSmallFullHorizontalProbe(std::vector< Software::ProbesStruct > &StandardProbes, uint64_t &ProbeInfo, uint32_t &ProbeIndex, uint32_t TransCycleRegNr, uint32_t CyclePartnerRegNr)
Create a Small Full Horizontal Probe.
void CreateDSPLargeFullVerticalProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &FullVerticalProbes, uint8_t BitIdx, uint8_t low_RegNr, uint8_t high_RegNr, uint32_t &ProbeIndex, uint64_t ProbeInfo, std::vector< uint32_t > &RegisterValues, uint32_t TransValueLowRegNr, uint32_t TransValueHighRegNr, uint32_t TransValuePC, uint32_t TransValuePSR)
void CreateLargeFullVerticalProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &FullVerticalProbes, uint8_t BitIdx, uint8_t RegNr, uint32_t &ProbeIndex, uint64_t ProbeInfo, std::vector< uint32_t > &RegisterValues, uint32_t TransValueRegNr, uint32_t TransValuePC, uint32_t TransValuePSR)
Create a Large Full Vertical Probe.
void CreateSmallVerticalProbe(std::vector< Software::ProbesStruct > &StandardProbes, uint64_t &ProbeInfo, uint32_t &ProbeIndex, uint32_t TransCycleRegNr, uint32_t CyclePartnerRegNr)
Create a Small Vertical Probe.
void RedundancyFullHorizontalProbe(std::vector< std::vector< uint32_t > > &)
void RedundancyHorizontalProbe(std::vector< std::vector< uint32_t > > &)
bool InDistance(Software::SettingsStruct &Settings, std::vector< Software::ProbesStruct > &ProbingSet)
void CreateLargeVerticalProbe(std::vector< Software::ProbesStruct > &StandardProbes, uint64_t &ProbeInfo, uint32_t &ProbeIndex, uint32_t TransCycleRegNr, uint32_t TransCyclePartnerRegNr)
Create a Large Vertical Probe.
void RedundancyNormalProbe(std::vector< std::vector< uint32_t > > &)
void ProbeInfoToStandardProbeMapping(std::vector< std::vector< uint32_t > > &ProbeMapping, Software::HelperStruct &Helper, Software::SettingsStruct &Setting)
void ExtractRegisterProbeInfo(uint8_t &Register, Software::ProbesStruct &ProbeFromProbingSet)
extract register from probe info
void ExtractExtensionSizeProbeInfo(uint16_t &ExtensionSize, Software::ProbesStruct &ProbeFromProbingSet)
Extract the extension size from probe info.
void ExtractCycleProbeInfo(uint32_t &Cycle, Software::ProbesStruct &ProbeFromProbingSet)
extract cycle from probe info
void CreateOneRegisterOnlyFullVerticalProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &FullVerticalProbes, uint8_t BitIdx, uint8_t RegNr1, uint32_t &ProbeIndex, uint64_t ProbeInfo, std::vector< uint32_t > &RegisterValues, uint32_t TransValueRegNr)
Create a One Register Only Full Vertical Probe object.
void CreateMemShadowProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &MemoryShadowRegisterProbesIncluded, uint64_t ProbeInfo, uint32_t &ProbeIndex, uint32_t memory_shadow_register, uint32_t next_shadow_register_value, uint32_t TransitionCycle)
Create a Mem Shadow Probe probe.
void RedundancyFullVerticalProbe(std::vector< std::vector< uint32_t > > &)
void CreateHorizontalMemShadowProbe(std::vector< Software::ProbesStruct > &StandardProbes, uint32_t InstrNr, uint32_t &ProbeIndex, uint8_t RegNr, uint32_t memory_shadow_register, uint32_t next_shadow_register_value, uint32_t TransitionCycle, uint32_t ExtensionSize)
Create a Horizontal Mem Shadow Probe probe.
uint32_t MemoryConsumption()
void CreateLargeFullHorizontalProbe(std::vector< Software::ProbesStruct > &StandardProbes, uint64_t &ProbeInfo, uint32_t &ProbeIndex, uint32_t TransCycleRegNr, uint32_t TransCyclePartnerRegNr)
Create a Large Full Horizontal Probe.
void Univariate_AddCombinationToProbingSet(Software::ProbingSetStruct &ProbingSet, std::vector< Software::ProbesStruct > &Combination, std::vector< std::tuple< uint32_t, uint32_t > > &OrderOverTwoCombination, std::vector< std::vector< uint32_t > > &ProbeMapping, std::vector< std::vector< uint32_t > > &ResolvedProbes, uint32_t TestOrder)
void RedundancyVerticalProbe(std::vector< std::vector< uint32_t > > &)
void CreateSeperateLoadStoreMemShadowProbe(std::vector< Software::ProbesStruct > &StandardProbes, std::vector< uint8_t > &MemoryShadowRegisterProbesIncluded, uint32_t RegNr, uint32_t InstrNr, uint32_t &ProbeIndex, uint32_t load_store_memory_shadow_register, uint32_t next_load_store_shadow_register_value, uint32_t TransitionCycle, uint32_t ExtensionSize, uint32_t LoadStoreFlag)
Create a Seperate Load Store Mem Shadow Probe probe.
void GetProbingSets(Software::ThreadSimulationStruct &ThreadSimulation, SettingsStruct &Settings, Software::TestStruct &Test, std::vector< std::tuple< uint32_t, uint32_t > > &OrderOverTwoCombination, std::vector< std::vector< uint32_t > > &ProbeInfoToStandardProbe, uint64_t SimulationIndex)
Generate probing sets from single probes, does it for any order and univariate and multivariate.
Defines a struct that track meta information for probes.
Defines how every probe during simulation looks like.
Defines all settings regarding software simulations.
Defines all settings belonging to the test prodecure.
Defines a struct that tracks necessary information for thread simulation.