[][src]Struct dwfv::signaldb::AsyncSignalDB

pub struct AsyncSignalDB {
    pub sync_db: Arc<SignalDB>,
    // some fields omitted
}

Asynchronous Signal DB

Fields

sync_db: Arc<SignalDB>

Synchronous Signal Database

Implementations

impl AsyncSignalDB[src]

pub fn new() -> Self[src]

Create a new AsyncSignalDB.

Example

use dwfv::signaldb::AsyncSignalDB;
let db = AsyncSignalDB::new();

pub fn parse_vcd<I: BufRead>(&mut self, input: I) where
    I: Send,
    I: 'static, 
[src]

Populate the SignalDB using a Value Change Dump (VCD) file in a separate thread.

Example

use dwfv::signaldb::AsyncSignalDB;
let vcd = std::io::Cursor::new("
$scope module logic $end
$var wire 1 # foo $end
$upscope $end
$enddefinitions $end
$dumpvars
b1 #
$end
");

let mut db = AsyncSignalDB::new();
db.parse_vcd(vcd);
db.sync_db.wait_until_initialized();

pub fn search(&mut self, expr: &str)[src]

Search in the SignalDB in a separate thread.

Example

use dwfv::signaldb::{AsyncSignalDB, Scale, Timestamp};
let vcd = std::io::Cursor::new("
$scope module logic $end
$var wire 1 # foo $end
$upscope $end
$enddefinitions $end
$dumpvars
b1 #
$end
#42
b0 #
");

let mut db = AsyncSignalDB::new();
// Synchronous parsing of the VCD
db.sync_db.parse_vcd(vcd);

// Search expression
let expr = "$# <- 0";

// Asynchronous search
db.search(expr);

// Wait for the search process to find something
loop {
    if let Some(timestamp) = db.sync_db.get_first_finding(expr).unwrap_or(None) {
        assert_eq!(timestamp, Timestamp::new(42, Scale::Picosecond));
        break
    }
}

Trait Implementations

impl Default for AsyncSignalDB[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.