1 / 14

MicroTESK : An Extendable Framework for Test Program Generation

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)

kioshi
Download Presentation

MicroTESK : An Extendable Framework for Test Program Generation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. CPU design • Hardware Description Languages (HDL) • Verilog • VHDL SYRCoSE 2013 – May 30, 2013 – Kazan, Russia

  3. 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

  4. 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

  5. Framework ? Random Combinatorial Model-based Template-based SYRCoSE 2013 – May 30, 2013 – Kazan, Russia

  6. MicroTESKframework ModelingFramework Translator ModelingLibrary Specifications ModelGenerator CoverageLibrary CoverageExtractor DesignLibrary Model Design Model Coverage Model TestingFramework TestingLibrary TestTemplateProcessor TestDataGenerators TestTemplates TestSequenceGenerators ConstraintSolverEngine ExternalSolvers TestPrograms

  7. MicroTESKplugin DesignAspect FrameworkPlugin Core Modeling InstructionSet Translator Library Extensions MemoryManagement Testing TestGenerators Pipelining Solvers User Defined SYRCoSE 2013 – May 30, 2013 – Kazan, Russia

  8. 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

  9. 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

  10. 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

  11. 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

  12. Conclusion • Framework architecture • Support for common generation techniques • Extendibility with other methods • Flexible open-source environment SYRCoSE 2013 – May 30, 2013 – Kazan, Russia

  13. 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

  14. Thankyou! Questions? SYRCoSE 2013 – May 30, 2013 – Kazan, Russia

More Related