fstapi

Crates.iofstapi
lib.rsfstapi
version0.0.2
sourcesrc
created_at2023-02-17 04:26:08.744582
updated_at2024-04-14 01:52:15.319307
descriptionAPI for manipulating Fast Signal Trace (FST) format waveforms.
homepage
repositoryhttps://github.com/MaxXSoft/fst-tools
max_upload_size
id787251
size408,127
MaxXing (MaxXSoft)

documentation

https://docs.rs/fstapi

README

fstapi

github crates.io docs.rs build status

Rust wrapper of APIs for manipulating Fast Signal Trace (FST) format waveforms.

FST is an open source file format for storing digital waveforms from HDL simulations. It was created by the author of GTKWave in 2014, as an alternate to the VCD (Value Change Dump) format.

For more details, please see:

Usage

Add fstapi to your projects by running cargo add:

cargo add fstapi

Examples

Create an FST waveform:

use fstapi::{Writer, var_type, var_dir};

// Create the waveform.
let mut writer = Writer::create("hello.fst", true)?
  .comment("FST waveform example")?
  .timescale_from_str("1ns")?;

// Create a variable.
let var = writer.create_var(var_type::VCD_REG, var_dir::OUTPUT, 8, "var", None)?;

// Emit value change data and time change data.
writer.emit_value_change(var, b"10001000")?;
writer.emit_time_change(10)?;
writer.emit_value_change(var, b"10011100")?;
writer.emit_time_change(42)?;
writer.emit_value_change(var, b"00111001")?;
writer.emit_time_change(100)?;

Print all variables of an FST waveform:

let mut reader = fstapi::Reader::open("hello.fst")?;
for var in reader.vars() {
  let (name, _) = var?;
  println!("{name}");
}

More Examples

See the GitHub repository: fst-tools, which contains 3 command line tools with this library for manipulating FST waveforms.

License

Copyright (C) 2023 MaxXing. Licensed under either of Apache 2.0 or MIT at your option.

Commit count: 124

cargo fmt