Top Banner
The Verification Problem Emulation Case Studies Summary Emulation On Your Desktop Nirajnayan Sharma Head, Engineering and Marketing - India Bluespec, Inc. [email protected] March 12, 2010 Nirajnayan Sharma Emulation On Your Desktop
27

Emulation on Your Desktop

Jul 09, 2015

Download

Technology

DVClub
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

Emulation On Your Desktop

Nirajnayan Sharma

Head, Engineering and Marketing - IndiaBluespec, Inc.

[email protected]

March 12, 2010

Nirajnayan Sharma Emulation On Your Desktop

Page 2: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

Outline

1 The Verification Problem

2 EmulationFirst Generation EmulationNext Generation Emulation

3 Case StudiesAXI SwitchCMU ProtoFLEX

4 Summary

Nirajnayan Sharma Emulation On Your Desktop

Page 3: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

Outline

1 The Verification Problem

2 EmulationFirst Generation EmulationNext Generation Emulation

3 Case StudiesAXI SwitchCMU ProtoFLEX

4 Summary

Nirajnayan Sharma Emulation On Your Desktop

Page 4: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

Simulation – The Fundamental Verification Bottleneck

Simulations are great for DOA and initial testingSimulators allow the highest visibility into the hardwareSimulations remain the best method for the debug-fix-verifycycle

However . . .Speed quickly becomes a limiting factor in the verification ofcomplex systems

System simulations which can last days1 sec of D1 H.264 encode => 15 hoursLinux boot initialization => 140 hours . . .

Nirajnayan Sharma Emulation On Your Desktop

Page 5: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

Outline

1 The Verification Problem

2 EmulationFirst Generation EmulationNext Generation Emulation

3 Case StudiesAXI SwitchCMU ProtoFLEX

4 Summary

Nirajnayan Sharma Emulation On Your Desktop

Page 6: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

From Simulation To Emulation!"#$%&'()*+,-./&$,"0

1-./&$,"0

2&'3%&'(

4'&3,$,"0&/*5.'(*+,-

674*-"8(3*$"*

1-./&$"'

674*9*5('#"'-&0:(;

:',$,:&/*4<*-"8(3*$"*

1-./&$"'

!"#$%#&'&((')*+,-.&

!"#$#!"#$%#&'&(

(')*+,-.&

/-++#"0,,1-%-23#+$%2-#

+,$.414+'#5%51*+$+#$+#56752-%,#

,0#89!

+5((3.5*=>>>?*@*=>A>>>?

89!

Nirajnayan Sharma Emulation On Your Desktop

Page 7: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

First Generation Emulation

Emulation when used effectively can be a game-changer, butexisting systems are . . .

Expensive – difficult to justify except at the highest-endComplexity – co-emulation link API requires bit-level datapacking and timing synchronization!"#$%&'&(")*+*,(-./'&"#

012(31

4)51#

61%&7#"8#(1&'#9

7#"&"3"/%

61%&*

:1)3;

<7=>*:"?*+*@-./'&"#7;9%(3'/

A()$

61%&*B1)3;

01%(C)

D"+1-./'&(")*/()$*

Nirajnayan Sharma Emulation On Your Desktop

Page 8: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

First Generation Emulation . . .

Emulation when used effectively can be a game-changer, butexisting systems are . . .

Difficult to remove bottlenecks between testbench andDUT resulting in unrealized performance

Complex test-benches from simulation will not port intoemulation

!"#$%&'&(")*+*,(-./'&"#

012(31

4)51#

61%&7#"8#(1&'#9

7#"&"3"/%

61%&*

:1)3;

<7=>*:"?*+*@-./'&"#7;9%(3'/

A()$

61%&*B1)3;

01%(C)

D"+1-./'&(")*/()$*

Nirajnayan Sharma Emulation On Your Desktop

Page 9: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

First Generation Emulation . . .

Emulation when used effectively can be a game-changer, butexisting systems are . . .

Limited to later in the development cycle when RTL hasreached a critical point in verification

Only functional after a lot of verification (includingarchitectural and spec) have already been completed

!"#$%&'&(")*+*,(-./'&"#

012(31

4)51#

61%&7#"8#(1&'#9

7#"&"3"/%

61%&*

:1)3;

