VSYML Ocaml Meeting 2009

download VSYML Ocaml Meeting 2009

of 34

Transcript of VSYML Ocaml Meeting 2009

  • VHDL Symbolic simulator in OCaml

    Florent Ouchet [email protected] Labs GINP UJF CNRS VDS group

    OCaml Meeting 2009Grenoble France

    04/02/2009

  • Florent Ouchet OCaml meeting 2009 Grenoble France2

    Outline

    VSYML Vhdl Symbolic Simulator in ocaML:

    Symbolic simulation goals Why OCaml? Application structure and limitations of OCaml in

    this context Perspectives Conclusion

  • Florent Ouchet OCaml meeting 2009 Grenoble France3

    Symbolic simulation goals

    Model is needed for:

    Model checking: equivalence of IC implementation and specification;

    Other formal methods based on the model: (ANR project FME3) analysis of error consequences using formal methods.

  • Florent Ouchet OCaml meeting 2009 Grenoble France4

    Symbolic simulation goalsIntegrated circuit synthesis flow:

    Modeling level

    RegisterTransfert Level

    Gate Level

    Layout

    Chips

    FSM, complex types

    Explicit time,behavioral

    Boolean type

    Drawing of transistorsand wires

    Manual refinements

    Automatic synthesis

    Placing and routing

    Manufacturing

  • Florent Ouchet OCaml meeting 2009 Grenoble France5

    Symbolic simulation goalsExisting symbolic simulators:

    Modeling level

    Register TransfertLevel

    Gate Level

    Layout

    Chips

    FSM, complex types

    Explicit time,behavioral

    Boolean type

    Drawing of transistorsand wires

    VOSS/Forte(Intel CAD Labs)

  • Florent Ouchet OCaml meeting 2009 Grenoble France6

    Symbolic simulation goalsExisting symbolic simulators:

    Modeling level

    Register TransfertLevel

    Gate Level

    Layout

    Chips

    FSM, complex types

    Explicit time,behavioral

    Boolean type

    Drawing of transistorsand wires

    VSYML

  • Florent Ouchet OCaml meeting 2009 Grenoble France7

    Symbolic simulation goals

    Integrated CircuitDescription

    Design Under Test(DUT)

    Xt=0 nsXt=1 nsYt=0 nsYt=1 ns

    Xt=0 + Yt=1 ?

    Description written in VHDL (IEEE Std 1076.1TM 2007)Symbolic values depend on the time.

  • Florent Ouchet OCaml meeting 2009 Grenoble France8

    Why OCaml?

    Expression patterns: X@1ns 1 unary_operator X (not abs) X assoc_operator Y (+ * and or xor xnor) X binary_operator Y (nand nor ^ = /= < > =) X other_operator Y (mod rem / -) (total of 28 patterns)

  • Florent Ouchet OCaml meeting 2009 Grenoble France9

    Why OCaml?

    type formula =| FormulaSymbol of symbol| FormulaImmediateInt of big_int| FormulaUnaryOperator of (unary_operator*formula)| FormulaAssociativeOperator of (assoc_operator*formula list)| FormulaBinaryOperator of (binary_operator*formula*formula)| FormulaOtherOperator of (other_operator*formula*formula list)|

  • Florent Ouchet OCaml meeting 2009 Grenoble France10

    Why OCaml?

    Known expression patterns are rewritten (numeric evaluation);

    As in the standard, the simulation algorithm is intrinsically free of side effects.

  • Florent Ouchet OCaml meeting 2009 Grenoble France11

    Why OCaml?

    ProcessA

    ProcessB

    ProcessC

    The next value of each signal is computed from current values.

    DUT

  • Florent Ouchet OCaml meeting 2009 Grenoble France12

    Why OCaml?

    ProcessA

    ProcessB

    ProcessC

    The processes are executed until the design is stabilized.

    DUT

  • Florent Ouchet OCaml meeting 2009 Grenoble France13

    Why OCaml?

    ProcessA

    ProcessB

    ProcessC

    The processes are executed until the design is stabilized.

    DUT

  • Florent Ouchet OCaml meeting 2009 Grenoble France14

    Why OCaml?

    ProcessA

    ProcessB

    ProcessC

    The processes are executed until the design is stabilized.

    DUT

  • Florent Ouchet OCaml meeting 2009 Grenoble France15

    Why OCaml?

    ProcessA

    ProcessB

    ProcessC

    The processes are executed until the design is stabilized.

    DUT

  • Florent Ouchet OCaml meeting 2009 Grenoble France16

    Why OCaml?

    ProcessA

    ProcessB

    ProcessC

    The processes are executed until the design is stabilized.

    DUT

  • Florent Ouchet OCaml meeting 2009 Grenoble France17

    Why OCaml?

    ProcessA

    ProcessB

    ProcessC

    The processes are executed until the design is stabilized.

    DUT

  • Florent Ouchet OCaml meeting 2009 Grenoble France18

    Why OCaml?

    Strong type checking (compared to C, Pascal): confidence in computations;

    Lexer/parser generator;

    Free software, its ancestor was written in Mathematica;

    Lightweight and easy to redist (Java, C#, F#).

  • Florent Ouchet OCaml meeting 2009 Grenoble France19

    Application structure

    VSYMLVHDL

    source filesDesign model

    parameters

    Standalone and automated application.

  • Florent Ouchet OCaml meeting 2009 Grenoble France20

    Application structure

    Some facts: Over 26500 lines of code 24 dedicated modules (types, basics, lexer,

    parser, resources, evaluators, converters, volume extrusion, top-level)

  • Florent Ouchet OCaml meeting 2009 Grenoble France21

    Application structure

    Straightforward conversion from BNF rules (language spec)

    No syntax for optional tokens

    Debugging conflicts is a nightmare

    VHDL source files(thousands lines)

    Lexer(59 states, 1058 transitions)

    Parser(695 grammar rules,1318 states)

    Abstractsyntax tree

  • Florent Ouchet OCaml meeting 2009 Grenoble France22

    Application structure

    Some basic functions are missing in OCaml standard libraries

    Issue 4662 closed as wont fix

    Abstractsyntax tree

    Design elaboration

    Simulationstructure tree

  • Florent Ouchet OCaml meeting 2009 Grenoble France23

    Application structure

    A function to map a list of functions to the same parameter:

    (a -> b) list -> a -> b list

    A function to remove the n first list elements:

    a list -> int -> a list

  • Florent Ouchet OCaml meeting 2009 Grenoble France24

    Application structure

    Unbounded integers in VHDL (32 bits at least - "Time" requires 64 bits)

    Simulation of design on n bits

    Big_int

    Abstractsyntax tree

    Design elaboration

    Simulationstructure tree

  • Florent Ouchet OCaml meeting 2009 Grenoble France25

    Application structure

    Big_int is an abstract type

    (=) () on Big_int raise runtime exceptions

    Associative list functions based on (=)

    Abstractsyntax tree

    Design elaboration

    Simulationstructure tree

  • Florent Ouchet OCaml meeting 2009 Grenoble France26

    Application structure

    Many executions of the functional structure with different evaluation contexts

    Simulationstructure tree

    Simulation algorithm

    Simulation results

  • Florent Ouchet OCaml meeting 2009 Grenoble France27

    Application structure

    Signature of process simulation function:process -> structure_context ->

    evaluation_context -> changed_object list

  • Florent Ouchet OCaml meeting 2009 Grenoble France28

    Prototype of process simulation function:process -> structure_context ->

    evaluation_context -> changed_object list

    Functors for efficiency (+50%)

    Application structure

  • Florent Ouchet OCaml meeting 2009 Grenoble France29

    Application structure

    Prototype of process simulation function:process -> structure_context ->

    evaluation_context -> changed_signal list

    evaluation_context = {simulation_time: Big_int;currentvalues: (signal*formula) list; }

    Test with array, hashtbl and references

  • Florent Ouchet OCaml meeting 2009 Grenoble France30

    Application structure

    Some timings: FIR filter simulation, 1000 clock cycles.

    Parsing + elab.

    Simulation Output Processmemory

    GC bytes

    assoc 40 ms 9.60 s 1.20 s 2.4 Mo 1189 Mo

    array 40 ms 1.82 s 1.20 s 2.4 Mo 910 Mo

    hashtbl 40 ms 2.00 s 1.17 s 2.3 Mo 921 Mo

    ref 40 ms 1.76 s 1.25 s 2.3 Mo 899 Mo

  • Florent Ouchet OCaml meeting 2009 Grenoble France31

    Application structure

    ProcessA

    ProcessB

    ProcessC

    DUT

    Load averaging for a multi-thread simulation.Communication efficiency for a distributed simulation.

  • Florent Ouchet OCaml meeting 2009 Grenoble France32

    Perspectives

    Spread the simulation over cores and computers: an integrated circuit is a fixed finite set of concurrent process

    concurrent simulation but: lots of rendez-vous and communications Irregular load

    Mathematics: loop invariants

  • Florent Ouchet OCaml meeting 2009 Grenoble France33

    Conclusion

    Development for project FME3 is now finished.

    Research prototype for parallel computations?

    Release to the public? CeCill Licence?

  • Florent Ouchet OCaml meeting 2009 Grenoble France34

    Questions?

    Thanks for your attention

    VHDL Symbolic simulator in OCamlOutlineSymbolic simulation goalsSymbolic simulation goalsSymbolic simulation goalsSymbolic simulation goalsSymbolic simulation goalsWhy OCaml?Why OCaml?Why OCaml?Why OCaml?Why OCaml?Why OCaml?Why OCaml?Why OCaml?Why OCaml?Why OCaml?Why OCaml?Application structureApplication structureApplication structureApplication structureApplication structureApplication structureApplication structureApplication structureApplication structureApplication structureApplication structureApplication structureApplication structurePerspectivesConclusionQuestions?