Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • N netlist_simulator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 3
    • Issues 3
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Paul Fournier
  • netlist_simulator
  • Wiki
  • Functions

Functions · Changes

Page history
fix: broken links and headers authored Nov 11, 2020 by Paul Fournier's avatar Paul Fournier
Hide whitespace changes
Inline Side-by-side
Functions.md
View page @ f0401251
......@@ -11,7 +11,7 @@ Modifies the graph to add a node to it.
## `node_for_label` : 'a graph -> 'a -> 'a node`
Give the node corresponding to the label. Raises `Not_found` if no such node exists.
## `add_edge : 'a graph -> 'a -> 'a -> unit`
## `add_edge : 'a graph -> 'a -> 'a -> unit`
Modifies the graph to add an edge to it (both nodes have to exist previously, raises `Not_found` otherwise).
## `clear_marks : 'a graph -> unit`
......@@ -61,7 +61,7 @@ Gives the value of the argument in the current context. If it does not exist, it
## `anot : Netlist_ast.arg -> Netlist_ast.ident -> unit`
Updates the context such that the identifier provided is mapped to the opposite of the argument provided, bitwise in the case of a bus.
## `abinop : Netlist_ast.binop -> Netlist_ast.arg -> Netlist_ast.arg -> Netlist_ast.ident -> unit`
## `abinop : Netlist_ast.binop -> Netlist_ast.arg -> Netlist_ast.arg -> Netlist_ast.ident -> unit`
Updates the context such that the identifier provided is mapped to the corresponding boolean binary operator provided applied to the two arguments, bitwise in case of a bus.
Raises `Failure "Binop on two buses of different sizes"` if the function is called on two buses of different sizes or `Failure "Type Mismatch"` if it is called on a wire and a bus.
......@@ -90,7 +90,7 @@ Raises `Failure "Register [id] is not connected"` if the value the register labe
## `init : Netlist_ast.program -> unit`
Initiallizes the memory to be full of zeroes at the good size.
## `input_wire : Netlist_ast.ident -> unit`
## `input_wire : Netlist_ast.ident -> unit`
Updates the context such that the provided identifier is mapped to the bit given by the user in `stdin`, in the form of an integer.
Note : any non nil integer is mapped to `true`, 0 is mapped to `false`.
......@@ -98,28 +98,28 @@ Note : any non nil integer is mapped to `true`, 0 is mapped to `false`.
Updates the context such that the provided identifier is mapped to the bits given by the user, bit by bit, in `stdin` (it asks the value of every wire).
## `input : Netlist_ast.program -> unit`
Calls [input_wire](## \`input_wire : Netlist_ast.ident -> unit\`) or [input_bus](\`input_bus : Netlist_ast.ident -> unit\`) on every identifier marked as an input in the program.
Calls [input_wire](#input_wire-netlist_astident-unit) or [input_bus](#input_bus-netlist_astident-unit) on every identifier marked as an input in the program.
## `output : Netlist_ast.program -> unit`
Prints on `stdout` all the identifiers and corresponding values marked as an output in the program.
Note : the values are in the form of integers.
## `sim_step : Netlist_ast.program -> unit`
Calls [`sim_eq`](## `sim_eq : Netlist_ast.equation -> unit`) for each equation in the program. Will run smoothly if the equations are ordered according to their dependencies.
Calls [sim_eq](#sim_eq-netlist_astequation-unit) for each equation in the program. Will run smoothly if the equations are ordered according to their dependencies.
## `cycle : Netlist_ast.program -> unit`
Executes a full cycle of the simulation :
- Reinitiallize the context.
- Takes the input from the user ([input](## \`input : Netlist_ast.program -> unit\`)).
- Simulates a step. ([sim_step](## \`sim_step : Netlist_ast.program -> unit\`))
- Writes in memory. ([write_mem](## \`write_mem : Netlist_ast.program -> unit\`))
- Outputs the results. ([output](## \`output : Netlist_ast.program -> unit\`))
- Takes the input from the user ([input](#input-netlist_astprogram-unit)).
- Simulates a step. ([sim_step](#sim_step-netlist_astprogram-unit))
- Writes in memory. ([write_mem](#write_mem-netlist_astprogram-unit))
- Outputs the results. ([output](#output-netlist_astprogram-unit))
## `simulator : Netlist_ast.program -> int -> unit`
Runs as many cycles ( [cycle](## \`cycle : Netlist_ast.program -> unit\`) ) as instructed, with an infinite loop if the step number is -1.
Runs as many cycles ( [cycle](#cycle-netlist_astprogram-unit) ) as instructed, with an infinite loop if the step number is -1.
## `compile : string -> unit`
Reads the netlist file via some voodoo magic happening in the [netlist.ml](netlist.ml) file, then sorts it according to the dependencies of the variables ([Scheduler.schedule](## \`schedule : Netlist_ast.program -> Netlist_ast.program\`)), then simulates it ([simulator](## \`simulator : Netlist_ast.program -> int -> unit\`).
Reads the netlist file via some voodoo magic happening in the [netlist.ml](https://git.eleves.ens.fr/pfournier01/netlist_simulator/-/blob/master/netlist.ml) file, then sorts it according to the dependencies of the variables ([Scheduler.schedule](#schedule-netlist_astprogram-netlist_astprogram)), then simulates it ([simulator](#simulator-netlist_astprogram-int-unit).
Fails with error message `The netlist has a combinatory cycle` if the dependencies cannot be resolves, and with a parse error if there is a problem in the format of the netlist.
## `main : unit -> unit`
......
Clone repository
  • Functions
  • Implementation
  • Home