140 likes | 253 Views
RAS. ISP. MicroTESK : An Extendable Framework for Test Program Generation. Alexander Kamkin , Tatiana Sergeeva , Andrei Tatarnikov , Artemiy Utekhin { kamkin , leonsia , andrewt , utekhin }@ ispras.ru. Institute for System Programming of the Russian Academy of Sciences (ISPRAS)
E N D
RAS ISP MicroTESK: AnExtendableFrameworkforTestProgramGeneration Alexander Kamkin, Tatiana Sergeeva, Andrei Tatarnikov, ArtemiyUtekhin {kamkin, leonsia, andrewt, utekhin}@ispras.ru Institute for System Programming of the Russian Academy of Sciences (ISPRAS) http://hardware.ispras.ru SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
CPU design • Hardware Description Languages (HDL) • Verilog • VHDL SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
0x2000: lui ... 0x2004: ori ... 0x2008: ori ... 0x200c: lui ... 0x2010: add ... 0x2014: sub ... 0x2018: add ... 0x2000: lui ... 0x2004: ori ... 0x2008: ori ... 0x200c: lui ... 0x2010: add ... 0x2014: sub ... 0x2018: add ... lui s1, 0xdead ori s1, s1, 0x0 lui s3, 0xbeef ori s3, s3, 0xf add v0, a0, a2 sub t1, t3, t5 add t7, s1, s3 CPU verification Target CPU (HDL) Execution traces (formatted text) Trace comparator (Perl, Python) Test programs (assembler) Reference simulator (C/C++) SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Test program generation ? Design • Random (RAVEN) • Combinatorial (MicroTESK v1) • Template-based (Genesys-Pro) • Model-based (research projects) Requirements Test programs SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Framework ? Random Combinatorial Model-based Template-based SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
MicroTESKframework ModelingFramework Translator ModelingLibrary Specifications ModelGenerator CoverageLibrary CoverageExtractor DesignLibrary Model Design Model Coverage Model TestingFramework TestingLibrary TestTemplateProcessor TestDataGenerators TestTemplates TestSequenceGenerators ConstraintSolverEngine ExternalSolvers TestPrograms
MicroTESKplugin DesignAspect FrameworkPlugin Core Modeling InstructionSet Translator Library Extensions MemoryManagement Testing TestGenerators Pipelining Solvers User Defined SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Specification example op ADD(rd:GPR,rs:GPR, rt:GPR) action = { if(NotWordValue(rs) || NotWordValue(rt)) then UNPREDICTABLE(); endif; tmp_word = rs<31..31>::rs<31..0> + rt<31..31>::rt<31..0>; if(tmp_word<32..32> != tmp_word<31..31>) then SignalException("IntegerOverflow"); else rd = sign_extend(tmp_word<31..0>); endif; } syntax= format("add %s, %s, %s", rd.syntax, rs.syntax, rt.syntax) op ALU = ADD | SUB | … Precondition Test Situations Equivalence Classes SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Template example # Assembly -Style Code add r[1], r[2], r[3] sub r[1], r[1], r[4] # Ruby Control Statements (1..3).each do |i| add r[i], r[i+1], r[i+2] sub r[i], r[i], r[i+3] end # Test Sequence Block block (:engine => ”random”, :count => 2013) { add r[1], r[2], r[3] sub r[1], r[2], r[3] # Test Situation Reference do overflow end } SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Test sequence generator # Combination (1, 1) sub r[d], r[e], r[f] # Block A ld r[k], r[l] # Block B div r[i], r[j] # Block A st r[m], r[n] # Block B add r[a], r[b], r[c] # Block A # Combination (1, 2) st r[m], r[n] # Block B sub r[d], r[e], r[f] # Block A ld r[k], r[l] # Block B div r[i], r[j] # Block A add r[a], r[b], r[c] # Block A # Combination (2, 1) mult r[g], r[h] # Block A mult r[g], r[h] # Block A ld r[k], r[l]# Block B add r[a], r[b], r[c] # Block A st r[m], r[n] # Block B # Combination (2, 2) mult r[g], r[h]# Block A st r[m], r[n] # Block B mult r[g], r[h]# Block A ld r[k], r[l] # Block B add r[a], r[b], r[c]# Block A # Test Sequence Block block (:combine => ”product”, :compose => ”random”) { # Nested Block A block (:engine => ”random”, :length => 3, :count => 2) { add r[a], r[b], r[c] sub r[d], r[e], r[f] mult r[g], r[h] div r[i], r[j] } # Nested Block B block (:engine => ”permutate” ) { ld r[k], r[l] st r[m], r[n] } } • Combinator • Compositor SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Constraint solver engine Collection of solvers: • Universal • Custom MicroTESK framework uses Java Constraint Solver API http://forge.ispras.ru/projects/solver-api SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Conclusion • Framework architecture • Support for common generation techniques • Extendibility with other methods • Flexible open-source environment SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Contact information • Institute for System Programming of RAS (ISPRAS) • http://www.ispras.ru • MicroTESK Test Program Generatorhttp://forge.ispras.ru/projects/microtesk • Tatiana Sergeeva • leonsia@ispras.ru SYRCoSE 2013 – May 30, 2013 – Kazan, Russia
Thankyou! Questions? SYRCoSE 2013 – May 30, 2013 – Kazan, Russia