libsurfer/
variable_type.rs

1use surfer_translation_types::VariableType;
2use wellen::VarType;
3
4#[local_impl::local_impl]
5impl VariableTypeExt for VariableType {
6    fn from_wellen_type(var_type: VarType) -> VariableType {
7        match var_type {
8            VarType::Reg => VariableType::VCDReg,
9            VarType::Wire => VariableType::VCDWire,
10            VarType::Integer => VariableType::VCDInteger,
11            VarType::Real => VariableType::VCDReal,
12            VarType::Parameter => VariableType::VCDParameter,
13            VarType::String => VariableType::VCDString,
14            VarType::Time => VariableType::VCDTime,
15            VarType::Event => VariableType::VCDEvent,
16            VarType::Supply0 => VariableType::VCDSupply0,
17            VarType::Supply1 => VariableType::VCDSupply1,
18            VarType::Tri => VariableType::VCDTri,
19            VarType::TriAnd => VariableType::VCDTriAnd,
20            VarType::TriOr => VariableType::VCDTriOr,
21            VarType::TriReg => VariableType::VCDTriReg,
22            VarType::Tri0 => VariableType::VCDTri0,
23            VarType::Tri1 => VariableType::VCDTri1,
24            VarType::WAnd => VariableType::VCDWAnd,
25            VarType::WOr => VariableType::VCDWOr,
26            VarType::Port => VariableType::Port,
27            VarType::Bit => VariableType::Bit,
28            VarType::Logic => VariableType::Logic,
29            VarType::Int => VariableType::VCDInteger,
30            VarType::Enum => VariableType::Enum,
31            VarType::SparseArray => VariableType::SparseArray,
32            VarType::RealTime => VariableType::RealTime,
33            VarType::ShortInt => VariableType::ShortInt,
34            VarType::LongInt => VariableType::LongInt,
35            VarType::Byte => VariableType::Byte,
36            VarType::ShortReal => VariableType::ShortReal,
37            VarType::Boolean => VariableType::Boolean,
38            VarType::BitVector => VariableType::BitVector,
39            VarType::StdLogic => VariableType::StdLogic,
40            VarType::StdLogicVector => VariableType::StdLogicVector,
41            VarType::StdULogic => VariableType::StdULogic,
42            VarType::StdULogicVector => VariableType::StdULogicVector,
43        }
44    }
45}
46
47/// Types that should default to signed conversion
48pub const INTEGER_TYPES: &[Option<VariableType>] = &[
49    Some(VariableType::VCDInteger),
50    Some(VariableType::Int),
51    Some(VariableType::ShortInt),
52    Some(VariableType::LongInt),
53];