<7=>*:"?*+*@-./'&"#7;9%(3'/

A()$

61%&*B1)3;

01%(C)

D"+1-./'&(")*/()$*

Nirajnayan Sharma Emulation On Your Desktop

Page 10: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

Next Generation Emulation

!"#$%"

&'(")

*"+,*"+,-."'%/

01',/"+$2345"-*"+,-

."'%/

63%,7)

87)9+,3,$7'-:-0$;<53,7) =>[email protected])(-:-A;<53,7)

63%,7) 63%,7)

63%,7)&0.&0.

>BCDA>BCDA

A,/")'",A,/")'",

EEEEEE

>/1+$%35>/1+$%35

F$'9F$'9

0BADGC>)7,7%75

H

I@F

0BADGC>)7,7%75

H

I@F

Hardware Abstraction Layer – decouples userapplication from physical layer

Proprietary or standard (USB, Ethernet, PCI-E, . . . ), serialor parallel physical linkWork with high-level data structuresLow-level link data and timing details hidden

Nirajnayan Sharma Emulation On Your Desktop

Page 11: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

Next Generation Emulation . . .

!"#$%"

&'(")

*"+,*"+,-."'%/

01',/"+$2345"-*"+,-

."'%/

63%,7)

87)9+,3,$7'-:-0$;<53,7) =>[email protected])(-:-A;<53,7)

63%,7) 63%,7)

63%,7)&0.&0.

>BCDA>BCDA

A,/")'",A,/")'",

EEEEEE

>/1+$%35>/1+$%35

F$'9F$'9

0BADGC>)7,7%75

H

I@F

0BADGC>)7,7%75

H

I@F

SCE-MIStandardized API and communication protocol to take fulladvantage of emulation performanceBoth on hardware and software sidesEnsures simulation and emulation componentinter-operability

Nirajnayan Sharma Emulation On Your Desktop

Page 12: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

Next Generation Emulation . . .

!"#$%"

&'(")

*"+,*"+,-."'%/

01',/"+$2345"-*"+,-

."'%/

63%,7)

87)9+,3,$7'-:-0$;<53,7) =>[email protected])(-:-A;<53,7)

63%,7) 63%,7)

63%,7)&0.&0.

>BCDA>BCDA

A,/")'",A,/")'",

EEEEEE

>/1+$%35>/1+$%35

F$'9F$'9

0BADGC>)7,7%75

H

I@F

0BADGC>)7,7%75

H

I@F

Transactors – Virtual termination of external designinterfaces

Help eliminate link bottlenecks by converting from timedbit-level to untimed transaction-level

Nirajnayan Sharma Emulation On Your Desktop

Page 13: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

Next Generation Emulation . . .

!"#$%"

&'(")

*"+,*"+,-."'%/

01',/"+$2345"-*"+,-

."'%/

63%,7)

87)9+,3,$7'-:-0$;<53,7) =>[email protected])(-:-A;<53,7)

63%,7) 63%,7)

63%,7)&0.&0.

>BCDA>BCDA

A,/")'",A,/")'",

EEEEEE

>/1+$%35>/1+$%35

F$'9F$'9

0BADGC>)7,7%75

H

I@F

0BADGC>)7,7%75

H

I@F

Synthesizable testbenchHelps eliminate bottlenecks in the simulator andco-emulation linkAllow debug instrumentation to be placed around the DUTwithout affecting performance

Nirajnayan Sharma Emulation On Your Desktop

Page 14: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

First Generation EmulationNext Generation Emulation

Next Generation Emulation . . .

