#波形 #fst #信号 #vcd #文件格式 #API绑定

fstapi

操作Fast Signal Trace (FST)格式波形API

2个版本

0.0.2 2024年4月14日
0.0.1 2023年2月17日

#921解析器实现

Download history 19/week @ 2024-04-02 187/week @ 2024-04-09 16/week @ 2024-04-16 6/week @ 2024-05-14 4/week @ 2024-05-21 16/week @ 2024-05-28

每月107次下载

MIT/Apache

365KB
8K SLoC

C 7K SLoC // 0.1% comments Rust 804 SLoC // 0.0% comments

fstapi

github crates.io docs.rs build status

Rust对操作Fast Signal Trace (FST)格式波形API的封装。

FST是一个开源文件格式,用于存储HDL仿真的数字波形。它由GTKWave的作者在2014年创建,作为VCD(值变化转储)格式的替代。

有关更多详细信息,请参阅

使用方法

通过运行 cargo addfstapi 添加到您的项目中

cargo add fstapi

示例

创建一个FST波形

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)?;

打印FST波形的所有变量

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

更多示例

请参阅GitHub仓库:fst-tools,其中包含3个命令行工具,用于使用此库操作FST波形。

许可证

版权(C)2023 MaxXing。根据您的选择,许可为Apache 2.0MIT

无运行时依赖

~0–2MB
~40K SLoC