GithubHelp home page GithubHelp logo
Xprova photo

xprova Goto Github PK

repos: 7.0 gists: 0.0

Name: Xprova

Type: Organization

Bio: EDA Framework for Clock Domain Crossing Verification

Location: Newcastle upon Tyne, UK

Xprova

This is an EDA tool for clock domain crossing verification, currently at an early state of development and not yet available for use (please wait for a release). More information on the tool is available on https://xprova.net.

Requirement

  • java 8
  • Maven
  • Yosys

Usage:

1. Library and Flip-Flop Definitions

Until I document the various functions and capabilities of the tool properly I will list the commands currently supported here with brief explanations following cookbook principles.

Xprova is a command line tool, when launched it should print the following banner and prompt:

 __  __
 \ \/ /_ __  _ __ _____   ____ _
  \  /| '_ \| '__/ _ \ \ / / _` |
  /  \| |_) | | | (_) \ V / (_| |
 /_/\_\ .__/|_|  \___/ \_/ \__,_|
      |_|


Type :l for a list of available commands or :q to quit

>>

The first step is to always load a gate library by running load_lib file.lib. The library must be a verilog file containing module headers and input/output statements (to specify port directions), for example:

module AND (y, a, b);
	input a, b;
	output y;
endmodule

module NOT (y, a);
	input a;
	output y;
endmodule

Library modules may not instantiate other modules.

The tool must also be told which modules in the library are flip-flops (currently there is no automated way of inferring this). Flip-flop modules are defined by running:

def_ff QDFFRSBX1 CK RS D

The first argument of def_ff is the flip-flop module name and the rest are clock port, reset port and data port respectively.

To list existing flip-flop definitions run list_ff and to clear them run clear_ff.

2. Loading Designs

To load a verilog netlist, run:

read_verilog design.v

If the file contains multiple modules then the first will be loaded and the rest ignored. If you'd like to specify which module to load use:

read_verilog -m top design.v

Note: the tool supports flattened netlists only atm. Instantiations of modules that are not defined in the library will cause an Exception to be thrown.

3. Augmenting Designs

The command to do this is augment_netlist.

4. Writing (Augmented) Designs

Simply run write_verilog augmented.v

5. Generating Dot Files

The tool can output various graph representations of the netlist using the command export_dot.

export_dot output.dot

# to create a graph of nets and gates only (ignore flip-flops):
export_dot --type=ng output.dot

# to create a graph of gates and flops only (ignore nets):
export_dot --type=gf output.dot

# to create a graph of flip flops only:
export_dot --type=f output.dot

# so basically the option --type can take any char combination of "ngf"

# to omit verticess (useful to remove reset and clock connections):
export_dot --ignore-vertices=rst,clk1,clk2 output.dot

# to omit edges (ditto):
export_dot --ignore-edges=SB,RB,CK

# to combine multiple vertices into one:
export_dot --combine=add[0],add[1],add[2] output.dot

Xprova's Projects

bisect-tau icon bisect-tau

EDA tool for characterizing the metastability resolution time constant (Tau) of bistable circuits

netlist-graph icon netlist-graph

Java library for parsing and manipulating graph representations of gate-level Verilog netlists

vetrina icon vetrina

Modern web-based front-end for command line tools

xprova icon xprova

Formal verification engine for Verilog with built-in support for simulating flip-flop metastability

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.