!"#$%"

&'(")

*"+,*"+,-."'%/

01',/"+$2345"-*"+,-

."'%/

63%,7)

87)9+,3,$7'-:-0$;<53,7) =>[email protected])(-:-A;<53,7)

63%,7) 63%,7)

63%,7)&0.&0.

>BCDA>BCDA

A,/")'",A,/")'",

EEEEEE

>/1+$%35>/1+$%35

F$'9F$'9

0BADGC>)7,7%75

H

I@F

0BADGC>)7,7%75

H

I@F

Emulator – Commodity FPGAsMust move to commodity FPGAs and support virtualizationof FPGA platforms (portability)Allows tracking of latest FPGA technology at lowest cost

Nirajnayan Sharma Emulation On Your Desktop

Page 15: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

Outline

1 The Verification Problem

2 EmulationFirst Generation EmulationNext Generation Emulation

3 Case StudiesAXI SwitchCMU ProtoFLEX

4 Summary

Nirajnayan Sharma Emulation On Your Desktop

Page 16: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

AXI Switch Performance Validation!"#$%&'&(")

*+*'%&,#+-#'..(/

0,),#'&"#%+1+-#')%'/&"#% 2+34'5,%

*+*'%&,#

-#'..(/+6(#,/&"#%

*

*

*

3

3

3

3

3

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:+

