I broke something
This commit is contained in:
parent
ca9fca5379
commit
d8989d9c76
|
@ -16,12 +16,11 @@ struct Cli {
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
let args = Cli::parse();
|
let args = Cli::parse();
|
||||||
|
|
||||||
|
|
||||||
let file = File::open(&args.path)?;
|
let file = File::open(&args.path)?;
|
||||||
let vcd = parse_vcd(file).unwrap();
|
let vcd = parse_vcd(file).unwrap();
|
||||||
|
|
||||||
println!("printing signal tree");
|
// println!("printing signal tree");
|
||||||
vcd.print_scopes();
|
// vcd.print_scopes();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
|
@ -32,10 +32,44 @@ fn parse_events<'a>(
|
||||||
// nothing left to do...
|
// nothing left to do...
|
||||||
if next_word.is_none() {break};
|
if next_word.is_none() {break};
|
||||||
|
|
||||||
|
|
||||||
let (word, cursor) = next_word.unwrap();
|
let (word, cursor) = next_word.unwrap();
|
||||||
match &word[0..1] {
|
match &word[0..1] {
|
||||||
"$" => {continue}
|
"$" => {}
|
||||||
"#" => {continue}
|
"#" => {
|
||||||
|
let value = &word[1..];
|
||||||
|
let time_cursor = BigInt::parse_bytes(value.as_bytes(), 10).ok_or(
|
||||||
|
format!("failed to parse {value} as BigInt at {cursor:?}").as_str())?;
|
||||||
|
vcd.cursor = time_cursor;
|
||||||
|
}
|
||||||
|
"0" => {
|
||||||
|
// 0 must be in the first word in the line
|
||||||
|
let Cursor(Line(_), Word(word_in_line_idx)) = cursor;
|
||||||
|
if word_in_line_idx == 1 {
|
||||||
|
let hash = &word[1..].to_string();
|
||||||
|
let Signal_Idx(ref signal_idx) = signal_map.get(hash).ok_or(
|
||||||
|
format!("failed to lookup signal {hash} at {cursor:?}").as_str())?;
|
||||||
|
|
||||||
|
// let value = 0.to_bigint().unwrap();
|
||||||
|
// let pair = (TimeStamp(vcd.cursor.clone()), Sig_Value::Numeric(value));
|
||||||
|
// timeline.push(pair);
|
||||||
|
let signal_idx =
|
||||||
|
{
|
||||||
|
let signal = vcd.all_signals.get(*signal_idx).unwrap();
|
||||||
|
match signal {
|
||||||
|
Signal::Data {..} => {signal_idx}
|
||||||
|
Signal::Alias {name, signal_alias} => {
|
||||||
|
let Signal_Idx(ref signal_idx) = signal_alias;
|
||||||
|
signal_idx
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let signal = vcd.all_signals.get_mut(*signal_idx).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"1" => {}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +93,8 @@ pub fn parse_vcd(file : File) -> Result<VCD, String> {
|
||||||
};
|
};
|
||||||
|
|
||||||
parse_scopes(&mut word_gen, None, &mut vcd, &mut signal_map)?;
|
parse_scopes(&mut word_gen, None, &mut vcd, &mut signal_map)?;
|
||||||
// parse_events(&mut word_gen, &mut vcd, &mut signal_map)?;
|
parse_events(&mut word_gen, &mut vcd, &mut signal_map)?;
|
||||||
|
dbg!(&vcd.cursor);
|
||||||
|
|
||||||
Ok(vcd)
|
Ok(vcd)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,11 @@ use std::io::prelude::*;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Line(usize);
|
pub(super) struct Line(pub(super) usize);
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Word(usize);
|
pub(super) struct Word(pub(super) usize);
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Cursor(Line, Word);
|
pub(super) struct Cursor(pub(super) Line, pub(super) Word);
|
||||||
|
|
||||||
impl Cursor {
|
impl Cursor {
|
||||||
pub(super) fn error(&self, word : &str) -> Result<(), String> {
|
pub(super) fn error(&self, word : &str) -> Result<(), String> {
|
||||||
|
|
|
@ -24,7 +24,7 @@ pub(super) struct Signal_Idx(pub(super) usize);
|
||||||
pub(super) enum Sig_Type {Integer, Parameter, Real, Reg, Str, Wire, Tri1, Time}
|
pub(super) enum Sig_Type {Integer, Parameter, Real, Reg, Str, Wire, Tri1, Time}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub(super) struct TimeStamp(BigInt);
|
pub(super) struct TimeStamp(pub(super) BigInt);
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub(super) enum Sig_Value {
|
pub(super) enum Sig_Value {
|
||||||
|
@ -61,7 +61,7 @@ pub(super) struct Scope {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct VCD {
|
pub struct VCD {
|
||||||
pub(super) metadata : Metadata,
|
pub(super) metadata : Metadata,
|
||||||
pub(super) cursor : BigInt,
|
pub (super) cursor : BigInt,
|
||||||
pub(super) all_signals : Vec<Signal>,
|
pub(super) all_signals : Vec<Signal>,
|
||||||
pub(super) all_scopes : Vec<Scope>,
|
pub(super) all_scopes : Vec<Scope>,
|
||||||
pub(super) scope_roots : Vec<Scope_Idx>}
|
pub(super) scope_roots : Vec<Scope_Idx>}
|
||||||
|
|
Loading…
Reference in a new issue