Git Product home page Git Product logo

fstdumper's Introduction

fstdumper

Verilog VPI module to dump FST (Fast Signal Trace) databases

fstdumper overview

FST: Fast Signal Trace. This format is a block-based variant of IDX which is designed for very fast sequential and random access. FST has been designed to handle extremely large designs efficiently.

Overview

The aim of this project is to provide a unified VPI module working on most simulators that provide extensive VPI support to dump waveforms in the .fst format. The resulting .fst file can than be opened and viewed using the GTKWave waveform viewer.

But why? Proprietary simulators usually bring with them their own proprietary waveform formats. While VCD (Value Change Dump) is supported by if not all simulators, it is not very efficient in terms of space and performance. That's where fstdumper comes in: the idea is to reduce reliance on proprietary waveform formats by providing the ability to use an open, efficient format such as FST.

For the dumper itself the excellent implementation from Icarus Verilog has been adapted to work on other simulators too. Some iverilog specific features therefore had to be removed.

Simulator specific bits

Some simulators support more of the VPI standard than others. This means that certain features of the dumper which rely on VPI constructs that aren't supported on all target simulators need to be disabled.

There is the possibility to enable simulator specific features by using defines:

Config file /src/include/config.h

#define ICARUS_VERILOG

Example usage

module top;

logic clk;

initial
  begin
    $display("fstdumper!");
    clk = 1;
    
    $fstDumpfile("top.fst");
    $fstDumpvars(0, top);
    $fstDumplimit(1000);
    
    # 5 $fstDumpall;
    # 5 $fstDumpflush;
    # 5 $fstDumpoff;
    # 5 $fstDumpon;
    # 5 $finish;
  end

always #1 clk = ~clk;

endmodule

Compiling

Compiling the fstdumper shared library is as easy as issuing:

make fstdumper.so

Example Simulation

An example for the Icarus Verilog simulator can be run with:

make simulation-iverilog

An example for the Cadence Xcelium simulator can be run with:

make simulation-xrun

Compatibility Matrix

Simulator Version Status
Icarus Verilog Version 11.0 (stable) works
Cadence Xcelium 19.09-s001 works
Cadence Xcelium 18.03-s007 works
Mentor/Siemens Questa 10.7 WIP

You too can contribute by testing fstdumper on other simulators or other versions of these simulators. Any help is very much appreciated!

Contributing

Contributing in this projects follows the usual guidelines:

  • Fork the repository
  • Make your changes
  • Submit a Pull Request
  • After your Pull Request is accepted it will be merged

Before you make your changes, check to see if an issue exists already for the change you want to make. If not create one. We'll use the issue to have a conversation about the new feature you want to add or the problem you want to fix.

The versioning of the library follows the Semantic Versioning Specification.

fstdumper's People

Contributors

mole99 avatar oscargus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

fstdumper's Issues

Simulator support

The goal is to have fstdumper working on as many simulators as possible.

This non-exhaustive list shows which simulators fstdumper could have support for:

  • Icarus Verilog
  • Synopsys VCS
  • Aldec Riviera-PRO
  • Aldec Active-HDL
  • Mentor/Siemens EDA Questa
  • Mentor/Siemens EDA ModelSim
  • Cadence Incisive
  • Cadence Xcelium
  • Tachyon DA CVC
  • ...

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.