3;(&/<

=6>-?

*89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

!"#$*:%&%'()

>3@

3,#('4(A,#B6,%,#('4(A,#+

C"B,DE4'&(")+F()$ *+G+2+89:+3;(&/<

HI08+@"'#JI<K%(/'4+

F()$

3&'&(%&(/%

-/4L-$+0>:

3&'&(%&(/%

89:+-#'..(/+

6(#,/&"#

DUT and emulation setupAXI switch as DUTConfigurable number of masters and slavesImplemented on ML507 Virtex-5 board

Nirajnayan Sharma Emulation On Your Desktop

Page 17: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

AXI Switch Performance Validation . . .!"#$%&'&(")

*+*'%&,#+-#'..(/

0,),#'&"#%+1+-#')%'/&"#% 2+34'5,%

*+*'%&,#

-#'..(/+6(#,/&"#%

*

*

*

3

3

3

3

3

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:+

3;(&/<

=6>-?

*89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

!"#$*:%&%'()

>3@

3,#('4(A,#B6,%,#('4(A,#+

C"B,DE4'&(")+F()$ *+G+2+89:+3;(&/<

HI08+@"'#JI<K%(/'4+

F()$

3&'&(%&(/%

-/4L-$+0>:

3&'&(%&(/%

89:+-#'..(/+

6(#,/&"#

Test setupDirected random trafficTraffic generator and analyzer split between simulator andemulator

Nirajnayan Sharma Emulation On Your Desktop

Page 18: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

AXI Switch Performance Validation . . .!"#$%&'&(")

*+*'%&,#+-#'..(/

0,),#'&"#%+1+-#')%'/&"#% 2+34'5,%

*+*'%&,#

-#'..(/+6(#,/&"#%

*

*

*

3

3

3

3

3

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:+

3;(&/<

=6>-?

*89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

!"#$*:%&%'()

>3@

3,#('4(A,#B6,%,#('4(A,#+

C"B,DE4'&(")+F()$ *+G+2+89:+3;(&/<

HI08+@"'#JI<K%(/'4+

F()$

3&'&(%&(/%

-/4L-$+0>:

3&'&(%&(/%

89:+-#'..(/+

6(#,/&"#

Test setup . . .Simulator’s GUI configures and analyzes traffic patternsAXI Traffic Director transmits traffic configurationparameters to emulator

Nirajnayan Sharma Emulation On Your Desktop

Page 19: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

AXI Switch Performance Validation . . .!"#$%&'&(")

*+*'%&,#+-#'..(/

0,),#'&"#%+1+-#')%'/&"#% 2+34'5,%

*+*'%&,#

-#'..(/+6(#,/&"#%

*

*

*

3

3

3

3

3

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:+

3;(&/<

=6>-?

*89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

!"#$*:%&%'()

>3@

3,#('4(A,#B6,%,#('4(A,#+

C"B,DE4'&(")+F()$ *+G+2+89:+3;(&/<

HI08+@"'#JI<K%(/'4+

F()$

3&'&(%&(/%

-/4L-$+0>:

3&'&(%&(/%

89:+-#'..(/+

6(#,/&"#

Test setup . . .Emulator has AXI Traffic Generators configured fromsimulator sideRAM modules serve as memory-mapped slaves

Nirajnayan Sharma Emulation On Your Desktop

Page 20: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

AXI Switch Performance Validation . . .

!"#$%&'&(")

*+*'%&,#+-#'..(/

0,),#'&"#%+1+-#')%'/&"#% 2+34'5,%

*+*'%&,#

-#'..(/+6(#,/&"#%

*

*

*

3

3

3

3

3

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:+

3;(&/<

=6>-?

*89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

!"#$*:%&%'()

>3@

3,#('4(A,#B6,%,#('4(A,#+

C"B,DE4'&(")+F()$ *+G+2+89:+3;(&/<

HI08+@"'#JI<K%(/'4+

F()$

3&'&(%&(/%

-/4L-$+0>:

3&'&(%&(/%

89:+-#'..(/+

6(#,/&"#

SCE-MI communication – consistent framework forimplementing untimed communication between simulatorand emulator

Nirajnayan Sharma Emulation On Your Desktop

Page 21: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

AXI Switch Performance Validation . . .

!"#$%&'&(")

*+*'%&,#+-#'..(/

0,),#'&"#%+1+-#')%'/&"#% 2+34'5,%

*+*'%&,#

-#'..(/+6(#,/&"#%

*

*

*

3

3

3

3

3

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:+

3;(&/<

=6>-?

*89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

!"#$*:%&%'()

>3@

3,#('4(A,#B6,%,#('4(A,#+

C"B,DE4'&(")+F()$ *+G+2+89:+3;(&/<

HI08+@"'#JI<K%(/'4+

F()$

3&'&(%&(/%

-/4L-$+0>:

3&'&(%&(/%

89:+-#'..(/+

6(#,/&"#

HAL automatically serializes and de-serializes transactionlevel communication through the USB

Nirajnayan Sharma Emulation On Your Desktop

Page 22: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

AXI Switch Performance Validation . . .

!"#$%&'&(")

*+*'%&,#+-#'..(/

0,),#'&"#%+1+-#')%'/&"#% 2+34'5,%

*+*'%&,#

-#'..(/+6(#,/&"#%

*

*

*

3

3

3

3

3

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

78*

34'5,

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:

*'%&,#+

9'/&"#

89:+

3;(&/<

=6>-?

*89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

89:+-#'..(/+

0,),#'&"#

!"#$*:%&%'()

>3@

3,#('4(A,#B6,%,#('4(A,#+

C"B,DE4'&(")+F()$ *+G+2+89:+3;(&/<

HI08+@"'#JI<K%(/'4+

F()$

3&'&(%&(/%

-/4L-$+0>:

3&'&(%&(/%

89:+-#'..(/+

6(#,/&"#

Performance – entire system runs at 50 MHz in emulationon the board.

Nirajnayan Sharma Emulation On Your Desktop

Page 23: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

CMU ProtoFLEX – Accelerating Software ValidationFor many SoCs software development and verification can dominate development cycle

!"#$%&'()*+,

-./%00%0

*12%#*3

4567#8

!

!"#$9$%8:

5"."8;

5<=$:%;">%0(0%?"8%

1=()*+,(@7/#"8(@1#

81.69$%A"=$%=;"?%

B5,(@9=8$"1=7C"$<

5D(1=(**3

@1#(C%;;(@#%E9%=$

B5,(@9=8$"1=7C"$<

F%;$(1@(@9CC(;<;$%.

G12AC7$%=8<

:"H:A/7=02"0$:

81..9="87$"1=

IJ."8#1A$#7=;6C7=$KL

-$:%#=%$

81..9="87$"1=

IJ$#7=;6C7=$KL

Virtutech SimicsVirtutech Simics – Commercial SW simulator for wholesystems (OS/devices/apps)Despite clever tricks, steady slowdown for each addedthread and for each added bit of instrumentation

Nirajnayan Sharma Emulation On Your Desktop

Page 24: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

CMU ProtoFLEX . . .

!"#$%&'()*+,

-./%00%0

*12%#*3

4567#8

!

!"#$9$%8:

5"."8;

5<=$:%;">%0(0%?"8%

1=()*+,(@7/#"8(@1#

81.69$%A"=$%=;"?%

B5,(@9=8$"1=7C"$<

5D(1=(**3

@1#(C%;;(@#%E9%=$

B5,(@9=8$"1=7C"$<

F%;$(1@(@9CC(;<;$%.

G12AC7$%=8<

:"H:A/7=02"0$:

81..9="87$"1=

IJ."8#1A$#7=;6C7=$KL

-$:%#=%$

81..9="87$"1=

IJ$#7=;6C7=$KL

CMU ProtoFLEXFully operational model of 16-cpu UltraSPARC III SunFire3800 Server, running unmodified Solaris 8; running onFPGA at 90 MHzHybrid simulation – continue to use Simics for modelingrest of system (I/O devices, ...)

Nirajnayan Sharma Emulation On Your Desktop

Page 25: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

AXI SwitchCMU ProtoFLEX

CMU ProtoFLEX . . .!"#$%&'()*+,

-./%00%0

*12%#*3

4567#8

!

!"#$9$%8:

5"."8;

5<=$:%;">%0(0%?"8%

1=()*+,(@7/#"8(@1#

81.69$%A"=$%=;"?%

B5,(@9=8$"1=7C"$<

5D(1=(**3

@1#(C%;;(@#%E9%=$

B5,(@9=8$"1=7C"$<

F%;$(1@(@9CC(;<;$%.

G12AC7$%=8<

:"H:A/7=02"0$:

81..9="87$"1=

IJ."8#1A$#7=;6C7=$KL

-$:%#=%$

81..9="87$"1=

IJ$#7=;6C7=$KL

CMU ProtoFLEXBenchmarks

TPC-C OLTP on Oracle 10g Enterprise Database ServerSPECINT (bzip2, crafty, gcc, gzip, parser, vortex)

Performance: 10-60 MIPS. 39x faster than Virtutech Simicsalone on same system/benchmarkWritten by 1 graduate student (Eric Chung) in 1 year

Nirajnayan Sharma Emulation On Your Desktop

Page 26: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

Outline

1 The Verification Problem

2 EmulationFirst Generation EmulationNext Generation Emulation

3 Case StudiesAXI SwitchCMU ProtoFLEX

4 Summary

Nirajnayan Sharma Emulation On Your Desktop

Page 27: Emulation on Your Desktop

The Verification ProblemEmulation

Case StudiesSummary

SummaryIf you had a 50-100 MHz emulation platform on your desktop right from the start?

FPGA densities and parallel interconnect speeds todayallow

Significant unit verification to be done in a single FPGAComplete chips to be cost effectively emulated on FPGAboards and systems

A well-engineered co-emulation stack and linkvirtualization are key to enabling mainstream use

Ensure simple and rapid bringupFlexible hardware-software partitioningPortability across hardware and applications

Paired with a general-purpose high-level synthesis language, awell productized co-emulation stack can enable mass-adoptionof emulation.

Nirajnayan Sharma Emulation On Your Desktop