diff --git a/Cargo.lock b/Cargo.lock index c7e2204..9177305 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -324,6 +324,7 @@ dependencies = [ "petgraph", "serde", "serde_json", + "sha2", "tempfile", "trybuild", "vec_map", diff --git a/crates/fayalite/Cargo.toml b/crates/fayalite/Cargo.toml index 61ee5c7..1743add 100644 --- a/crates/fayalite/Cargo.toml +++ b/crates/fayalite/Cargo.toml @@ -31,6 +31,7 @@ ordered-float.workspace = true petgraph.workspace = true serde_json.workspace = true serde.workspace = true +sha2.workspace = true tempfile.workspace = true vec_map.workspace = true which.workspace = true diff --git a/crates/fayalite/src/sim/vcd.rs b/crates/fayalite/src/sim/vcd.rs index 6ba37b3..d970eb0 100644 --- a/crates/fayalite/src/sim/vcd.rs +++ b/crates/fayalite/src/sim/vcd.rs @@ -21,14 +21,30 @@ use crate::{ }; use bitvec::{order::Lsb0, slice::BitSlice}; use hashbrown::hash_map::Entry; +use sha2::{Digest, Sha256}; use std::{ + collections::BTreeMap, fmt::{self, Write as _}, io, mem, }; -#[derive(Default)] +#[derive(Default, Clone)] +struct PathHash(Sha256); + +impl PathHash { + fn joined(mut self, segment: impl AsRef<[u8]>) -> Self { + let segment = segment.as_ref(); + self.0.update(u32::to_le_bytes( + segment.len().try_into().expect("path segment is too big"), + )); + self.0.update(segment); + self + } +} + struct Scope { last_inserted: HashMap, usize>, + path_hash: PathHash, } #[derive(Copy, Clone)] @@ -61,6 +77,13 @@ impl fmt::Display for VerilogIdentifier { } impl Scope { + fn new(path_hash: PathHash) -> Self { + Self { + last_inserted: Default::default(), + path_hash, + } + } + fn new_identifier(&mut self, unescaped_name: Interned) -> VerilogIdentifier { let next_disambiguator = match self.last_inserted.entry(unescaped_name) { Entry::Vacant(entry) => { @@ -171,12 +194,10 @@ fn write_vcd_scope( scope: &mut Scope, f: impl FnOnce(&mut W, &mut Scope) -> io::Result, ) -> io::Result { - writeln!( - writer, - "$scope {scope_type} {} $end", - scope.new_identifier(scope_name), - )?; - let retval = f(writer, &mut Scope::default())?; + let path_hash = scope.path_hash.clone().joined(scope_name); + let scope_name = scope.new_identifier(scope_name); + writeln!(writer, "$scope {scope_type} {scope_name} $end")?; + let retval = f(writer, &mut Scope::new(path_hash))?; writeln!(writer, "$upscope $end")?; Ok(retval) } @@ -291,19 +312,75 @@ impl WriteTrace for TraceScalar { } } -fn write_vcd_id(writer: &mut W, mut id: usize) -> io::Result<()> { - let min_char = b'!'; - let max_char = b'~'; - let base = (max_char - min_char + 1) as usize; - loop { - let digit = (id % base) as u8 + min_char; - id /= base; - writer.write_all(&[digit])?; - if id == 0 { - break; +#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)] +#[repr(transparent)] +struct VcdId(u64); + +impl VcdId { + const CHAR_RANGE: std::ops::RangeInclusive = b'!'..=b'~'; + const BASE: u8 = *Self::CHAR_RANGE.end() - *Self::CHAR_RANGE.start() + 1; + const LOW_HALF_CHARS: u32 = 5; + const LOW_HALF_MODULUS: u64 = (Self::BASE as u64).pow(Self::LOW_HALF_CHARS); + + const fn from_str(s: &str) -> Option { + if s.is_empty() { + return None; } + let mut retval = 0u64; + let mut bytes = s.as_bytes(); + while let [ref rest @ .., digit] = *bytes { + bytes = rest; + let Some(digit) = digit.checked_sub(*Self::CHAR_RANGE.start()) else { + return None; + }; + if digit >= Self::BASE { + return None; + } + let Some(v) = retval.checked_mul(Self::BASE as _) else { + return None; + }; + let Some(v) = v.checked_add(digit as _) else { + return None; + }; + retval = v; + } + Some(Self(retval)) } - Ok(()) + #[must_use] + const fn write(self, out: &mut [u8]) -> usize { + let mut id = self.0; + let mut len = 0; + loop { + let digit = (id % Self::BASE as u64) as u8 + *Self::CHAR_RANGE.start(); + id /= Self::BASE as u64; + if len < out.len() { + out[len] = digit; + } + len += 1; + if id == 0 { + break; + } + } + len + } + const MAX_ID_LEN: usize = Self(u64::MAX).write(&mut []); +} + +/// check that VcdId properly round-trips +const _: () = { + let s = "RoundTrip"; + let Some(id) = VcdId::from_str(s) else { + unreachable!(); + }; + let mut buf = [0u8; VcdId::MAX_ID_LEN]; + let len = id.write(&mut buf); + assert!(crate::util::const_bytes_cmp(buf.split_at(len).0, s.as_bytes()).is_eq()); +}; + +fn write_vcd_id(writer: &mut W, id: VcdId) -> io::Result<()> { + let mut buf = [0u8; VcdId::MAX_ID_LEN]; + let len = id.write(&mut buf); + writer.write_all(&buf[..len]) } struct Escaped(T); @@ -346,13 +423,16 @@ impl fmt::Display for Escaped { fn write_vcd_var( properties: &mut VcdWriterProperties, + scope: &mut Scope, memory_element_part_body: MemoryElementPartBody, writer: &mut W, var_type: &str, size: usize, location: TraceLocation, - name: VerilogIdentifier, + name: Interned, ) -> io::Result<()> { + let path_hash = scope.path_hash.clone().joined(name); + let name = scope.new_identifier(name); let id = match location { TraceLocation::Scalar(id) => id.as_usize(), TraceLocation::Memory(TraceMemoryLocation { @@ -384,6 +464,9 @@ fn write_vcd_var( first_id + *element_index } }; + let id = properties + .scalar_id_to_vcd_id_map + .builder_get_or_insert(id, &path_hash); write!(writer, "$var {var_type} {size} ")?; write_vcd_id(writer, id)?; writeln!(writer, " {name} $end") @@ -414,12 +497,13 @@ impl WriteTrace for TraceUInt { } write_vcd_var( properties, + scope, MemoryElementPartBody::Scalar, writer, var_type, ty.width(), location, - scope.new_identifier(name), + name, ) } } @@ -494,12 +578,13 @@ impl WriteTrace for TraceEnumDiscriminant { } = self; write_vcd_var( properties, + scope, MemoryElementPartBody::EnumDiscriminant { ty }, writer, "string", 1, location, - scope.new_identifier(name), + name, ) } } @@ -569,12 +654,13 @@ impl WriteTrace for TracePhantomConst { } = self; write_vcd_var( properties, + scope, MemoryElementPartBody::Scalar, writer, "string", 1, location, - scope.new_identifier(name), + name, ) } } @@ -596,12 +682,13 @@ impl WriteTrace for TraceSimOnly { } = self; write_vcd_var( properties, + scope, MemoryElementPartBody::Scalar, writer, "string", 1, location, - scope.new_identifier(name), + name, ) } } @@ -923,6 +1010,9 @@ impl TraceWriterDecls for VcdWriterDecls { writeln!(writer, "$timescale {} $end", vcd_timescale(timescale))?; let mut properties = VcdWriterProperties { next_scalar_id: trace_scalar_id_count, + scalar_id_to_vcd_id_map: ScalarIdToVcdIdMapOrBuilder::Builder( + ScalarIdToVcdIdMapBuilder::default(), + ), memory_properties: (0..trace_memory_id_count) .map(|_| MemoryProperties { element_parts: Vec::with_capacity(8), @@ -935,9 +1025,16 @@ impl TraceWriterDecls for VcdWriterDecls { &mut writer, ArgModule { properties: &mut properties, - scope: &mut Scope::default(), + scope: &mut Scope::new(PathHash::default()), }, )?; + let ScalarIdToVcdIdMapOrBuilder::Builder(scalar_id_to_vcd_id_map_builder) = + properties.scalar_id_to_vcd_id_map + else { + unreachable!(); + }; + properties.scalar_id_to_vcd_id_map = + ScalarIdToVcdIdMapOrBuilder::Built(scalar_id_to_vcd_id_map_builder.build()); writeln!(writer, "$enddefinitions $end")?; writeln!(writer, "$dumpvars")?; Ok(VcdWriter { @@ -967,8 +1064,88 @@ struct MemoryProperties { element_index: usize, } +struct ScalarIdToVcdIdMap { + scalar_id_to_vcd_id_map: Box<[VcdId]>, +} + +#[derive(Default)] +struct ScalarIdToVcdIdMapBuilder { + scalar_id_to_vcd_id_map: BTreeMap, + lower_half_to_next_upper_half_map: HashMap, +} + +impl ScalarIdToVcdIdMapBuilder { + /// `VcdId`s are based off of `path_hash` (and not `scalar_id`) since the hash doesn't change + /// when unrelated variables are added/removed, making the generated VCD more friendly for git diff. + fn get_or_insert(&mut self, scalar_id: usize, path_hash: &PathHash) -> VcdId { + *self + .scalar_id_to_vcd_id_map + .entry(scalar_id) + .or_insert_with(|| { + let hash = u128::from_le_bytes( + *path_hash + .0 + .clone() + .finalize() + .first_chunk() + .expect("known to be bigger than u128"), + ); + let lower_half = (hash % VcdId::LOW_HALF_MODULUS as u128) as u64; + let next_upper_half = self + .lower_half_to_next_upper_half_map + .entry(lower_half) + .or_insert(0); + let upper_half = *next_upper_half; + *next_upper_half += 1; + let Some(id) = upper_half + .checked_mul(VcdId::LOW_HALF_MODULUS) + .and_then(|v| v.checked_add(lower_half)) + else { + panic!("too many VcdIds"); + }; + VcdId(id) + }) + } + fn build(self) -> ScalarIdToVcdIdMap { + ScalarIdToVcdIdMap { + scalar_id_to_vcd_id_map: self + .scalar_id_to_vcd_id_map + .into_iter() + .enumerate() + .map(|(index, (scalar_id, vcd_id))| { + if index != scalar_id { + panic!("missing scalar id {index}"); + } + vcd_id + }) + .collect(), + } + } +} + +enum ScalarIdToVcdIdMapOrBuilder { + Builder(ScalarIdToVcdIdMapBuilder), + Built(ScalarIdToVcdIdMap), +} + +impl ScalarIdToVcdIdMapOrBuilder { + fn built_scalar_id_to_vcd_id(&self, scalar_id: usize) -> VcdId { + let Self::Built(v) = self else { + panic!("ScalarIdToVcdIdMap isn't built yet"); + }; + v.scalar_id_to_vcd_id_map[scalar_id] + } + fn builder_get_or_insert(&mut self, scalar_id: usize, path_hash: &PathHash) -> VcdId { + let Self::Builder(v) = self else { + panic!("ScalarIdToVcdIdMap is already built"); + }; + v.get_or_insert(scalar_id, path_hash) + } +} + struct VcdWriterProperties { next_scalar_id: usize, + scalar_id_to_vcd_id_map: ScalarIdToVcdIdMapOrBuilder, memory_properties: Box<[MemoryProperties]>, } @@ -988,7 +1165,7 @@ impl VcdWriter { fn write_string_value_change( writer: &mut impl io::Write, value: impl fmt::Display, - id: usize, + id: VcdId, ) -> io::Result<()> { write!(writer, "s{} ", Escaped(value))?; write_vcd_id(writer, id)?; @@ -998,7 +1175,7 @@ fn write_string_value_change( fn write_bits_value_change( writer: &mut impl io::Write, value: &BitSlice, - id: usize, + id: VcdId, ) -> io::Result<()> { match value.len() { 0 => writer.write_all(b"s0 ")?, @@ -1028,7 +1205,7 @@ fn write_enum_discriminant_value_change( writer: &mut impl io::Write, variant_index: usize, ty: Enum, - id: usize, + id: VcdId, ) -> io::Result<()> { write_string_value_change( writer, @@ -1063,7 +1240,9 @@ impl TraceWriter for VcdWriter { MemoryElementPartBody::Scalar => write_bits_value_change( &mut self.writer, &element_data[start..start + len], - first_id + element_index, + self.properties + .scalar_id_to_vcd_id_map + .built_scalar_id_to_vcd_id(first_id + element_index), )?, MemoryElementPartBody::EnumDiscriminant { ty } => { let mut variant_index = 0; @@ -1073,7 +1252,9 @@ impl TraceWriter for VcdWriter { &mut self.writer, variant_index, *ty, - first_id + element_index, + self.properties + .scalar_id_to_vcd_id_map + .built_scalar_id_to_vcd_id(first_id + element_index), )? } } @@ -1082,11 +1263,23 @@ impl TraceWriter for VcdWriter { } fn set_signal_uint(&mut self, id: TraceScalarId, value: &BitSlice) -> Result<(), Self::Error> { - write_bits_value_change(&mut self.writer, value, id.as_usize()) + write_bits_value_change( + &mut self.writer, + value, + self.properties + .scalar_id_to_vcd_id_map + .built_scalar_id_to_vcd_id(id.as_usize()), + ) } fn set_signal_sint(&mut self, id: TraceScalarId, value: &BitSlice) -> Result<(), Self::Error> { - write_bits_value_change(&mut self.writer, value, id.as_usize()) + write_bits_value_change( + &mut self.writer, + value, + self.properties + .scalar_id_to_vcd_id_map + .built_scalar_id_to_vcd_id(id.as_usize()), + ) } fn finish_init(&mut self) -> Result<(), Self::Error> { @@ -1118,7 +1311,14 @@ impl TraceWriter for VcdWriter { variant_index: usize, ty: Enum, ) -> Result<(), Self::Error> { - write_enum_discriminant_value_change(&mut self.writer, variant_index, ty, id.as_usize()) + write_enum_discriminant_value_change( + &mut self.writer, + variant_index, + ty, + self.properties + .scalar_id_to_vcd_id_map + .built_scalar_id_to_vcd_id(id.as_usize()), + ) } fn set_signal_phantom_const( @@ -1128,7 +1328,13 @@ impl TraceWriter for VcdWriter { ) -> Result<(), Self::Error> { // avoid multi-line strings because GTKWave can't display them properly: // https://github.com/gtkwave/gtkwave/issues/460 - write_string_value_change(&mut self.writer, format_args!("{ty:?}"), id.as_usize()) + write_string_value_change( + &mut self.writer, + format_args!("{ty:?}"), + self.properties + .scalar_id_to_vcd_id_map + .built_scalar_id_to_vcd_id(id.as_usize()), + ) } fn set_signal_sim_only_value( @@ -1136,7 +1342,13 @@ impl TraceWriter for VcdWriter { id: TraceScalarId, value: &DynSimOnlyValue, ) -> Result<(), Self::Error> { - write_string_value_change(&mut self.writer, format_args!("{value:?}"), id.as_usize()) + write_string_value_change( + &mut self.writer, + format_args!("{value:?}"), + self.properties + .scalar_id_to_vcd_id_map + .built_scalar_id_to_vcd_id(id.as_usize()), + ) } } @@ -1161,7 +1373,7 @@ mod tests { #[test] fn test_scope() { - let mut scope = Scope::default(); + let mut scope = Scope::new(PathHash::default()); assert_eq!(&*scope.new_identifier("foo".intern()).unescaped_name, "foo"); assert_eq!( &*scope.new_identifier("foo_0".intern()).unescaped_name, diff --git a/crates/fayalite/tests/sim/expected/array_rw.vcd b/crates/fayalite/tests/sim/expected/array_rw.vcd index 8ede394..fefce5f 100644 --- a/crates/fayalite/tests/sim/expected/array_rw.vcd +++ b/crates/fayalite/tests/sim/expected/array_rw.vcd @@ -1,283 +1,283 @@ $timescale 1 ps $end $scope module array_rw $end $scope struct array_in $end -$var wire 8 ! \[0] $end -$var wire 8 " \[1] $end -$var wire 8 # \[2] $end -$var wire 8 $ \[3] $end -$var wire 8 % \[4] $end -$var wire 8 & \[5] $end -$var wire 8 ' \[6] $end -$var wire 8 ( \[7] $end -$var wire 8 ) \[8] $end -$var wire 8 * \[9] $end -$var wire 8 + \[10] $end -$var wire 8 , \[11] $end -$var wire 8 - \[12] $end -$var wire 8 . \[13] $end -$var wire 8 / \[14] $end -$var wire 8 0 \[15] $end +$var wire 8 Yvfu^ \[0] $end +$var wire 8 |Cs`W \[1] $end +$var wire 8 M!nsb \[2] $end +$var wire 8 59L{w \[3] $end +$var wire 8 o2+|F \[4] $end +$var wire 8 ikzV5 \[5] $end +$var wire 8 [E$Z* \[6] $end +$var wire 8 ?"~01 \[7] $end +$var wire 8 /kghT \[8] $end +$var wire 8 +}(9) \[9] $end +$var wire 8 iMP}= \[10] $end +$var wire 8 2M0tL \[11] $end +$var wire 8 :AjkA \[12] $end +$var wire 8 VM_:8 \[13] $end +$var wire 8 UveL2 \[14] $end +$var wire 8 A)9Z6 \[15] $end $upscope $end $scope struct array_out $end -$var wire 8 1 \[0] $end -$var wire 8 2 \[1] $end -$var wire 8 3 \[2] $end -$var wire 8 4 \[3] $end -$var wire 8 5 \[4] $end -$var wire 8 6 \[5] $end -$var wire 8 7 \[6] $end -$var wire 8 8 \[7] $end -$var wire 8 9 \[8] $end -$var wire 8 : \[9] $end -$var wire 8 ; \[10] $end -$var wire 8 < \[11] $end -$var wire 8 = \[12] $end -$var wire 8 > \[13] $end -$var wire 8 ? \[14] $end -$var wire 8 @ \[15] $end +$var wire 8 2zdj1 \[0] $end +$var wire 8 =;m_[ \[1] $end +$var wire 8 @9Hd \[2] $end +$var wire 8 C:="| \[3] $end +$var wire 8 IDk7# \[4] $end +$var wire 8 i]E1i \[5] $end +$var wire 8 tK,M] \[6] $end +$var wire 8 tGp!\ \[7] $end +$var wire 8 ."qjK \[8] $end +$var wire 8 AUO:R \[9] $end +$var wire 8 'kx`n \[10] $end +$var wire 8 U&(K\ \[11] $end +$var wire 8 q0H<( \[14] $end +$var wire 8 ARhXJ \[15] $end $upscope $end -$var wire 8 A read_index $end -$var wire 8 B read_data $end -$var wire 8 C write_index $end -$var wire 8 D write_data $end -$var wire 1 E write_en $end +$var wire 8 -n:7@ read_index $end +$var wire 8 >h<=Z read_data $end +$var wire 8 [xld3 write_index $end +$var wire 8 J+DYh write_data $end +$var wire 1 z,@WW write_en $end $scope struct array_wire $end -$var wire 8 F \[0] $end -$var wire 8 G \[1] $end -$var wire 8 H \[2] $end -$var wire 8 I \[3] $end -$var wire 8 J \[4] $end -$var wire 8 K \[5] $end -$var wire 8 L \[6] $end -$var wire 8 M \[7] $end -$var wire 8 N \[8] $end -$var wire 8 O \[9] $end -$var wire 8 P \[10] $end -$var wire 8 Q \[11] $end -$var wire 8 R \[12] $end -$var wire 8 S \[13] $end -$var wire 8 T \[14] $end -$var wire 8 U \[15] $end +$var wire 8 B{KJS \[0] $end +$var wire 8 V'K*& \[1] $end +$var wire 8 4zI$O \[2] $end +$var wire 8 %TTk[ \[3] $end +$var wire 8 IgSeY \[4] $end +$var wire 8 &&1T" \[5] $end +$var wire 8 5)-l\ \[6] $end +$var wire 8 0RsLb \[7] $end +$var wire 8 T>:}D \[8] $end +$var wire 8 DPpZ* \[9] $end +$var wire 8 %E(nf \[10] $end +$var wire 8 2'pba \[11] $end +$var wire 8 e/c1: \[12] $end +$var wire 8 ;w.C7 \[13] $end +$var wire 8 fwdfu \[14] $end +$var wire 8 *R\vx \[15] $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -b11111111 ! -b1111111 " -b111111 # -b11111 $ -b1111 % -b111 & -b11 ' -b1 ( -b0 ) -b10000000 * -b11000000 + -b11100000 , -b11110000 - -b11111000 . -b11111100 / -b11111110 0 -b11111111 1 -b1111111 2 -b111111 3 -b11111 4 -b1111 5 -b111 6 -b11 7 -b1 8 -b0 9 -b10000000 : -b11000000 ; -b11100000 < -b11110000 = -b11111000 > -b11111100 ? -b11111110 @ -b0 A -b11111111 B -b0 C -b0 D -0E -b11111111 F -b1111111 G -b111111 H -b11111 I -b1111 J -b111 K -b11 L -b1 M -b0 N -b10000000 O -b11000000 P -b11100000 Q -b11110000 R -b11111000 S -b11111100 T -b11111110 U +b11111111 Yvfu^ +b1111111 |Cs`W +b111111 M!nsb +b11111 59L{w +b1111 o2+|F +b111 ikzV5 +b11 [E$Z* +b1 ?"~01 +b0 /kghT +b10000000 +}(9) +b11000000 iMP}= +b11100000 2M0tL +b11110000 :AjkA +b11111000 VM_:8 +b11111100 UveL2 +b11111110 A)9Z6 +b11111111 2zdj1 +b1111111 =;m_[ +b111111 @9Hd +b11111 C:="| +b1111 IDk7# +b111 i]E1i +b11 tK,M] +b1 tGp!\ +b0 ."qjK +b10000000 AUO:R +b11000000 'kx`n +b11100000 U&(K\ +b11110000 q0H<( +b11111110 ARhXJ +b0 -n:7@ +b11111111 >h<=Z +b0 [xld3 +b0 J+DYh +0z,@WW +b11111111 B{KJS +b1111111 V'K*& +b111111 4zI$O +b11111 %TTk[ +b1111 IgSeY +b111 &&1T" +b11 5)-l\ +b1 0RsLb +b0 T>:}D +b10000000 DPpZ* +b11000000 %E(nf +b11100000 2'pba +b11110000 e/c1: +b11111000 ;w.C7 +b11111100 fwdfu +b11111110 *R\vx $end #1000000 -b1 A -b1111111 B +b1 -n:7@ +b1111111 >h<=Z #2000000 -b10 A -b111111 B +b10 -n:7@ +b111111 >h<=Z #3000000 -b11 A -b11111 B +b11 -n:7@ +b11111 >h<=Z #4000000 -b100 A -b1111 B +b100 -n:7@ +b1111 >h<=Z #5000000 -b101 A -b111 B +b101 -n:7@ +b111 >h<=Z #6000000 -b110 A -b11 B +b110 -n:7@ +b11 >h<=Z #7000000 -b111 A -b1 B +b111 -n:7@ +b1 >h<=Z #8000000 -b1000 A -b0 B +b1000 -n:7@ +b0 >h<=Z #9000000 -b1001 A -b10000000 B +b1001 -n:7@ +b10000000 >h<=Z #10000000 -b1010 A -b11000000 B +b1010 -n:7@ +b11000000 >h<=Z #11000000 -b1011 A -b11100000 B +b1011 -n:7@ +b11100000 >h<=Z #12000000 -b1100 A -b11110000 B +b1100 -n:7@ +b11110000 >h<=Z #13000000 -b1101 A -b11111000 B +b1101 -n:7@ +b11111000 >h<=Z #14000000 -b1110 A -b11111100 B +b1110 -n:7@ +b11111100 >h<=Z #15000000 -b1111 A -b11111110 B +b1111 -n:7@ +b11111110 >h<=Z #16000000 -b10000 A -b0 B +b10000 -n:7@ +b0 >h<=Z #17000000 -b0 1 -b0 A -1E -b0 F +b0 2zdj1 +b0 -n:7@ +1z,@WW +b0 B{KJS #18000000 -b11111111 1 -b1 2 -b11111111 B -b1 C -b1 D -b11111111 F -b1 G +b11111111 2zdj1 +b1 =;m_[ +b11111111 >h<=Z +b1 [xld3 +b1 J+DYh +b11111111 B{KJS +b1 V'K*& #19000000 -b1111111 2 -b100 3 -b10 C -b100 D -b1111111 G -b100 H +b1111111 =;m_[ +b100 @9Hd +b10 [xld3 +b100 J+DYh +b1111111 V'K*& +b100 4zI$O #20000000 -b111111 3 -b1001 4 -b11 C -b1001 D -b111111 H -b1001 I +b111111 @9Hd +b1001 C:="| +b11 [xld3 +b1001 J+DYh +b111111 4zI$O +b1001 %TTk[ #21000000 -b11111 4 -b10000 5 -b100 C -b10000 D -b11111 I -b10000 J +b11111 C:="| +b10000 IDk7# +b100 [xld3 +b10000 J+DYh +b11111 %TTk[ +b10000 IgSeY #22000000 -b1111 5 -b11001 6 -b101 C -b11001 D -b1111 J -b11001 K +b1111 IDk7# +b11001 i]E1i +b101 [xld3 +b11001 J+DYh +b1111 IgSeY +b11001 &&1T" #23000000 -b111 6 -b100100 7 -b110 C -b100100 D -b111 K -b100100 L +b111 i]E1i +b100100 tK,M] +b110 [xld3 +b100100 J+DYh +b111 &&1T" +b100100 5)-l\ #24000000 -b11 7 -b110001 8 -b111 C -b110001 D -b11 L -b110001 M +b11 tK,M] +b110001 tGp!\ +b111 [xld3 +b110001 J+DYh +b11 5)-l\ +b110001 0RsLb #25000000 -b1 8 -b1000000 9 -b1000 C -b1000000 D -b1 M -b1000000 N +b1 tGp!\ +b1000000 ."qjK +b1000 [xld3 +b1000000 J+DYh +b1 0RsLb +b1000000 T>:}D #26000000 -b0 9 -b1010001 : -b1001 C -b1010001 D -b0 N -b1010001 O +b0 ."qjK +b1010001 AUO:R +b1001 [xld3 +b1010001 J+DYh +b0 T>:}D +b1010001 DPpZ* #27000000 -b10000000 : -b1100100 ; -b1010 C -b1100100 D -b10000000 O -b1100100 P +b10000000 AUO:R +b1100100 'kx`n +b1010 [xld3 +b1100100 J+DYh +b10000000 DPpZ* +b1100100 %E(nf #28000000 -b11000000 ; -b1111001 < -b1011 C -b1111001 D -b11000000 P -b1111001 Q +b11000000 'kx`n +b1111001 U&(K\ +b1011 [xld3 +b1111001 J+DYh +b11000000 %E(nf +b1111001 2'pba #29000000 -b11100000 < -b10010000 = -b1100 C -b10010000 D -b11100000 Q -b10010000 R +b11100000 U&(K\ +b10010000 q -b1101 C -b10101001 D -b11110000 R -b10101001 S +b11110000 q -b11000100 ? -b1110 C -b11000100 D -b11111000 S -b11000100 T +b11111000 zvj)] +b11000100 >0H<( +b1110 [xld3 +b11000100 J+DYh +b11111000 ;w.C7 +b11000100 fwdfu #32000000 -b11111100 ? -b11100001 @ -b1111 C -b11100001 D -b11111100 T -b11100001 U +b11111100 >0H<( +b11100001 ARhXJ +b1111 [xld3 +b11100001 J+DYh +b11111100 fwdfu +b11100001 *R\vx #33000000 -b11111110 @ -b10000 C -b0 D -b11111110 U +b11111110 ARhXJ +b10000 [xld3 +b0 J+DYh +b11111110 *R\vx #34000000 diff --git a/crates/fayalite/tests/sim/expected/conditional_assignment_last.vcd b/crates/fayalite/tests/sim/expected/conditional_assignment_last.vcd index dd9a85a..96a9fba 100644 --- a/crates/fayalite/tests/sim/expected/conditional_assignment_last.vcd +++ b/crates/fayalite/tests/sim/expected/conditional_assignment_last.vcd @@ -1,14 +1,14 @@ $timescale 1 ps $end $scope module conditional_assignment_last $end -$var wire 1 ! i $end -$var wire 1 " w $end +$var wire 1 xt~(W i $end +$var wire 1 6:7im w $end $upscope $end $enddefinitions $end $dumpvars -0! -1" +0xt~(W +16:7im $end #1000000 -1! -0" +1xt~(W +06:7im #2000000 diff --git a/crates/fayalite/tests/sim/expected/connect_const_reset.vcd b/crates/fayalite/tests/sim/expected/connect_const_reset.vcd index 50b427c..f6e228a 100644 --- a/crates/fayalite/tests/sim/expected/connect_const_reset.vcd +++ b/crates/fayalite/tests/sim/expected/connect_const_reset.vcd @@ -1,11 +1,11 @@ $timescale 1 ps $end $scope module connect_const_reset $end -$var wire 1 ! reset_out $end -$var wire 1 " bit_out $end +$var wire 1 8ke|= reset_out $end +$var wire 1 {"c@= bit_out $end $upscope $end $enddefinitions $end $dumpvars -1! -1" +18ke|= +1{"c@= $end #1000000 diff --git a/crates/fayalite/tests/sim/expected/counter_async.vcd b/crates/fayalite/tests/sim/expected/counter_async.vcd index dab690f..d40f10f 100644 --- a/crates/fayalite/tests/sim/expected/counter_async.vcd +++ b/crates/fayalite/tests/sim/expected/counter_async.vcd @@ -1,217 +1,217 @@ $timescale 1 ps $end $scope module counter $end $scope struct cd $end -$var wire 1 ! clk $end -$var wire 1 " rst $end +$var wire 1 `[J;" clk $end +$var wire 1 4pZx7 rst $end $upscope $end -$var wire 4 # count $end -$var reg 4 $ count_reg $end +$var wire 4 rPs;{ count $end +$var reg 4 6_+(g count_reg $end $upscope $end $enddefinitions $end $dumpvars -0! -0" -b0 # -b0 $ +0`[J;" +04pZx7 +b0 rPs;{ +b0 6_+(g $end #500000 -1" -b11 # -b11 $ +14pZx7 +b11 rPs;{ +b11 6_+(g #1000000 -1! +1`[J;" #1500000 -0" +04pZx7 #2000000 -0! +0`[J;" #3000000 -1! -b100 # -b100 $ +1`[J;" +b100 rPs;{ +b100 6_+(g #4000000 -0! +0`[J;" #5000000 -1! -b101 # -b101 $ +1`[J;" +b101 rPs;{ +b101 6_+(g #6000000 -0! +0`[J;" #7000000 -1! -b110 # -b110 $ +1`[J;" +b110 rPs;{ +b110 6_+(g #8000000 -0! +0`[J;" #9000000 -1! -b111 # -b111 $ +1`[J;" +b111 rPs;{ +b111 6_+(g #10000000 -0! +0`[J;" #11000000 -1! -b1000 # -b1000 $ +1`[J;" +b1000 rPs;{ +b1000 6_+(g #12000000 -0! +0`[J;" #13000000 -1! -b1001 # -b1001 $ +1`[J;" +b1001 rPs;{ +b1001 6_+(g #14000000 -0! +0`[J;" #15000000 -1! -b1010 # -b1010 $ +1`[J;" +b1010 rPs;{ +b1010 6_+(g #16000000 -0! +0`[J;" #17000000 -1! -b1011 # -b1011 $ +1`[J;" +b1011 rPs;{ +b1011 6_+(g #18000000 -0! +0`[J;" #19000000 -1! -b1100 # -b1100 $ +1`[J;" +b1100 rPs;{ +b1100 6_+(g #20000000 -0! +0`[J;" #21000000 -1! -b1101 # -b1101 $ +1`[J;" +b1101 rPs;{ +b1101 6_+(g #22000000 -0! +0`[J;" #23000000 -1! -b1110 # -b1110 $ +1`[J;" +b1110 rPs;{ +b1110 6_+(g #24000000 -0! +0`[J;" #25000000 -1! -b1111 # -b1111 $ +1`[J;" +b1111 rPs;{ +b1111 6_+(g #26000000 -0! +0`[J;" #27000000 -1! -b0 # -b0 $ +1`[J;" +b0 rPs;{ +b0 6_+(g #28000000 -0! +0`[J;" #29000000 -1! -b1 # -b1 $ +1`[J;" +b1 rPs;{ +b1 6_+(g #30000000 -0! +0`[J;" #31000000 -1! -b10 # -b10 $ +1`[J;" +b10 rPs;{ +b10 6_+(g #32000000 -0! +0`[J;" #33000000 -1! -b11 # -b11 $ +1`[J;" +b11 rPs;{ +b11 6_+(g #34000000 -0! +0`[J;" #35000000 -1! -b100 # -b100 $ +1`[J;" +b100 rPs;{ +b100 6_+(g #36000000 -0! +0`[J;" #37000000 -1! -b101 # -b101 $ +1`[J;" +b101 rPs;{ +b101 6_+(g #38000000 -0! +0`[J;" #39000000 -1! -b110 # -b110 $ +1`[J;" +b110 rPs;{ +b110 6_+(g #40000000 -0! +0`[J;" #41000000 -1! -b111 # -b111 $ +1`[J;" +b111 rPs;{ +b111 6_+(g #42000000 -0! +0`[J;" #43000000 -1! -b1000 # -b1000 $ +1`[J;" +b1000 rPs;{ +b1000 6_+(g #44000000 -0! +0`[J;" #45000000 -1! -b1001 # -b1001 $ +1`[J;" +b1001 rPs;{ +b1001 6_+(g #46000000 -0! +0`[J;" #47000000 -1! -b1010 # -b1010 $ +1`[J;" +b1010 rPs;{ +b1010 6_+(g #48000000 -0! +0`[J;" #49000000 -1! -b1011 # -b1011 $ +1`[J;" +b1011 rPs;{ +b1011 6_+(g #50000000 -0! +0`[J;" #51000000 -1! -b1100 # -b1100 $ +1`[J;" +b1100 rPs;{ +b1100 6_+(g #52000000 -0! +0`[J;" #53000000 -1! -b1101 # -b1101 $ +1`[J;" +b1101 rPs;{ +b1101 6_+(g #54000000 -0! +0`[J;" #55000000 -1! -b1110 # -b1110 $ +1`[J;" +b1110 rPs;{ +b1110 6_+(g #56000000 -0! +0`[J;" #57000000 -1! -b1111 # -b1111 $ +1`[J;" +b1111 rPs;{ +b1111 6_+(g #58000000 -0! +0`[J;" #59000000 -1! -b0 # -b0 $ +1`[J;" +b0 rPs;{ +b0 6_+(g #60000000 -0! +0`[J;" #61000000 -1! -b1 # -b1 $ +1`[J;" +b1 rPs;{ +b1 6_+(g #62000000 -0! +0`[J;" #63000000 -1! -b10 # -b10 $ +1`[J;" +b10 rPs;{ +b10 6_+(g #64000000 -0! +0`[J;" #65000000 -1! -b11 # -b11 $ +1`[J;" +b11 rPs;{ +b11 6_+(g #66000000 diff --git a/crates/fayalite/tests/sim/expected/counter_sync.vcd b/crates/fayalite/tests/sim/expected/counter_sync.vcd index 9504a30..f6a8177 100644 --- a/crates/fayalite/tests/sim/expected/counter_sync.vcd +++ b/crates/fayalite/tests/sim/expected/counter_sync.vcd @@ -1,214 +1,214 @@ $timescale 1 ps $end $scope module counter $end $scope struct cd $end -$var wire 1 ! clk $end -$var wire 1 " rst $end +$var wire 1 `[J;" clk $end +$var wire 1 4pZx7 rst $end $upscope $end -$var wire 4 # count $end -$var reg 4 $ count_reg $end +$var wire 4 rPs;{ count $end +$var reg 4 6_+(g count_reg $end $upscope $end $enddefinitions $end $dumpvars -0! -1" -b0 # -b0 $ +0`[J;" +14pZx7 +b0 rPs;{ +b0 6_+(g $end #1000000 -1! -b11 # -b11 $ -0" +1`[J;" +b11 rPs;{ +b11 6_+(g +04pZx7 #2000000 -0! +0`[J;" #3000000 -1! -b100 # -b100 $ +1`[J;" +b100 rPs;{ +b100 6_+(g #4000000 -0! +0`[J;" #5000000 -1! -b101 # -b101 $ +1`[J;" +b101 rPs;{ +b101 6_+(g #6000000 -0! +0`[J;" #7000000 -1! -b110 # -b110 $ +1`[J;" +b110 rPs;{ +b110 6_+(g #8000000 -0! +0`[J;" #9000000 -1! -b111 # -b111 $ +1`[J;" +b111 rPs;{ +b111 6_+(g #10000000 -0! +0`[J;" #11000000 -1! -b1000 # -b1000 $ +1`[J;" +b1000 rPs;{ +b1000 6_+(g #12000000 -0! +0`[J;" #13000000 -1! -b1001 # -b1001 $ +1`[J;" +b1001 rPs;{ +b1001 6_+(g #14000000 -0! +0`[J;" #15000000 -1! -b1010 # -b1010 $ +1`[J;" +b1010 rPs;{ +b1010 6_+(g #16000000 -0! +0`[J;" #17000000 -1! -b1011 # -b1011 $ +1`[J;" +b1011 rPs;{ +b1011 6_+(g #18000000 -0! +0`[J;" #19000000 -1! -b1100 # -b1100 $ +1`[J;" +b1100 rPs;{ +b1100 6_+(g #20000000 -0! +0`[J;" #21000000 -1! -b1101 # -b1101 $ +1`[J;" +b1101 rPs;{ +b1101 6_+(g #22000000 -0! +0`[J;" #23000000 -1! -b1110 # -b1110 $ +1`[J;" +b1110 rPs;{ +b1110 6_+(g #24000000 -0! +0`[J;" #25000000 -1! -b1111 # -b1111 $ +1`[J;" +b1111 rPs;{ +b1111 6_+(g #26000000 -0! +0`[J;" #27000000 -1! -b0 # -b0 $ +1`[J;" +b0 rPs;{ +b0 6_+(g #28000000 -0! +0`[J;" #29000000 -1! -b1 # -b1 $ +1`[J;" +b1 rPs;{ +b1 6_+(g #30000000 -0! +0`[J;" #31000000 -1! -b10 # -b10 $ +1`[J;" +b10 rPs;{ +b10 6_+(g #32000000 -0! +0`[J;" #33000000 -1! -b11 # -b11 $ +1`[J;" +b11 rPs;{ +b11 6_+(g #34000000 -0! +0`[J;" #35000000 -1! -b100 # -b100 $ +1`[J;" +b100 rPs;{ +b100 6_+(g #36000000 -0! +0`[J;" #37000000 -1! -b101 # -b101 $ +1`[J;" +b101 rPs;{ +b101 6_+(g #38000000 -0! +0`[J;" #39000000 -1! -b110 # -b110 $ +1`[J;" +b110 rPs;{ +b110 6_+(g #40000000 -0! +0`[J;" #41000000 -1! -b111 # -b111 $ +1`[J;" +b111 rPs;{ +b111 6_+(g #42000000 -0! +0`[J;" #43000000 -1! -b1000 # -b1000 $ +1`[J;" +b1000 rPs;{ +b1000 6_+(g #44000000 -0! +0`[J;" #45000000 -1! -b1001 # -b1001 $ +1`[J;" +b1001 rPs;{ +b1001 6_+(g #46000000 -0! +0`[J;" #47000000 -1! -b1010 # -b1010 $ +1`[J;" +b1010 rPs;{ +b1010 6_+(g #48000000 -0! +0`[J;" #49000000 -1! -b1011 # -b1011 $ +1`[J;" +b1011 rPs;{ +b1011 6_+(g #50000000 -0! +0`[J;" #51000000 -1! -b1100 # -b1100 $ +1`[J;" +b1100 rPs;{ +b1100 6_+(g #52000000 -0! +0`[J;" #53000000 -1! -b1101 # -b1101 $ +1`[J;" +b1101 rPs;{ +b1101 6_+(g #54000000 -0! +0`[J;" #55000000 -1! -b1110 # -b1110 $ +1`[J;" +b1110 rPs;{ +b1110 6_+(g #56000000 -0! +0`[J;" #57000000 -1! -b1111 # -b1111 $ +1`[J;" +b1111 rPs;{ +b1111 6_+(g #58000000 -0! +0`[J;" #59000000 -1! -b0 # -b0 $ +1`[J;" +b0 rPs;{ +b0 6_+(g #60000000 -0! +0`[J;" #61000000 -1! -b1 # -b1 $ +1`[J;" +b1 rPs;{ +b1 6_+(g #62000000 -0! +0`[J;" #63000000 -1! -b10 # -b10 $ +1`[J;" +b10 rPs;{ +b10 6_+(g #64000000 -0! +0`[J;" #65000000 -1! -b11 # -b11 $ +1`[J;" +b11 rPs;{ +b11 6_+(g #66000000 diff --git a/crates/fayalite/tests/sim/expected/duplicate_names.vcd b/crates/fayalite/tests/sim/expected/duplicate_names.vcd index 1e9f6c6..238c074 100644 --- a/crates/fayalite/tests/sim/expected/duplicate_names.vcd +++ b/crates/fayalite/tests/sim/expected/duplicate_names.vcd @@ -1,11 +1,11 @@ $timescale 1 ps $end $scope module duplicate_names $end -$var wire 8 ! w $end -$var wire 8 " w_2 $end +$var wire 8 7[_7. w $end +$var wire 8 7[_7." w_2 $end $upscope $end $enddefinitions $end $dumpvars -b101 ! -b110 " +b101 7[_7. +b110 7[_7." $end #1000000 diff --git a/crates/fayalite/tests/sim/expected/enums.vcd b/crates/fayalite/tests/sim/expected/enums.vcd index aff867b..03682b1 100644 --- a/crates/fayalite/tests/sim/expected/enums.vcd +++ b/crates/fayalite/tests/sim/expected/enums.vcd @@ -1,126 +1,126 @@ $timescale 1 ps $end $scope module enums $end $scope struct cd $end -$var wire 1 ! clk $end -$var wire 1 " rst $end +$var wire 1 0n\U< clk $end +$var wire 1 a?A!) rst $end $upscope $end -$var wire 1 # en $end -$var wire 2 $ which_in $end -$var wire 4 % data_in $end -$var wire 2 & which_out $end -$var wire 4 ' data_out $end +$var wire 1 #ZQY# en $end +$var wire 2 8?II+ which_in $end +$var wire 4 OO,N+ data_in $end +$var wire 2 yr2gr which_out $end +$var wire 4 q_O;Y data_out $end $scope struct b_out $end -$var string 1 ( \$tag $end +$var string 1 7L1gf \$tag $end $scope struct HdlSome $end -$var wire 1 ) \0 $end -$var wire 1 * \1 $end +$var wire 1 EO?Ju \0 $end +$var wire 1 cGtNN \1 $end $upscope $end $upscope $end $scope struct b2_out $end -$var string 1 + \$tag $end +$var string 1 dqd@B \$tag $end $scope struct HdlSome $end -$var wire 1 , \0 $end -$var wire 1 - \1 $end +$var wire 1 (FG:I \0 $end +$var wire 1 dzy-= \1 $end $upscope $end $upscope $end $scope struct the_reg $end -$var string 1 . \$tag $end +$var string 1 J#9uO \$tag $end $scope struct B $end -$var reg 1 / \0 $end -$var reg 1 0 \1 $end +$var reg 1 ca2Gh \0 $end +$var reg 1 f)r)? \1 $end $upscope $end $scope struct C $end $scope struct a $end -$var reg 1 1 \[0] $end -$var reg 1 2 \[1] $end +$var reg 1 ;BepJ \[0] $end +$var reg 1 J~2;e \[1] $end $upscope $end -$var reg 2 3 b $end +$var reg 2 w\b)K b $end $upscope $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -0! -1" -0# -b0 $ -b0 % -b0 & -b0 ' -sHdlNone\x20(0) ( -0) -0* -sHdlNone\x20(0) + -0, -0- -sA\x20(0) . -0/ -00 -01 -02 -b0 3 +00n\U< +1a?A!) +0#ZQY# +b0 8?II+ +b0 OO,N+ +b0 yr2gr +b0 q_O;Y +sHdlNone\x20(0) 7L1gf +0EO?Ju +0cGtNN +sHdlNone\x20(0) dqd@B +0(FG:I +0dzy-= +sA\x20(0) J#9uO +0ca2Gh +0f)r)? +0;BepJ +0J~2;e +b0 w\b)K $end #1000000 -1! +10n\U< #1100000 -0" +0a?A!) #2000000 -0! +00n\U< #3000000 -1! +10n\U< #4000000 -1# -b1 $ -0! +1#ZQY# +b1 8?II+ +00n\U< #5000000 -1! -b1 & -sHdlSome\x20(1) ( -sHdlSome\x20(1) + -sB\x20(1) . +10n\U< +b1 yr2gr +sHdlSome\x20(1) 7L1gf +sHdlSome\x20(1) dqd@B +sB\x20(1) J#9uO #6000000 -0# -b0 $ -0! +0#ZQY# +b0 8?II+ +00n\U< #7000000 -1! +10n\U< #8000000 -1# -b1 $ -b1111 % -0! +1#ZQY# +b1 8?II+ +b1111 OO,N+ +00n\U< #9000000 -1! -b11 ' -1) -1* -1, -1- -1/ -10 -11 -12 +10n\U< +b11 q_O;Y +1EO?Ju +1cGtNN +1(FG:I +1dzy-= +1ca2Gh +1f)r)? +1;BepJ +1J~2;e #10000000 -0! +00n\U< #11000000 -1! +10n\U< #12000000 -b10 $ -0! +b10 8?II+ +00n\U< #13000000 -1! -b10 & -b1111 ' -sHdlNone\x20(0) ( -0) -0* -sHdlNone\x20(0) + -0, -0- -sC\x20(2) . -b11 3 +10n\U< +b10 yr2gr +b1111 q_O;Y +sHdlNone\x20(0) 7L1gf +0EO?Ju +0cGtNN +sHdlNone\x20(0) dqd@B +0(FG:I +0dzy-= +sC\x20(2) J#9uO +b11 w\b)K #14000000 -0! +00n\U< #15000000 -1! +10n\U< #16000000 diff --git a/crates/fayalite/tests/sim/expected/extern_module.vcd b/crates/fayalite/tests/sim/expected/extern_module.vcd index 5d6a0bc..21ec5b9 100644 --- a/crates/fayalite/tests/sim/expected/extern_module.vcd +++ b/crates/fayalite/tests/sim/expected/extern_module.vcd @@ -1,52 +1,52 @@ $timescale 1 ps $end $scope module extern_module $end -$var wire 1 ! i $end -$var wire 1 " o $end +$var wire 1 `MLd_ i $end +$var wire 1 ^;OnJ o $end $upscope $end $enddefinitions $end $dumpvars -0! -0" +0`MLd_ +0^;OnJ $end -1" +1^;OnJ #500000 #1500000 -0" +0^;OnJ #2500000 -1" +1^;OnJ #3500000 -0" +0^;OnJ #4500000 -1" +1^;OnJ #5500000 -0" +0^;OnJ #6500000 -1" +1^;OnJ #7500000 -0" +0^;OnJ #8500000 -1" +1^;OnJ #9500000 -0" +0^;OnJ #10000000 -1! +1`MLd_ #10500000 #11500000 -1" +1^;OnJ #12500000 -0" +0^;OnJ #13500000 -1" +1^;OnJ #14500000 -0" +0^;OnJ #15500000 -1" +1^;OnJ #16500000 -0" +0^;OnJ #17500000 -1" +1^;OnJ #18500000 -0" +0^;OnJ #19500000 -1" +1^;OnJ #20000000 diff --git a/crates/fayalite/tests/sim/expected/extern_module2.vcd b/crates/fayalite/tests/sim/expected/extern_module2.vcd index 4204567..bf0885a 100644 --- a/crates/fayalite/tests/sim/expected/extern_module2.vcd +++ b/crates/fayalite/tests/sim/expected/extern_module2.vcd @@ -1,151 +1,151 @@ $timescale 1 ps $end $scope module extern_module2 $end -$var wire 1 ! en $end -$var wire 1 " clk $end -$var wire 8 # o $end +$var wire 1 oHT(x en $end +$var wire 1 nHT-: clk $end +$var wire 8 0:wF& o $end $upscope $end $enddefinitions $end $dumpvars -1! -0" -b0 # +1oHT(x +0nHT-: +b0 0:wF& $end -b1001000 # +b1001000 0:wF& #1000000 -1" -b1100101 # +1nHT-: +b1100101 0:wF& #2000000 -0" +0nHT-: #3000000 -1" -b1101100 # +1nHT-: +b1101100 0:wF& #4000000 -0" +0nHT-: #5000000 -1" +1nHT-: #6000000 -0" +0nHT-: #7000000 -1" -b1101111 # +1nHT-: +b1101111 0:wF& #8000000 -0" +0nHT-: #9000000 -1" -b101100 # +1nHT-: +b101100 0:wF& #10000000 -0! -0" +0oHT(x +0nHT-: #11000000 -1" +1nHT-: #12000000 -0" +0nHT-: #13000000 -1" +1nHT-: #14000000 -0" +0nHT-: #15000000 -1" +1nHT-: #16000000 -0" +0nHT-: #17000000 -1" +1nHT-: #18000000 -0" +0nHT-: #19000000 -1" +1nHT-: #20000000 -1! -0" +1oHT(x +0nHT-: #21000000 -1" -b100000 # +1nHT-: +b100000 0:wF& #22000000 -0" +0nHT-: #23000000 -1" -b1010111 # +1nHT-: +b1010111 0:wF& #24000000 -0" +0nHT-: #25000000 -1" -b1101111 # +1nHT-: +b1101111 0:wF& #26000000 -0" +0nHT-: #27000000 -1" -b1110010 # +1nHT-: +b1110010 0:wF& #28000000 -0" +0nHT-: #29000000 -1" -b1101100 # +1nHT-: +b1101100 0:wF& #30000000 -0! -0" +0oHT(x +0nHT-: #31000000 -1" +1nHT-: #32000000 -0" +0nHT-: #33000000 -1" +1nHT-: #34000000 -0" +0nHT-: #35000000 -1" +1nHT-: #36000000 -0" +0nHT-: #37000000 -1" +1nHT-: #38000000 -0" +0nHT-: #39000000 -1" +1nHT-: #40000000 -1! -0" +1oHT(x +0nHT-: #41000000 -1" -b1100100 # +1nHT-: +b1100100 0:wF& #42000000 -0" +0nHT-: #43000000 -1" -b100001 # +1nHT-: +b100001 0:wF& #44000000 -0" +0nHT-: #45000000 -1" -b1010 # +1nHT-: +b1010 0:wF& #46000000 -0" +0nHT-: #47000000 -1" -b1001000 # +1nHT-: +b1001000 0:wF& #48000000 -0" +0nHT-: #49000000 -1" -b1100101 # +1nHT-: +b1100101 0:wF& #50000000 -0! -0" +0oHT(x +0nHT-: #51000000 -1" +1nHT-: #52000000 -0" +0nHT-: #53000000 -1" +1nHT-: #54000000 -0" +0nHT-: #55000000 -1" +1nHT-: #56000000 -0" +0nHT-: #57000000 -1" +1nHT-: #58000000 -0" +0nHT-: #59000000 -1" +1nHT-: #60000000 diff --git a/crates/fayalite/tests/sim/expected/many_memories.vcd b/crates/fayalite/tests/sim/expected/many_memories.vcd index 77d1447..db41ca3 100644 --- a/crates/fayalite/tests/sim/expected/many_memories.vcd +++ b/crates/fayalite/tests/sim/expected/many_memories.vcd @@ -2,2595 +2,2595 @@ $timescale 1 ps $end $scope module many_memories $end $scope struct r $end $scope struct \[0] $end -$var wire 4 ! addr $end -$var wire 1 " en $end -$var wire 1 # clk $end -$var wire 1 $ data $end +$var wire 4 d|7Sd addr $end +$var wire 1 bl7[X en $end +$var wire 1 17/]f clk $end +$var wire 1 0*lF; data $end $upscope $end $scope struct \[1] $end -$var wire 4 % addr $end -$var wire 1 & en $end -$var wire 1 ' clk $end -$var wire 1 ( data $end +$var wire 4 0?lo9 addr $end +$var wire 1 iP},z en $end +$var wire 1 5Gki< clk $end +$var wire 1 5MnH3 data $end $upscope $end $scope struct \[2] $end -$var wire 4 ) addr $end -$var wire 1 * en $end -$var wire 1 + clk $end -$var wire 1 , data $end +$var wire 4 AvJcz addr $end +$var wire 1 mSys{ en $end +$var wire 1 jJ+ac clk $end +$var wire 1 4C05W data $end $upscope $end $scope struct \[3] $end -$var wire 4 - addr $end -$var wire 1 . en $end -$var wire 1 / clk $end -$var wire 1 0 data $end +$var wire 4 sC0ee addr $end +$var wire 1 tG`f% en $end +$var wire 1 V1=.M clk $end +$var wire 1 6!E3h data $end $upscope $end $scope struct \[4] $end -$var wire 4 1 addr $end -$var wire 1 2 en $end -$var wire 1 3 clk $end -$var wire 1 4 data $end +$var wire 4 j,j"< addr $end +$var wire 1 >[_ax en $end +$var wire 1 (v:Ix clk $end +$var wire 1 J[r\_ data $end $upscope $end $scope struct \[5] $end -$var wire 4 5 addr $end -$var wire 1 6 en $end -$var wire 1 7 clk $end -$var wire 1 8 data $end +$var wire 4 OXs&> addr $end +$var wire 1 lu%y\ en $end +$var wire 1 l=z|A clk $end +$var wire 1 +UTFi data $end $upscope $end $scope struct \[6] $end -$var wire 4 9 addr $end -$var wire 1 : en $end -$var wire 1 ; clk $end -$var wire 1 < data $end +$var wire 4 iC]Q& addr $end +$var wire 1 h:kXG en $end +$var wire 1 hP6aI clk $end +$var wire 1 72ujb data $end $upscope $end $scope struct \[7] $end -$var wire 4 = addr $end -$var wire 1 > en $end -$var wire 1 ? clk $end -$var wire 1 @ data $end +$var wire 4 "I):@ addr $end +$var wire 1 rw'Lc en $end +$var wire 1 Vvn/E clk $end +$var wire 1 .[P*8 data $end $upscope $end $upscope $end $scope struct w $end $scope struct \[0] $end -$var wire 4 A addr $end -$var wire 1 B en $end -$var wire 1 C clk $end -$var wire 1 D data $end -$var wire 1 E mask $end +$var wire 4 W9?X. addr $end +$var wire 1 4Dh3Z en $end +$var wire 1 $\W(J clk $end +$var wire 1 cH{Ze data $end +$var wire 1 _OA4l mask $end $upscope $end $scope struct \[1] $end -$var wire 4 F addr $end -$var wire 1 G en $end -$var wire 1 H clk $end -$var wire 1 I data $end -$var wire 1 J mask $end +$var wire 4 6,|K% addr $end +$var wire 1 #'qYA en $end +$var wire 1 QI!iU clk $end +$var wire 1 |di=b data $end +$var wire 1 BCB!} mask $end $upscope $end $scope struct \[2] $end -$var wire 4 K addr $end -$var wire 1 L en $end -$var wire 1 M clk $end -$var wire 1 N data $end -$var wire 1 O mask $end +$var wire 4 $i,h9 addr $end +$var wire 1 =4Sky en $end +$var wire 1 EC,z> clk $end +$var wire 1 y;\Pv data $end +$var wire 1 1XcmV mask $end $upscope $end $scope struct \[3] $end -$var wire 4 P addr $end -$var wire 1 Q en $end -$var wire 1 R clk $end -$var wire 1 S data $end -$var wire 1 T mask $end +$var wire 4 IC,mz addr $end +$var wire 1 LM^hS en $end +$var wire 1 mm5\_ clk $end +$var wire 1 KYJ1[ data $end +$var wire 1 ;wrI1 mask $end $upscope $end $scope struct \[4] $end -$var wire 4 U addr $end -$var wire 1 V en $end -$var wire 1 W clk $end -$var wire 1 X data $end -$var wire 1 Y mask $end +$var wire 4 ^%H-d addr $end +$var wire 1 {{"vF en $end +$var wire 1 sfo}Z clk $end +$var wire 1 VxyrG data $end +$var wire 1 rjp*# mask $end $upscope $end $scope struct \[5] $end -$var wire 4 Z addr $end -$var wire 1 [ en $end -$var wire 1 \ clk $end -$var wire 1 ] data $end -$var wire 1 ^ mask $end +$var wire 4 %xhho addr $end +$var wire 1 ]0GiL en $end +$var wire 1 )|%6{ clk $end +$var wire 1 ,3Sf| data $end +$var wire 1 oJrGc mask $end $upscope $end $scope struct \[6] $end -$var wire 4 _ addr $end -$var wire 1 ` en $end -$var wire 1 a clk $end -$var wire 1 b data $end -$var wire 1 c mask $end +$var wire 4 TdJW4 addr $end +$var wire 1 LjMuL en $end +$var wire 1 t'l~] clk $end +$var wire 1 <}D%K data $end +$var wire 1 @0}S5 mask $end $upscope $end $scope struct \[7] $end -$var wire 4 d addr $end -$var wire 1 e en $end -$var wire 1 f clk $end -$var wire 1 g data $end -$var wire 1 h mask $end +$var wire 4 @T;Mg addr $end +$var wire 1 lGp}g en $end +$var wire 1 [|v\H$ addr $end +$var wire 1 1dk]f en $end +$var wire 1 B(P|B clk $end +$var wire 1 {)s\9 data $end $upscope $end $scope struct w1 $end -$var wire 4 m addr $end -$var wire 1 n en $end -$var wire 1 o clk $end -$var wire 1 p data $end -$var wire 1 q mask $end +$var wire 4 |Xtj6 addr $end +$var wire 1 kEHuz en $end +$var wire 1 .7gMQ clk $end +$var wire 1 GC4id data $end +$var wire 1 po>X< mask $end $upscope $end $upscope $end $scope struct mem_1 $end $scope struct contents $end $scope struct \[0] $end -$var reg 1 c" mem_1 $end +$var reg 1 lk3NH mem_1 $end $upscope $end $scope struct \[1] $end -$var reg 1 d" mem_1 $end +$var reg 1 V]u6p mem_1 $end $upscope $end $scope struct \[2] $end -$var reg 1 e" mem_1 $end +$var reg 1 U=Gh> mem_1 $end $upscope $end $scope struct \[3] $end -$var reg 1 f" mem_1 $end +$var reg 1 1Fg?Y mem_1 $end $upscope $end $scope struct \[4] $end -$var reg 1 g" mem_1 $end +$var reg 1 x[-fM mem_1 $end $upscope $end $scope struct \[5] $end -$var reg 1 h" mem_1 $end +$var reg 1 $1^H, mem_1 $end $upscope $end $scope struct \[6] $end -$var reg 1 i" mem_1 $end +$var reg 1 0M$4D mem_1 $end $upscope $end $scope struct \[7] $end -$var reg 1 j" mem_1 $end +$var reg 1 CN_fu mem_1 $end $upscope $end $scope struct \[8] $end -$var reg 1 k" mem_1 $end +$var reg 1 K/ql@ mem_1 $end $upscope $end $scope struct \[9] $end -$var reg 1 l" mem_1 $end +$var reg 1 '%]Ik mem_1 $end $upscope $end $scope struct \[10] $end -$var reg 1 m" mem_1 $end +$var reg 1 M[~-; mem_1 $end $upscope $end $scope struct \[11] $end -$var reg 1 n" mem_1 $end +$var reg 1 ae(_Y mem_1 $end $upscope $end $scope struct \[12] $end -$var reg 1 o" mem_1 $end +$var reg 1 @~%Yu mem_1 $end $upscope $end $scope struct \[13] $end -$var reg 1 p" mem_1 $end +$var reg 1 bly?K mem_1 $end $upscope $end $scope struct \[14] $end -$var reg 1 q" mem_1 $end +$var reg 1 ;l0g- mem_1 $end $upscope $end $scope struct \[15] $end -$var reg 1 r" mem_1 $end +$var reg 1 Pc5L mem_1 $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 4 r addr $end -$var wire 1 s en $end -$var wire 1 t clk $end -$var wire 1 u data $end +$var wire 4 ,SVcw addr $end +$var wire 1 crI6R en $end +$var wire 1 7}oLq clk $end +$var wire 1 pv)Ph data $end $upscope $end $scope struct w1 $end -$var wire 4 v addr $end -$var wire 1 w en $end -$var wire 1 x clk $end -$var wire 1 y data $end -$var wire 1 z mask $end +$var wire 4 E%~x' addr $end +$var wire 1 K9WYT en $end +$var wire 1 a~%H' clk $end +$var wire 1 |=vD0 data $end +$var wire 1 ]K`^ mask $end $upscope $end $upscope $end $scope struct mem_2 $end $scope struct contents $end $scope struct \[0] $end -$var reg 1 s" mem_2 $end +$var reg 1 S33J- mem_2 $end $upscope $end $scope struct \[1] $end -$var reg 1 t" mem_2 $end +$var reg 1 6|@8V mem_2 $end $upscope $end $scope struct \[2] $end -$var reg 1 u" mem_2 $end +$var reg 1 >&bO) mem_2 $end $upscope $end $scope struct \[3] $end -$var reg 1 v" mem_2 $end +$var reg 1 I6cQ4 mem_2 $end $upscope $end $scope struct \[4] $end -$var reg 1 w" mem_2 $end +$var reg 1 6<\}Q mem_2 $end $upscope $end $scope struct \[5] $end -$var reg 1 x" mem_2 $end +$var reg 1 f:Ue2 mem_2 $end $upscope $end $scope struct \[6] $end -$var reg 1 y" mem_2 $end +$var reg 1 5Me%A mem_2 $end $upscope $end $scope struct \[7] $end -$var reg 1 z" mem_2 $end +$var reg 1 o?yX1 mem_2 $end $upscope $end $scope struct \[8] $end -$var reg 1 {" mem_2 $end +$var reg 1 _usg8 mem_2 $end $upscope $end $scope struct \[9] $end -$var reg 1 |" mem_2 $end +$var reg 1 VrGM\ mem_2 $end $upscope $end $scope struct \[10] $end -$var reg 1 }" mem_2 $end +$var reg 1 "CN$B mem_2 $end $upscope $end $scope struct \[11] $end -$var reg 1 ~" mem_2 $end +$var reg 1 &Kn]3 mem_2 $end $upscope $end $scope struct \[12] $end -$var reg 1 !# mem_2 $end +$var reg 1 pidX) mem_2 $end $upscope $end $scope struct \[13] $end -$var reg 1 "# mem_2 $end +$var reg 1 JXxH( mem_2 $end $upscope $end $scope struct \[14] $end -$var reg 1 ## mem_2 $end +$var reg 1 alU~# mem_2 $end $upscope $end $scope struct \[15] $end -$var reg 1 $# mem_2 $end +$var reg 1 o4-M= mem_2 $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 4 { addr $end -$var wire 1 | en $end -$var wire 1 } clk $end -$var wire 1 ~ data $end +$var wire 4 8K@uI addr $end +$var wire 1 BL~4g en $end +$var wire 1 B{,;o mem_3 $end $upscope $end $scope struct \[9] $end -$var reg 1 .# mem_3 $end +$var reg 1 @|$h( mem_3 $end $upscope $end $scope struct \[10] $end -$var reg 1 /# mem_3 $end +$var reg 1 sey{< mem_3 $end $upscope $end $scope struct \[11] $end -$var reg 1 0# mem_3 $end +$var reg 1 RbWU} mem_3 $end $upscope $end $scope struct \[12] $end -$var reg 1 1# mem_3 $end +$var reg 1 S09. mem_3 $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 4 &" addr $end -$var wire 1 '" en $end -$var wire 1 (" clk $end -$var wire 1 )" data $end +$var wire 4 QLM%y addr $end +$var wire 1 7k:)O en $end +$var wire 1 }oa[9 clk $end +$var wire 1 GfxP1 data $end $upscope $end $scope struct w1 $end -$var wire 4 *" addr $end -$var wire 1 +" en $end -$var wire 1 ," clk $end -$var wire 1 -" data $end -$var wire 1 ." mask $end +$var wire 4 z$\>X addr $end +$var wire 1 J%@q: en $end +$var wire 1 xI.Te clk $end +$var wire 1 ),_Fe data $end +$var wire 1 %MYTb mask $end $upscope $end $upscope $end $scope struct mem_4 $end $scope struct contents $end $scope struct \[0] $end -$var reg 1 5# mem_4 $end +$var reg 1 qH-C: mem_4 $end $upscope $end $scope struct \[1] $end -$var reg 1 6# mem_4 $end +$var reg 1 7085? mem_4 $end $upscope $end $scope struct \[2] $end -$var reg 1 7# mem_4 $end +$var reg 1 OvgNF mem_4 $end $upscope $end $scope struct \[3] $end -$var reg 1 8# mem_4 $end +$var reg 1 RYxHq mem_4 $end $upscope $end $scope struct \[4] $end -$var reg 1 9# mem_4 $end +$var reg 1 vxZgk mem_4 $end $upscope $end $scope struct \[5] $end -$var reg 1 :# mem_4 $end +$var reg 1 5$~C^ mem_4 $end $upscope $end $scope struct \[6] $end -$var reg 1 ;# mem_4 $end +$var reg 1 xtUn" mem_4 $end $upscope $end $scope struct \[7] $end -$var reg 1 <# mem_4 $end +$var reg 1 (z5:+ mem_4 $end $upscope $end $scope struct \[8] $end -$var reg 1 =# mem_4 $end +$var reg 1 YjR,s mem_4 $end $upscope $end $scope struct \[9] $end -$var reg 1 ># mem_4 $end +$var reg 1 rT%&} mem_4 $end $upscope $end $scope struct \[10] $end -$var reg 1 ?# mem_4 $end +$var reg 1 O!KVd mem_4 $end $upscope $end $scope struct \[11] $end -$var reg 1 @# mem_4 $end +$var reg 1 ?7>@X mem_4 $end $upscope $end $scope struct \[12] $end -$var reg 1 A# mem_4 $end +$var reg 1 nZ6qC mem_4 $end $upscope $end $scope struct \[13] $end -$var reg 1 B# mem_4 $end +$var reg 1 gYe2 mem_4 $end $upscope $end $scope struct \[14] $end -$var reg 1 C# mem_4 $end +$var reg 1 B#~Pl mem_4 $end $upscope $end $scope struct \[15] $end -$var reg 1 D# mem_4 $end +$var reg 1 lG!\@ mem_4 $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 4 /" addr $end -$var wire 1 0" en $end -$var wire 1 1" clk $end -$var wire 1 2" data $end +$var wire 4 (M75i addr $end +$var wire 1 Eieoc en $end +$var wire 1 y0m-; clk $end +$var wire 1 3EUJ' data $end $upscope $end $scope struct w1 $end -$var wire 4 3" addr $end -$var wire 1 4" en $end -$var wire 1 5" clk $end -$var wire 1 6" data $end -$var wire 1 7" mask $end +$var wire 4 'N|N? addr $end +$var wire 1 /S-9% en $end +$var wire 1 0vX"- clk $end +$var wire 1 HE6Kx data $end +$var wire 1 hQ>V( mask $end $upscope $end $upscope $end $scope struct mem_5 $end $scope struct contents $end $scope struct \[0] $end -$var reg 1 E# mem_5 $end +$var reg 1 1GGb_ mem_5 $end $upscope $end $scope struct \[1] $end -$var reg 1 F# mem_5 $end +$var reg 1 LxqC. mem_5 $end $upscope $end $scope struct \[2] $end -$var reg 1 G# mem_5 $end +$var reg 1 3&byj mem_5 $end $upscope $end $scope struct \[3] $end -$var reg 1 H# mem_5 $end +$var reg 1 ]c~pH mem_5 $end $upscope $end $scope struct \[4] $end -$var reg 1 I# mem_5 $end +$var reg 1 gn[Z# mem_5 $end $upscope $end $scope struct \[5] $end -$var reg 1 J# mem_5 $end +$var reg 1 kk4^N mem_5 $end $upscope $end $scope struct \[6] $end -$var reg 1 K# mem_5 $end +$var reg 1 FM>f& mem_5 $end $upscope $end $scope struct \[7] $end -$var reg 1 L# mem_5 $end +$var reg 1 JURf" mem_5 $end $upscope $end $scope struct \[8] $end -$var reg 1 M# mem_5 $end +$var reg 1 ^|(GS mem_5 $end $upscope $end $scope struct \[9] $end -$var reg 1 N# mem_5 $end +$var reg 1 q>Dbi mem_5 $end $upscope $end $scope struct \[10] $end -$var reg 1 O# mem_5 $end +$var reg 1 v,X*" mem_5 $end $upscope $end $scope struct \[11] $end -$var reg 1 P# mem_5 $end +$var reg 1 rU3!' mem_5 $end $upscope $end $scope struct \[12] $end -$var reg 1 Q# mem_5 $end +$var reg 1 ubZS. mem_5 $end $upscope $end $scope struct \[13] $end -$var reg 1 R# mem_5 $end +$var reg 1 lS`!+ mem_5 $end $upscope $end $scope struct \[14] $end -$var reg 1 S# mem_5 $end +$var reg 1 wlw&y mem_5 $end $upscope $end $scope struct \[15] $end -$var reg 1 T# mem_5 $end +$var reg 1 VVy9L mem_5 $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 4 8" addr $end -$var wire 1 9" en $end -$var wire 1 :" clk $end -$var wire 1 ;" data $end +$var wire 4 ].DK0 addr $end +$var wire 1 C#?U9 en $end +$var wire 1 E~'G) clk $end +$var wire 1 m0~w" data $end $upscope $end $scope struct w1 $end -$var wire 4 <" addr $end -$var wire 1 =" en $end -$var wire 1 >" clk $end -$var wire 1 ?" data $end -$var wire 1 @" mask $end +$var wire 4 6Sh6[ addr $end +$var wire 1 vYM@u en $end +$var wire 1 =hC'C clk $end +$var wire 1 %\?Z# data $end +$var wire 1 +[l=? mask $end $upscope $end $upscope $end $scope struct mem_6 $end $scope struct contents $end $scope struct \[0] $end -$var reg 1 U# mem_6 $end +$var reg 1 V#g\W mem_6 $end $upscope $end $scope struct \[1] $end -$var reg 1 V# mem_6 $end +$var reg 1 X@70L mem_6 $end $upscope $end $scope struct \[2] $end -$var reg 1 W# mem_6 $end +$var reg 1 o/;vI mem_6 $end $upscope $end $scope struct \[3] $end -$var reg 1 X# mem_6 $end +$var reg 1 nNNhp mem_6 $end $upscope $end $scope struct \[4] $end -$var reg 1 Y# mem_6 $end +$var reg 1 g[SEK mem_6 $end $upscope $end $scope struct \[5] $end -$var reg 1 Z# mem_6 $end +$var reg 1 49L)5 mem_6 $end $upscope $end $scope struct \[6] $end -$var reg 1 [# mem_6 $end +$var reg 1 fl?5< mem_6 $end $upscope $end $scope struct \[7] $end -$var reg 1 \# mem_6 $end +$var reg 1 {,;|[ mem_6 $end $upscope $end $scope struct \[8] $end -$var reg 1 ]# mem_6 $end +$var reg 1 kFDen mem_6 $end $upscope $end $scope struct \[9] $end -$var reg 1 ^# mem_6 $end +$var reg 1 lu;*r mem_6 $end $upscope $end $scope struct \[10] $end -$var reg 1 _# mem_6 $end +$var reg 1 sinoU mem_6 $end $upscope $end $scope struct \[11] $end -$var reg 1 `# mem_6 $end +$var reg 1 >o]Q( mem_6 $end $upscope $end $scope struct \[12] $end -$var reg 1 a# mem_6 $end +$var reg 1 !1]}f mem_6 $end $upscope $end $scope struct \[13] $end -$var reg 1 b# mem_6 $end +$var reg 1 >IRWA mem_6 $end $upscope $end $scope struct \[14] $end -$var reg 1 c# mem_6 $end +$var reg 1 ]GER# mem_6 $end $upscope $end $scope struct \[15] $end -$var reg 1 d# mem_6 $end +$var reg 1 s&5]X mem_6 $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 4 A" addr $end -$var wire 1 B" en $end -$var wire 1 C" clk $end -$var wire 1 D" data $end +$var wire 4 ZWBn} addr $end +$var wire 1 |$cvr en $end +$var wire 1 T)in_ clk $end +$var wire 1 )McFt data $end $upscope $end $scope struct w1 $end -$var wire 4 E" addr $end -$var wire 1 F" en $end -$var wire 1 G" clk $end -$var wire 1 H" data $end -$var wire 1 I" mask $end +$var wire 4 gpGf3 addr $end +$var wire 1 `kT)O en $end +$var wire 1 fjh5& clk $end +$var wire 1 >&/MW data $end +$var wire 1 *XTPN mask $end $upscope $end $upscope $end $scope struct mem_7 $end $scope struct contents $end $scope struct \[0] $end -$var reg 1 e# mem_7 $end +$var reg 1 <1w8% mem_7 $end $upscope $end $scope struct \[1] $end -$var reg 1 f# mem_7 $end +$var reg 1 33nkV mem_7 $end $upscope $end $scope struct \[2] $end -$var reg 1 g# mem_7 $end +$var reg 1 px}q] mem_7 $end $upscope $end $scope struct \[3] $end -$var reg 1 h# mem_7 $end +$var reg 1 cmnxp mem_7 $end $upscope $end $scope struct \[4] $end -$var reg 1 i# mem_7 $end +$var reg 1 3rQ$Z mem_7 $end $upscope $end $scope struct \[5] $end -$var reg 1 j# mem_7 $end +$var reg 1 5k{84 mem_7 $end $upscope $end $scope struct \[6] $end -$var reg 1 k# mem_7 $end +$var reg 1 PO#rR mem_7 $end $upscope $end $scope struct \[7] $end -$var reg 1 l# mem_7 $end +$var reg 1 ki$A7 mem_7 $end $upscope $end $scope struct \[8] $end -$var reg 1 m# mem_7 $end +$var reg 1 qM^Sv mem_7 $end $upscope $end $scope struct \[9] $end -$var reg 1 n# mem_7 $end +$var reg 1 dF]W- mem_7 $end $upscope $end $scope struct \[10] $end -$var reg 1 o# mem_7 $end +$var reg 1 RzEG+ mem_7 $end $upscope $end $scope struct \[11] $end -$var reg 1 p# mem_7 $end +$var reg 1 "W|s6 mem_7 $end $upscope $end $scope struct \[12] $end -$var reg 1 q# mem_7 $end +$var reg 1 shQ1m mem_7 $end $upscope $end $scope struct \[13] $end -$var reg 1 r# mem_7 $end +$var reg 1 hN^kl mem_7 $end $upscope $end $scope struct \[14] $end -$var reg 1 s# mem_7 $end +$var reg 1 fc7WM mem_7 $end $upscope $end $scope struct \[15] $end -$var reg 1 t# mem_7 $end +$var reg 1 K0W.8 mem_7 $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 4 J" addr $end -$var wire 1 K" en $end -$var wire 1 L" clk $end -$var wire 1 M" data $end +$var wire 4 lJ\tx addr $end +$var wire 1 O2d5] en $end +$var wire 1 $Kx=q clk $end +$var wire 1 p[RX3 data $end $upscope $end $scope struct w1 $end -$var wire 4 N" addr $end -$var wire 1 O" en $end -$var wire 1 P" clk $end -$var wire 1 Q" data $end -$var wire 1 R" mask $end +$var wire 4 i|V&P addr $end +$var wire 1 `A40g en $end +$var wire 1 }&U]O clk $end +$var wire 1 {g%2| data $end +$var wire 1 A%,}] mask $end $upscope $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -0S" -0T" -0U" -0V" -0W" -0X" -0Y" -0Z" -0[" -0\" -0]" -0^" -0_" -0`" -0a" -0b" -1c" -0d" -0e" -0f" -0g" -0h" -0i" -0j" -0k" -0l" -0m" -0n" -0o" -0p" -0q" -0r" -0s" -0t" -0u" -0v" -0w" -1x" -0y" -0z" -0{" -0|" -0}" -0~" -0!# -0"# -0## -0$# -1%# -1&# -0'# -0(# -1)# -1*# -1+# -1,# -0-# -0.# -0/# -00# -01# -02# -03# -04# -05# -06# -07# -08# -09# -0:# -0;# -0<# -0=# -0># -1?# -0@# -0A# -0B# -0C# -0D# -1E# -0F# -1G# -0H# -1I# -1J# -0K# -0L# -0M# -0N# -1O# -1P# -0Q# -0R# -0S# -0T# -0U# -0V# -0W# -0X# -0Y# -1Z# -1[# -0\# -0]# -1^# -1_# -1`# -1a# -0b# -0c# -0d# -1e# -1f# -1g# -0h# -0i# -1j# -0k# -1l# -1m# -0n# -0o# -0p# -0q# -0r# -1s# -0t# -b0 ! -0" -0# -0$ -b0 % -0& -0' -0( -b0 ) -0* -0+ -0, -b0 - -0. -0/ -00 -b0 1 -02 -03 -04 -b0 5 -06 -07 -08 -b0 9 -0: -0; -0< -b0 = -0> -0? -0@ -b0 A -0B -0C -0D -0E -b0 F -0G -0H -0I -0J -b0 K -0L -0M -0N -0O -b0 P -0Q -0R -0S -0T -b0 U -0V -0W -0X -0Y -b0 Z -0[ -0\ -0] -0^ -b0 _ -0` -0a -0b -0c -b0 d -0e -0f -0g -0h -b0 i -0j -0k -0l -b0 m -0n -0o -0p -0q -b0 r -0s -0t -0u -b0 v -0w -0x -0y -0z -b0 { -0| -0} -0~ -b0 !" -0"" -0#" -0$" -0%" -b0 &" -0'" -0(" -0)" -b0 *" -0+" -0," -0-" -0." -b0 /" -00" -01" -02" -b0 3" -04" -05" -06" -07" -b0 8" -09" -0:" -0;" -b0 <" -0=" -0>" -0?" -0@" -b0 A" -0B" -0C" -0D" -b0 E" -0F" -0G" -0H" -0I" -b0 J" -0K" -0L" -0M" -b0 N" -0O" -0P" -0Q" -0R" +0BF4b] +0\l3qS +0B{RxL +0aX~=L +0u\Njq +0o#t"z +05K{^g +0+UI{} +0O?gg. +0ciSpV +0kX]/, +0y(Y?# +0!ZUC~ +0xB4/Z +0R^08l +0m,8Ot +1lk3NH +0V]u6p +0U=Gh> +01Fg?Y +0x[-fM +0$1^H, +00M$4D +0CN_fu +0K/ql@ +0'%]Ik +0M[~-; +0ae(_Y +0@~%Yu +0bly?K +0;l0g- +0Pc5L +0S33J- +06|@8V +0>&bO) +0I6cQ4 +06<\}Q +1f:Ue2 +05Me%A +0o?yX1 +0_usg8 +0VrGM\ +0"CN$B +0&Kn]3 +0pidX) +0JXxH( +0alU~# +0o4-M= +1-kXQk +1b")Z[ +0o"+8} +0@E|eA +14E3| +1&r?*\ +1+Qn\G +1MoUR3 +0>{,;o +0@|$h( +0sey{< +0RbWU} +0S09. +0qH-C: +07085? +0OvgNF +0RYxHq +0vxZgk +05$~C^ +0xtUn" +0(z5:+ +0YjR,s +0rT%&} +1O!KVd +0?7>@X +0nZ6qC +0gYe2 +0B#~Pl +0lG!\@ +11GGb_ +0LxqC. +13&byj +0]c~pH +1gn[Z# +1kk4^N +0FM>f& +0JURf" +0^|(GS +0q>Dbi +1v,X*" +1rU3!' +0ubZS. +0lS`!+ +0wlw&y +0VVy9L +0V#g\W +0X@70L +0o/;vI +0nNNhp +0g[SEK +149L)5 +1fl?5< +0{,;|[ +0kFDen +1lu;*r +1sinoU +1>o]Q( +1!1]}f +0>IRWA +0]GER# +0s&5]X +1<1w8% +133nkV +1px}q] +0cmnxp +03rQ$Z +15k{84 +0PO#rR +1ki$A7 +1qM^Sv +0dF]W- +0RzEG+ +0"W|s6 +0shQ1m +0hN^kl +1fc7WM +0K0W.8 +b0 d|7Sd +0bl7[X +017/]f +00*lF; +b0 0?lo9 +0iP},z +05Gki< +05MnH3 +b0 AvJcz +0mSys{ +0jJ+ac +04C05W +b0 sC0ee +0tG`f% +0V1=.M +06!E3h +b0 j,j"< +0>[_ax +0(v:Ix +0J[r\_ +b0 OXs&> +0lu%y\ +0l=z|A +0+UTFi +b0 iC]Q& +0h:kXG +0hP6aI +072ujb +b0 "I):@ +0rw'Lc +0Vvn/E +0.[P*8 +b0 W9?X. +04Dh3Z +0$\W(J +0cH{Ze +0_OA4l +b0 6,|K% +0#'qYA +0QI!iU +0|di=b +0BCB!} +b0 $i,h9 +0=4Sky +0EC,z> +0y;\Pv +01XcmV +b0 IC,mz +0LM^hS +0mm5\_ +0KYJ1[ +0;wrI1 +b0 ^%H-d +0{{"vF +0sfo}Z +0VxyrG +0rjp*# +b0 %xhho +0]0GiL +0)|%6{ +0,3Sf| +0oJrGc +b0 TdJW4 +0LjMuL +0t'l~] +0<}D%K +0@0}S5 +b0 @T;Mg +0lGp}g +0[|v\H$ +01dk]f +0B(P|B +0{)s\9 +b0 |Xtj6 +0kEHuz +0.7gMQ +0GC4id +0po>X< +b0 ,SVcw +0crI6R +07}oLq +0pv)Ph +b0 E%~x' +0K9WYT +0a~%H' +0|=vD0 +0]K`^ +b0 8K@uI +0BL~4g +0BX +0J%@q: +0xI.Te +0),_Fe +0%MYTb +b0 (M75i +0Eieoc +0y0m-; +03EUJ' +b0 'N|N? +0/S-9% +00vX"- +0HE6Kx +0hQ>V( +b0 ].DK0 +0C#?U9 +0E~'G) +0m0~w" +b0 6Sh6[ +0vYM@u +0=hC'C +0%\?Z# +0+[l=? +b0 ZWBn} +0|$cvr +0T)in_ +0)McFt +b0 gpGf3 +0`kT)O +0fjh5& +0>&/MW +0*XTPN +b0 lJ\tx +0O2d5] +0$Kx=q +0p[RX3 +b0 i|V&P +0`A40g +0}&U]O +0{g%2| +0A%,}] $end #1000000 -1# -1' -1+ -1/ -13 -17 -1; -1? -1C -1H -1M -1R -1W -1\ -1a -1f -1k -1o -1t -1x -1} -1#" -1(" -1," -11" -15" -1:" -1>" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v -0? -1@ -1B -0C -1D -1E -1G -0H -1I -1J -1L -0M -1N -1O -1Q -0R -1S -1T -1V -0W -1X -1Y -1[ -0\ -1] -1^ -1` -0a -1b -1c -1e -0f -1g -1h -1j -0k -1n -0o -1p -1q -1s -0t -1u -1w -0x -1y -1z -1| -0} -1"" -0#" -1$" -1%" -1'" -0(" -1)" -1+" -0," -1-" -1." -10" -01" -14" -05" -16" -17" -19" -0:" -1;" -1=" -0>" -1?" -1@" -1B" -0C" -1F" -0G" -1H" -1I" -1K" -0L" -1M" -1O" -0P" -1Q" -1R" +1bl7[X +017/]f +1iP},z +05Gki< +15MnH3 +1mSys{ +0jJ+ac +1tG`f% +0V1=.M +16!E3h +1>[_ax +0(v:Ix +1lu%y\ +0l=z|A +1+UTFi +1h:kXG +0hP6aI +1rw'Lc +0Vvn/E +1.[P*8 +14Dh3Z +0$\W(J +1cH{Ze +1_OA4l +1#'qYA +0QI!iU +1|di=b +1BCB!} +1=4Sky +0EC,z> +1y;\Pv +11XcmV +1LM^hS +0mm5\_ +1KYJ1[ +1;wrI1 +1{{"vF +0sfo}Z +1VxyrG +1rjp*# +1]0GiL +0)|%6{ +1,3Sf| +1oJrGc +1LjMuL +0t'l~] +1<}D%K +1@0}S5 +1lGp}g +0[|vX< +1crI6R +07}oLq +1pv)Ph +1K9WYT +0a~%H' +1|=vD0 +1]K`^ +1BL~4g +0BV( +1C#?U9 +0E~'G) +1m0~w" +1vYM@u +0=hC'C +1%\?Z# +1+[l=? +1|$cvr +0T)in_ +1`kT)O +0fjh5& +1>&/MW +1*XTPN +1O2d5] +0$Kx=q +1p[RX3 +1`A40g +0}&U]O +1{g%2| +1A%,}] #3000000 -1S" -1c" -1s" -1%# -15# -1E# -1U# -1e# -1# -1$ -1' -1+ -1, -1/ -13 -14 -17 -1; -1< -1? -1C -1H -1M -1R -1W -1\ -1a -1f -1k -1l -1o -1t -1x -1} -1~ -1#" -1(" -1," -11" -12" -15" -1:" -1>" -1C" -1D" -1G" -1L" -1P" +1BF4b] +1lk3NH +1S33J- +1-kXQk +1qH-C: +11GGb_ +1V#g\W +1<1w8% +117/]f +10*lF; +15Gki< +1jJ+ac +14C05W +1V1=.M +1(v:Ix +1J[r\_ +1l=z|A +1hP6aI +172ujb +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -0?" -0C" -0G" -0H" -0L" -0P" -0Q" +017/]f +05Gki< +0jJ+ac +0V1=.M +0(v:Ix +0l=z|A +0hP6aI +0Vvn/E +0$\W(J +0cH{Ze +0QI!iU +0|di=b +0EC,z> +0y;\Pv +0mm5\_ +0KYJ1[ +0sfo}Z +0VxyrG +0)|%6{ +0,3Sf| +0t'l~] +0<}D%K +0[|v&/MW +0$Kx=q +0}&U]O +0{g%2| #5000000 -0S" -0c" -0s" -0%# -05# -0E# -0U# -0e# -1# -0$ -1' -0( -1+ -0, -1/ -00 -13 -04 -17 -08 -1; -0< -1? -0@ -1C -1H -1M -1R -1W -1\ -1a -1f -1k -0l -1o -1t -0u -1x -1} -0~ -1#" -1(" -0)" -1," -11" -02" -15" -1:" -0;" -1>" -1C" -0D" -1G" -1L" -0M" -1P" +0BF4b] +0lk3NH +0S33J- +0-kXQk +0qH-C: +01GGb_ +0V#g\W +0<1w8% +117/]f +00*lF; +15Gki< +05MnH3 +1jJ+ac +04C05W +1V1=.M +06!E3h +1(v:Ix +0J[r\_ +1l=z|A +0+UTFi +1hP6aI +072ujb +1Vvn/E +0.[P*8 +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v +0LM^hS +0mm5\_ +0{{"vF +0sfo}Z +0]0GiL +0)|%6{ +0LjMuL +0t'l~] +0lGp}g +0[|v" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1 A" -0C" -0G" -b1 J" -0L" -1M" -0P" +b1 d|7Sd +017/]f +b1 0?lo9 +05Gki< +b1 AvJcz +0jJ+ac +b1 sC0ee +0V1=.M +16!E3h +b1 j,j"< +0(v:Ix +b1 OXs&> +0l=z|A +b1 iC]Q& +0hP6aI +b1 "I):@ +0Vvn/E +1.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1 ,SVcw +07}oLq +0a~%H' +b1 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b10 A" -0C" -0G" -b10 J" -0L" -0P" +b10 d|7Sd +017/]f +b10 0?lo9 +05Gki< +b10 AvJcz +0jJ+ac +b10 sC0ee +0V1=.M +06!E3h +b10 j,j"< +0(v:Ix +b10 OXs&> +0l=z|A +1+UTFi +b10 iC]Q& +0hP6aI +b10 "I):@ +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b10 ,SVcw +07}oLq +0a~%H' +b10 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b11 A" -0C" -0G" -b11 J" -0L" -0M" -0P" +b11 d|7Sd +017/]f +b11 0?lo9 +05Gki< +b11 AvJcz +0jJ+ac +b11 sC0ee +0V1=.M +b11 j,j"< +0(v:Ix +b11 OXs&> +0l=z|A +0+UTFi +b11 iC]Q& +0hP6aI +b11 "I):@ +0Vvn/E +0.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b11 ,SVcw +07}oLq +0a~%H' +b11 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b100 A" -0C" -0G" -b100 J" -0L" -0P" +b100 d|7Sd +017/]f +b100 0?lo9 +05Gki< +b100 AvJcz +0jJ+ac +b100 sC0ee +0V1=.M +16!E3h +b100 j,j"< +0(v:Ix +b100 OXs&> +0l=z|A +1+UTFi +b100 iC]Q& +0hP6aI +b100 "I):@ +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b100 ,SVcw +07}oLq +0a~%H' +b100 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b101 A" -0C" -1D" -0G" -b101 J" -0L" -1M" -0P" +b101 d|7Sd +017/]f +b101 0?lo9 +05Gki< +b101 AvJcz +0jJ+ac +14C05W +b101 sC0ee +0V1=.M +b101 j,j"< +0(v:Ix +b101 OXs&> +0l=z|A +b101 iC]Q& +0hP6aI +172ujb +b101 "I):@ +0Vvn/E +1.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b101 ,SVcw +07}oLq +0a~%H' +b101 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b110 A" -0C" -0G" -b110 J" -0L" -0M" -0P" +b110 d|7Sd +017/]f +b110 0?lo9 +05Gki< +b110 AvJcz +0jJ+ac +04C05W +b110 sC0ee +0V1=.M +b110 j,j"< +0(v:Ix +b110 OXs&> +0l=z|A +0+UTFi +b110 iC]Q& +0hP6aI +b110 "I):@ +0Vvn/E +0.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b110 ,SVcw +07}oLq +0a~%H' +b110 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b111 A" -0C" -0D" -0G" -b111 J" -0L" -1M" -0P" +b111 d|7Sd +017/]f +b111 0?lo9 +05Gki< +b111 AvJcz +0jJ+ac +b111 sC0ee +0V1=.M +b111 j,j"< +0(v:Ix +b111 OXs&> +0l=z|A +b111 iC]Q& +0hP6aI +072ujb +b111 "I):@ +0Vvn/E +1.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b111 ,SVcw +07}oLq +0a~%H' +b111 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1000 A" -0C" -0G" -b1000 J" -0L" -0P" +b1000 d|7Sd +017/]f +b1000 0?lo9 +05Gki< +b1000 AvJcz +0jJ+ac +b1000 sC0ee +0V1=.M +06!E3h +b1000 j,j"< +0(v:Ix +b1000 OXs&> +0l=z|A +b1000 iC]Q& +0hP6aI +b1000 "I):@ +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1000 ,SVcw +07}oLq +0a~%H' +b1000 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1001 A" -0C" -1D" -0G" -b1001 J" -0L" -0M" -0P" +b1001 d|7Sd +017/]f +b1001 0?lo9 +05Gki< +b1001 AvJcz +0jJ+ac +b1001 sC0ee +0V1=.M +b1001 j,j"< +0(v:Ix +b1001 OXs&> +0l=z|A +b1001 iC]Q& +0hP6aI +172ujb +b1001 "I):@ +0Vvn/E +0.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1001 ,SVcw +07}oLq +0a~%H' +b1001 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1010 A" -0C" -0G" -b1010 J" -0L" -0P" +b1010 d|7Sd +017/]f +b1010 0?lo9 +05Gki< +b1010 AvJcz +0jJ+ac +b1010 sC0ee +0V1=.M +b1010 j,j"< +0(v:Ix +1J[r\_ +b1010 OXs&> +0l=z|A +1+UTFi +b1010 iC]Q& +0hP6aI +b1010 "I):@ +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1010 ,SVcw +07}oLq +0a~%H' +b1010 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1011 A" -0C" -0G" -b1011 J" -0L" -0P" +b1011 d|7Sd +017/]f +b1011 0?lo9 +05Gki< +b1011 AvJcz +0jJ+ac +b1011 sC0ee +0V1=.M +b1011 j,j"< +0(v:Ix +0J[r\_ +b1011 OXs&> +0l=z|A +b1011 iC]Q& +0hP6aI +b1011 "I):@ +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1011 ,SVcw +07}oLq +0a~%H' +b1011 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1100 A" -0C" -0G" -b1100 J" -0L" -0P" +b1100 d|7Sd +017/]f +b1100 0?lo9 +05Gki< +b1100 AvJcz +0jJ+ac +b1100 sC0ee +0V1=.M +b1100 j,j"< +0(v:Ix +b1100 OXs&> +0l=z|A +0+UTFi +b1100 iC]Q& +0hP6aI +b1100 "I):@ +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1100 ,SVcw +07}oLq +0a~%H' +b1100 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1101 A" -0C" -0D" -0G" -b1101 J" -0L" -0P" +b1101 d|7Sd +017/]f +b1101 0?lo9 +05Gki< +b1101 AvJcz +0jJ+ac +b1101 sC0ee +0V1=.M +b1101 j,j"< +0(v:Ix +b1101 OXs&> +0l=z|A +b1101 iC]Q& +0hP6aI +072ujb +b1101 "I):@ +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1101 ,SVcw +07}oLq +0a~%H' +b1101 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1110 A" -0C" -0G" -b1110 J" -0L" -1M" -0P" +b1110 d|7Sd +017/]f +b1110 0?lo9 +05Gki< +b1110 AvJcz +0jJ+ac +b1110 sC0ee +0V1=.M +b1110 j,j"< +0(v:Ix +b1110 OXs&> +0l=z|A +b1110 iC]Q& +0hP6aI +b1110 "I):@ +0Vvn/E +1.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1110 ,SVcw +07}oLq +0a~%H' +b1110 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -b1111 A" -0C" -0G" -b1111 J" -0L" -0M" -0P" +b1111 d|7Sd +017/]f +b1111 0?lo9 +05Gki< +b1111 AvJcz +0jJ+ac +b1111 sC0ee +0V1=.M +b1111 j,j"< +0(v:Ix +b1111 OXs&> +0l=z|A +b1111 iC]Q& +0hP6aI +b1111 "I):@ +0Vvn/E +0.[P*8 +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v\H$ +0B(P|B +0.7gMQ +b1111 ,SVcw +07}oLq +0a~%H' +b1111 8K@uI +0B" -1C" -1G" -1L" -1P" +117/]f +15Gki< +1jJ+ac +1V1=.M +1(v:Ix +1l=z|A +1hP6aI +1Vvn/E +1$\W(J +1QI!iU +1EC,z> +1mm5\_ +1sfo}Z +1)|%6{ +1t'l~] +1[|v" -0C" -0G" -0L" -0P" +017/]f +05Gki< +0jJ+ac +0V1=.M +0(v:Ix +0l=z|A +0hP6aI +0Vvn/E +0$\W(J +0QI!iU +0EC,z> +0mm5\_ +0sfo}Z +0)|%6{ +0t'l~] +0[|v \0 $end -$var reg 8 N \1 $end +$var reg 8 dr6lq \0 $end +$var reg 8 fc"UR \1 $end $upscope $end $upscope $end $scope struct \[6] $end $scope struct mem $end -$var reg 8 ? \0 $end -$var reg 8 O \1 $end +$var reg 8 xpw5\ \0 $end +$var reg 8 dd$?K \1 $end $upscope $end $upscope $end $scope struct \[7] $end $scope struct mem $end -$var reg 8 @ \0 $end -$var reg 8 P \1 $end +$var reg 8 vH;}2 \0 $end +$var reg 8 ILB?4 \1 $end $upscope $end $upscope $end $scope struct \[8] $end $scope struct mem $end -$var reg 8 A \0 $end -$var reg 8 Q \1 $end +$var reg 8 /X4v> \0 $end +$var reg 8 &V*EE \1 $end $upscope $end $upscope $end $scope struct \[9] $end $scope struct mem $end -$var reg 8 B \0 $end -$var reg 8 R \1 $end +$var reg 8 IczZe \0 $end +$var reg 8 unX>R \1 $end $upscope $end $upscope $end $scope struct \[10] $end $scope struct mem $end -$var reg 8 C \0 $end -$var reg 8 S \1 $end +$var reg 8 0hTyY \0 $end +$var reg 8 9K_w) \1 $end $upscope $end $upscope $end $scope struct \[11] $end $scope struct mem $end -$var reg 8 D \0 $end -$var reg 8 T \1 $end +$var reg 8 +C/Sz \0 $end +$var reg 8 }Y{:o \1 $end $upscope $end $upscope $end $scope struct \[12] $end $scope struct mem $end -$var reg 8 E \0 $end -$var reg 8 U \1 $end +$var reg 8 S6-5u \0 $end +$var reg 8 9q6)w \1 $end $upscope $end $upscope $end $scope struct \[13] $end $scope struct mem $end -$var reg 8 F \0 $end -$var reg 8 V \1 $end +$var reg 8 !c -b100011 N -b1 ? -b100011 O -b1 @ -b100011 P -b1 A -b100011 Q -b1 B -b100011 R -b1 C -b100011 S -b1 D -b100011 T -b1 E -b100011 U -b1 F -b100011 V -b1 G -b100011 W -b1 H -b100011 X -b0 ! -0" -0# -b0 $ -b0 % -b0 & -0' -0( -b0 ) -b0 * -0+ -0, -b0 - -0. -0/ -b0 0 -b0 1 -b0 2 -03 -04 -b0 5 -b0 6 -07 -08 +b1 4d[cL +b100011 {qEUV +b1 c`NPR +b100011 vK:33 +b1 ihYp_ +b100011 QZb%P +b1 ,O%<$ +b100011 @?uSf +b1 N[IF& +b100011 Zf9lw +b1 dr6lq +b100011 fc"UR +b1 xpw5\ +b100011 dd$?K +b1 vH;}2 +b100011 ILB?4 +b1 /X4v> +b100011 &V*EE +b1 IczZe +b100011 unX>R +b1 0hTyY +b100011 9K_w) +b1 +C/Sz +b100011 }Y{:o +b1 S6-5u +b100011 9q6)w +b1 !c8T +1DC/;" #2000000 -1" -0# -b1 $ -b100011 % -1' -0( -b10000 ) -b100000 * -1+ -1, -1. -0/ -b1 0 -b100011 1 -13 -04 -b10000 5 -b100000 6 -17 -18 +1o.T)# +0:XNoK +b1 Cq]A% +b100011 avKNj +1#9)l8 +0QX!^| +b10000 G"IXQ +b100000 h\t:E +1FCuNz +1/Y7%J +1jy78F +0\o>8T +b1 \k#l +b100011 olx7O +1"7?3I +0DC/;" +b10000 0DrV' +b100000 wa!Cx +1u^b&R +1Ic\|v #3000000 -b10000 9 -b100000 I -1# -b10000 $ -b100000 % -1( -1/ -b10000 0 -b100000 1 -14 +b10000 4d[cL +b100000 {qEUV +1:XNoK +b10000 Cq]A% +b100000 avKNj +1QX!^| +1\o>8T +b10000 \k#l +b100000 olx7O +1DC/;" #4000000 -0# -0( -b110000 ) -b1000000 * -0+ -0/ -04 -b110000 5 -b1000000 6 -07 +0:XNoK +0QX!^| +b110000 G"IXQ +b1000000 h\t:E +0FCuNz +0\o>8T +0DC/;" +b110000 0DrV' +b1000000 wa!Cx +0u^b&R #5000000 -b10000 9 -b1000000 I -1# -b1000000 % -1( -1/ -b1000000 1 -14 +b10000 4d[cL +b1000000 {qEUV +1:XNoK +b1000000 avKNj +1QX!^| +1\o>8T +b1000000 olx7O +1DC/;" #6000000 -0# -0( -b1010000 ) -b1100000 * -1+ -0, -0/ -04 -b1010000 5 -b1100000 6 -17 -08 +0:XNoK +0QX!^| +b1010000 G"IXQ +b1100000 h\t:E +1FCuNz +0/Y7%J +0\o>8T +0DC/;" +b1010000 0DrV' +b1100000 wa!Cx +1u^b&R +0Ic\|v #7000000 -b1010000 9 -b1000000 I -1# -b1010000 $ -1( -1/ -b1010000 0 -14 +b1010000 4d[cL +b1000000 {qEUV +1:XNoK +b1010000 Cq]A% +1QX!^| +1\o>8T +b1010000 \k#l +1DC/;" #8000000 -0# -0( -b1110000 ) -b10000000 * -0+ -0/ -04 -b1110000 5 -b10000000 6 -07 +0:XNoK +0QX!^| +b1110000 G"IXQ +b10000000 h\t:E +0FCuNz +0\o>8T +0DC/;" +b1110000 0DrV' +b10000000 wa!Cx +0u^b&R #9000000 -1# -1( -1/ -14 +1:XNoK +1QX!^| +1\o>8T +1DC/;" #10000000 -0# -0' -0( -b10010000 ) -b10100000 * -0/ -03 -04 -b10010000 5 -b10100000 6 +0:XNoK +0#9)l8 +0QX!^| +b10010000 G"IXQ +b10100000 h\t:E +0\o>8T +0"7?3I +0DC/;" +b10010000 0DrV' +b10100000 wa!Cx #11000000 -1# -1( -1/ -14 +1:XNoK +1QX!^| +1\o>8T +1DC/;" #12000000 -0# -b1 & -1' -0( -1+ -1, -0/ -b1 2 -13 -04 -17 -18 +0:XNoK +b1 p8T +b1 H,W!J +1"7?3I +0DC/;" +1u^b&R +1Ic\|v #13000000 -b10010000 : -b10100000 J -1# -1( -1/ -14 +b10010000 c`NPR +b10100000 vK:33 +1:XNoK +1QX!^| +1\o>8T +1DC/;" #14000000 -0# -b10 & -0( -b10110000 ) -b11000000 * -0/ -b10 2 -04 -b10110000 5 -b11000000 6 +0:XNoK +b10 p8T +b10 H,W!J +0DC/;" +b10110000 0DrV' +b11000000 wa!Cx #15000000 -b10110000 ; -b11000000 K -1# -1( -1/ -14 +b10110000 ihYp_ +b11000000 QZb%P +1:XNoK +1QX!^| +1\o>8T +1DC/;" #16000000 -0# -0' -0( -b11010000 ) -b11100000 * -0/ -03 -04 -b11010000 5 -b11100000 6 +0:XNoK +0#9)l8 +0QX!^| +b11010000 G"IXQ +b11100000 h\t:E +0\o>8T +0"7?3I +0DC/;" +b11010000 0DrV' +b11100000 wa!Cx #17000000 -1# -1( -1/ -14 +1:XNoK +1QX!^| +1\o>8T +1DC/;" #18000000 -b1 ! -0# -b10010000 $ -b10100000 % -0( -b1 - -0/ -b10010000 0 -b10100000 1 -04 +b1 z&0Qk +0:XNoK +b10010000 Cq]A% +b10100000 avKNj +0QX!^| +b1 ="2wN +0\o>8T +b10010000 \k#l +b10100000 olx7O +0DC/;" #19000000 -1# -1( -1/ -14 +1:XNoK +1QX!^| +1\o>8T +1DC/;" #20000000 -b10 ! -0# -b10110000 $ -b11000000 % -0( -b10 - -0/ -b10110000 0 -b11000000 1 -04 +b10 z&0Qk +0:XNoK +b10110000 Cq]A% +b11000000 avKNj +0QX!^| +b10 ="2wN +0\o>8T +b10110000 \k#l +b11000000 olx7O +0DC/;" #21000000 -1# -1( -1/ -14 +1:XNoK +1QX!^| +1\o>8T +1DC/;" #22000000 -0# -0( -0/ -04 +0:XNoK +0QX!^| +0\o>8T +0DC/;" diff --git a/crates/fayalite/tests/sim/expected/memories2.vcd b/crates/fayalite/tests/sim/expected/memories2.vcd index 0ac20f1..182029e 100644 --- a/crates/fayalite/tests/sim/expected/memories2.vcd +++ b/crates/fayalite/tests/sim/expected/memories2.vcd @@ -1,363 +1,363 @@ $timescale 1 ps $end $scope module memories2 $end $scope struct rw $end -$var wire 3 ! addr $end -$var wire 1 " en $end -$var wire 1 # clk $end -$var wire 2 $ rdata $end -$var wire 1 % wmode $end -$var wire 2 & wdata $end -$var wire 1 ' wmask $end +$var wire 3 xkkG> addr $end +$var wire 1 HoA{1 en $end +$var wire 1 C*2BQ clk $end +$var wire 2 ueF!x rdata $end +$var wire 1 m\l/p wmode $end +$var wire 2 WmjEh wdata $end +$var wire 1 +3E@H wmask $end $upscope $end $scope struct mem $end $scope struct contents $end $scope struct \[0] $end $scope struct mem $end -$var string 1 1 \$tag $end -$var reg 1 6 HdlSome $end +$var string 1 ujd9u \$tag $end +$var reg 1 *5lV# HdlSome $end $upscope $end $upscope $end $scope struct \[1] $end $scope struct mem $end -$var string 1 2 \$tag $end -$var reg 1 7 HdlSome $end +$var string 1 *qL|n \$tag $end +$var reg 1 ^/FDC HdlSome $end $upscope $end $upscope $end $scope struct \[2] $end $scope struct mem $end -$var string 1 3 \$tag $end -$var reg 1 8 HdlSome $end +$var string 1 r*7|@ \$tag $end +$var reg 1 YMY"3 HdlSome $end $upscope $end $upscope $end $scope struct \[3] $end $scope struct mem $end -$var string 1 4 \$tag $end -$var reg 1 9 HdlSome $end +$var string 1 jj/6F \$tag $end +$var reg 1 S+Uy} HdlSome $end $upscope $end $upscope $end $scope struct \[4] $end $scope struct mem $end -$var string 1 5 \$tag $end -$var reg 1 : HdlSome $end +$var string 1 H72IP \$tag $end +$var reg 1 vH{({ HdlSome $end $upscope $end $upscope $end $upscope $end $scope struct rw0 $end -$var wire 3 ( addr $end -$var wire 1 ) en $end -$var wire 1 * clk $end +$var wire 3 uabMI addr $end +$var wire 1 LEn[l en $end +$var wire 1 OpH)U clk $end $scope struct rdata $end -$var string 1 + \$tag $end -$var wire 1 , HdlSome $end +$var string 1 [}rcZ \$tag $end +$var wire 1 5f=Y~ HdlSome $end $upscope $end -$var wire 1 - wmode $end +$var wire 1 6c_9_ wmode $end $scope struct wdata $end -$var string 1 . \$tag $end -$var wire 1 / HdlSome $end +$var string 1 $hfRN \$tag $end +$var wire 1 rop,b HdlSome $end $upscope $end -$var wire 1 0 wmask $end +$var wire 1 Ly=US wmask $end $upscope $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -sHdlSome\x20(1) 1 -16 -sHdlSome\x20(1) 2 -17 -sHdlSome\x20(1) 3 -18 -sHdlSome\x20(1) 4 -19 -sHdlSome\x20(1) 5 -1: -b0 ! -0" -0# -b0 $ -0% -b0 & -0' -b0 ( -0) -0* -sHdlNone\x20(0) + -0, -0- -sHdlNone\x20(0) . -0/ -00 +sHdlSome\x20(1) ujd9u +1*5lV# +sHdlSome\x20(1) *qL|n +1^/FDC +sHdlSome\x20(1) r*7|@ +1YMY"3 +sHdlSome\x20(1) jj/6F +1S+Uy} +sHdlSome\x20(1) H72IP +1vH{({ +b0 xkkG> +0HoA{1 +0C*2BQ +b0 ueF!x +0m\l/p +b0 WmjEh +0+3E@H +b0 uabMI +0LEn[l +0OpH)U +sHdlNone\x20(0) [}rcZ +05f=Y~ +06c_9_ +sHdlNone\x20(0) $hfRN +0rop,b +0Ly=US $end #250000 -1# -1* +1C*2BQ +1OpH)U #500000 #750000 -0# -0* +0C*2BQ +0OpH)U #1000000 -1" -1) +1HoA{1 +1LEn[l #1250000 -1# -b11 $ -1* -sHdlSome\x20(1) + -1, +1C*2BQ +b11 ueF!x +1OpH)U +sHdlSome\x20(1) [}rcZ +15f=Y~ #1500000 #1750000 -0# -0* +0C*2BQ +0OpH)U #2000000 -0" -0) +0HoA{1 +0LEn[l #2250000 -1# -b0 $ -1* -sHdlNone\x20(0) + -0, +1C*2BQ +b0 ueF!x +1OpH)U +sHdlNone\x20(0) [}rcZ +05f=Y~ #2500000 #2750000 -0# -0* +0C*2BQ +0OpH)U #3000000 -1" -1% -1' -1) -1- -10 +1HoA{1 +1m\l/p +1+3E@H +1LEn[l +16c_9_ +1Ly=US #3250000 -sHdlNone\x20(0) 1 -06 -1# -1* +sHdlNone\x20(0) ujd9u +0*5lV# +1C*2BQ +1OpH)U #3500000 #3750000 -0# -0* +0C*2BQ +0OpH)U #4000000 -0% -0' -0- -00 +0m\l/p +0+3E@H +06c_9_ +0Ly=US #4250000 -1# -1* +1C*2BQ +1OpH)U #4500000 #4750000 -0# -0* +0C*2BQ +0OpH)U #5000000 -1% -b11 & -1- -sHdlSome\x20(1) . -1/ +1m\l/p +b11 WmjEh +16c_9_ +sHdlSome\x20(1) $hfRN +1rop,b #5250000 -1# -1* +1C*2BQ +1OpH)U #5500000 #5750000 -0# -0* +0C*2BQ +0OpH)U #6000000 -b1 ! -b1 & -1' -b1 ( -0/ -10 +b1 xkkG> +b1 WmjEh +1+3E@H +b1 uabMI +0rop,b +1Ly=US #6250000 -sHdlSome\x20(1) 2 -07 -1# -1* +sHdlSome\x20(1) *qL|n +0^/FDC +1C*2BQ +1OpH)U #6500000 #6750000 -0# -0* +0C*2BQ +0OpH)U #7000000 -b10 ! -b10 & -b10 ( -sHdlNone\x20(0) . +b10 xkkG> +b10 WmjEh +b10 uabMI +sHdlNone\x20(0) $hfRN #7250000 -sHdlNone\x20(0) 3 -08 -1# -1* +sHdlNone\x20(0) r*7|@ +0YMY"3 +1C*2BQ +1OpH)U #7500000 #7750000 -0# -0* +0C*2BQ +0OpH)U #8000000 -b11 ! -b11 & -b11 ( -sHdlSome\x20(1) . -1/ +b11 xkkG> +b11 WmjEh +b11 uabMI +sHdlSome\x20(1) $hfRN +1rop,b #8250000 -sHdlSome\x20(1) 4 -19 -1# -1* +sHdlSome\x20(1) jj/6F +1S+Uy} +1C*2BQ +1OpH)U #8500000 #8750000 -0# -0* +0C*2BQ +0OpH)U #9000000 -b100 ! -b10 & -b100 ( -sHdlNone\x20(0) . -0/ +b100 xkkG> +b10 WmjEh +b100 uabMI +sHdlNone\x20(0) $hfRN +0rop,b #9250000 -sHdlNone\x20(0) 5 -0: -1# -1* +sHdlNone\x20(0) H72IP +0vH{({ +1C*2BQ +1OpH)U #9500000 #9750000 -0# -0* +0C*2BQ +0OpH)U #10000000 -b101 ! -b1 & -b101 ( -sHdlSome\x20(1) . +b101 xkkG> +b1 WmjEh +b101 uabMI +sHdlSome\x20(1) $hfRN #10250000 -1# -1* +1C*2BQ +1OpH)U #10500000 #10750000 -0# -0* +0C*2BQ +0OpH)U #11000000 -b110 ! -b110 ( +b110 xkkG> +b110 uabMI #11250000 -1# -1* +1C*2BQ +1OpH)U #11500000 #11750000 -0# -0* +0C*2BQ +0OpH)U #12000000 -b111 ! -b111 ( +b111 xkkG> +b111 uabMI #12250000 -1# -1* +1C*2BQ +1OpH)U #12500000 #12750000 -0# -0* +0C*2BQ +0OpH)U #13000000 -0% -b0 & -0' -0- -sHdlNone\x20(0) . -00 +0m\l/p +b0 WmjEh +0+3E@H +06c_9_ +sHdlNone\x20(0) $hfRN +0Ly=US #13250000 -1# -1* +1C*2BQ +1OpH)U #13500000 #13750000 -0# -0* +0C*2BQ +0OpH)U #14000000 -b110 ! -b110 ( +b110 xkkG> +b110 uabMI #14250000 -1# -1* +1C*2BQ +1OpH)U #14500000 #14750000 -0# -0* +0C*2BQ +0OpH)U #15000000 -b101 ! -b101 ( +b101 xkkG> +b101 uabMI #15250000 -1# -1* +1C*2BQ +1OpH)U #15500000 #15750000 -0# -0* +0C*2BQ +0OpH)U #16000000 -b100 ! -b100 ( +b100 xkkG> +b100 uabMI #16250000 -1# -1* +1C*2BQ +1OpH)U #16500000 #16750000 -0# -0* +0C*2BQ +0OpH)U #17000000 -b11 ! -b11 ( +b11 xkkG> +b11 uabMI #17250000 -1# -b11 $ -1* -sHdlSome\x20(1) + -1, +1C*2BQ +b11 ueF!x +1OpH)U +sHdlSome\x20(1) [}rcZ +15f=Y~ #17500000 #17750000 -0# -0* +0C*2BQ +0OpH)U #18000000 -b10 ! -b10 ( +b10 xkkG> +b10 uabMI #18250000 -1# -b0 $ -1* -sHdlNone\x20(0) + -0, +1C*2BQ +b0 ueF!x +1OpH)U +sHdlNone\x20(0) [}rcZ +05f=Y~ #18500000 #18750000 -0# -0* +0C*2BQ +0OpH)U #19000000 -b0 ! -b0 ( +b0 xkkG> +b0 uabMI #19250000 -1# -1* +1C*2BQ +1OpH)U #19500000 #19750000 -0# -0* +0C*2BQ +0OpH)U #20000000 -b1 ! -b1 ( +b1 xkkG> +b1 uabMI #20250000 -1# -b1 $ -1* -sHdlSome\x20(1) + +1C*2BQ +b1 ueF!x +1OpH)U +sHdlSome\x20(1) [}rcZ #20500000 #20750000 -0# -0* +0C*2BQ +0OpH)U #21000000 -b0 ! -0" -b0 ( -0) +b0 xkkG> +0HoA{1 +b0 uabMI +0LEn[l #21250000 -1# -b0 $ -1* -sHdlNone\x20(0) + +1C*2BQ +b0 ueF!x +1OpH)U +sHdlNone\x20(0) [}rcZ #21500000 #21750000 -0# -0* +0C*2BQ +0OpH)U #22000000 diff --git a/crates/fayalite/tests/sim/expected/memories3.vcd b/crates/fayalite/tests/sim/expected/memories3.vcd index 32ee75e..9495de9 100644 --- a/crates/fayalite/tests/sim/expected/memories3.vcd +++ b/crates/fayalite/tests/sim/expected/memories3.vcd @@ -1,836 +1,836 @@ $timescale 1 ps $end $scope module memories3 $end $scope struct r $end -$var wire 3 ! addr $end -$var wire 1 " en $end -$var wire 1 # clk $end +$var wire 3 }Q=~y addr $end +$var wire 1 ,Ca!' en $end +$var wire 1 dJF\@ clk $end $scope struct data $end -$var wire 8 $ \[0] $end -$var wire 8 % \[1] $end -$var wire 8 & \[2] $end -$var wire 8 ' \[3] $end -$var wire 8 ( \[4] $end -$var wire 8 ) \[5] $end -$var wire 8 * \[6] $end -$var wire 8 + \[7] $end +$var wire 8 "w$'Q \[0] $end +$var wire 8 mIo&U \[1] $end +$var wire 8 LJ\m% \[2] $end +$var wire 8 `Zp>N \[3] $end +$var wire 8 YR.PG \[4] $end +$var wire 8 BZ&)B \[5] $end +$var wire 8 _$[8D \[6] $end +$var wire 8 tc)n] \[7] $end $upscope $end $upscope $end $scope struct w $end -$var wire 3 , addr $end -$var wire 1 - en $end -$var wire 1 . clk $end +$var wire 3 bs-Rg addr $end +$var wire 1 *T~2b en $end +$var wire 1 }[YPW clk $end $scope struct data $end -$var wire 8 / \[0] $end -$var wire 8 0 \[1] $end -$var wire 8 1 \[2] $end -$var wire 8 2 \[3] $end -$var wire 8 3 \[4] $end -$var wire 8 4 \[5] $end -$var wire 8 5 \[6] $end -$var wire 8 6 \[7] $end +$var wire 8 6,aYz \[0] $end +$var wire 8 Bq5kY \[1] $end +$var wire 8 :lN4y \[2] $end +$var wire 8 +9uC] \[3] $end +$var wire 8 /EG3; \[4] $end +$var wire 8 >=e$j \[5] $end +$var wire 8 >wz^~ \[6] $end +$var wire 8 CYt2z \[7] $end $upscope $end $scope struct mask $end -$var wire 1 7 \[0] $end -$var wire 1 8 \[1] $end -$var wire 1 9 \[2] $end -$var wire 1 : \[3] $end -$var wire 1 ; \[4] $end -$var wire 1 < \[5] $end -$var wire 1 = \[6] $end -$var wire 1 > \[7] $end +$var wire 1 :.XL} \[0] $end +$var wire 1 0b%VN \[1] $end +$var wire 1 *w)7y \[2] $end +$var wire 1 1dg() \[3] $end +$var wire 1 s%c_Q \[0] $end +$var reg 8 B$aO# \[1] $end +$var reg 8 .=-:e \[2] $end +$var reg 8 WqHtO \[3] $end +$var reg 8 \P/B8 \[4] $end +$var reg 8 ~f|@~ \[5] $end +$var reg 8 [xw38 \[6] $end +$var reg 8 ,mMiC \[7] $end $upscope $end $upscope $end $scope struct \[6] $end $scope struct mem $end -$var reg 8 c \[0] $end -$var reg 8 k \[1] $end -$var reg 8 s \[2] $end -$var reg 8 { \[3] $end -$var reg 8 %" \[4] $end -$var reg 8 -" \[5] $end -$var reg 8 5" \[6] $end -$var reg 8 =" \[7] $end +$var reg 8 T){Kr \[0] $end +$var reg 8 JCt-5 \[1] $end +$var reg 8 JJ`q% \[2] $end +$var reg 8 &8m;f \[3] $end +$var reg 8 .N&;O \[4] $end +$var reg 8 9CPW} \[5] $end +$var reg 8 ~cUnd \[6] $end +$var reg 8 S6,C. \[7] $end $upscope $end $upscope $end $scope struct \[7] $end $scope struct mem $end -$var reg 8 d \[0] $end -$var reg 8 l \[1] $end -$var reg 8 t \[2] $end -$var reg 8 | \[3] $end -$var reg 8 &" \[4] $end -$var reg 8 ." \[5] $end -$var reg 8 6" \[6] $end -$var reg 8 >" \[7] $end +$var reg 8 h,t%t \[0] $end +$var reg 8 M.'tT \[1] $end +$var reg 8 WH^lq \[2] $end +$var reg 8 wk@1l \[3] $end +$var reg 8 XPVW/ \[4] $end +$var reg 8 8i**= \[5] $end +$var reg 8 T7yLi \[6] $end +$var reg 8 xPnYC \[7] $end $upscope $end $upscope $end $upscope $end $scope struct r0 $end -$var wire 3 ? addr $end -$var wire 1 @ en $end -$var wire 1 A clk $end +$var wire 3 ]7,pz addr $end +$var wire 1 ]ky*D en $end +$var wire 1 pK0f; clk $end $scope struct data $end -$var wire 8 B \[0] $end -$var wire 8 C \[1] $end -$var wire 8 D \[2] $end -$var wire 8 E \[3] $end -$var wire 8 F \[4] $end -$var wire 8 G \[5] $end -$var wire 8 H \[6] $end -$var wire 8 I \[7] $end +$var wire 8 Wz+1. \[0] $end +$var wire 8 q-WOU \[1] $end +$var wire 8 ,iWd9 \[2] $end +$var wire 8 P,^c) \[3] $end +$var wire 8 s?0AD \[4] $end +$var wire 8 {,&!. \[5] $end +$var wire 8 0~wS+ \[6] $end +$var wire 8 ZqG9i \[7] $end $upscope $end $upscope $end $scope struct w1 $end -$var wire 3 J addr $end -$var wire 1 K en $end -$var wire 1 L clk $end +$var wire 3 iuiB`l[ \[6] $end +$var wire 8 481V} \[7] $end $upscope $end $scope struct mask $end -$var wire 1 U \[0] $end -$var wire 1 V \[1] $end -$var wire 1 W \[2] $end -$var wire 1 X \[3] $end -$var wire 1 Y \[4] $end -$var wire 1 Z \[5] $end -$var wire 1 [ \[6] $end -$var wire 1 \ \[7] $end +$var wire 1 E`@Pc \[0] $end +$var wire 1 Hm9Lt \[1] $end +$var wire 1 D@ZT~ \[2] $end +$var wire 1 %ZXkA \[3] $end +$var wire 1 dO-sf \[4] $end +$var wire 1 uE-x9 \[5] $end +$var wire 1 [w<$[ \[6] $end +$var wire 1 *7bb6 \[7] $end $upscope $end $upscope $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -b0 ] -b0 e -b0 m -b0 u -b0 } -b0 '" -b0 /" -b0 7" -b0 ^ -b0 f -b0 n -b0 v -b0 ~ -b0 (" -b0 0" -b0 8" -b0 _ -b0 g -b0 o -b0 w -b0 !" -b0 )" -b0 1" -b0 9" -b0 ` -b0 h -b0 p -b0 x -b0 "" -b0 *" -b0 2" -b0 :" -b0 a -b0 i -b0 q -b0 y -b0 #" -b0 +" -b0 3" -b0 ;" -b0 b -b0 j -b0 r -b0 z -b0 $" -b0 ," -b0 4" -b0 <" -b0 c -b0 k -b0 s -b0 { -b0 %" -b0 -" -b0 5" -b0 =" -b0 d -b0 l -b0 t -b0 | -b0 &" -b0 ." -b0 6" -b0 >" -b0 ! -0" -0# -b0 $ -b0 % -b0 & -b0 ' -b0 ( -b0 ) -b0 * -b0 + -b0 , -1- -0. -b10010 / -b110100 0 -b1010110 1 -b1111000 2 -b10011010 3 -b10111100 4 -b11011110 5 -b11110000 6 -07 -18 -09 -1: -1; -0< -0= -1> -b0 ? -0@ -0A -b0 B -b0 C -b0 D -b0 E -b0 F -b0 G -b0 H -b0 I -b0 J -1K -0L -b10010 M -b110100 N -b1010110 O -b1111000 P -b10011010 Q -b10111100 R -b11011110 S -b11110000 T -0U -1V -0W -1X -1Y -0Z -0[ -1\ +b0 bS^uZ +b0 +MZoR +b0 buliE +b0 X1my. +b0 pmEg% +b0 J;&2w +b0 #'ZC$ +b0 zdBci +b0 !=66X +b0 -#Dd6 +b0 l}7)5 +b0 8,]`a +b0 yES{c +b0 ;J^L" +b0 qUI{d +b0 %U;af +b0 ~\!qw +b0 \K4+l +b0 V7%F. +b0 R@/Mx +b0 ,VoRT +b0 `L=0w +b0 kP[@C +b0 2^Xew +b0 O&Qy} +b0 YRUF" +b0 c_Q +b0 B$aO# +b0 .=-:e +b0 WqHtO +b0 \P/B8 +b0 ~f|@~ +b0 [xw38 +b0 ,mMiC +b0 T){Kr +b0 JCt-5 +b0 JJ`q% +b0 &8m;f +b0 .N&;O +b0 9CPW} +b0 ~cUnd +b0 S6,C. +b0 h,t%t +b0 M.'tT +b0 WH^lq +b0 wk@1l +b0 XPVW/ +b0 8i**= +b0 T7yLi +b0 xPnYC +b0 }Q=~y +0,Ca!' +0dJF\@ +b0 "w$'Q +b0 mIo&U +b0 LJ\m% +b0 `Zp>N +b0 YR.PG +b0 BZ&)B +b0 _$[8D +b0 tc)n] +b0 bs-Rg +1*T~2b +0}[YPW +b10010 6,aYz +b110100 Bq5kY +b1010110 :lN4y +b1111000 +9uC] +b10011010 /EG3; +b10111100 >=e$j +b11011110 >wz^~ +b11110000 CYt2z +0:.XL} +10b%VN +0*w)7y +11dg() +1s%B`l[ +b11110000 481V} +0E`@Pc +1Hm9Lt +0D@ZT~ +1%ZXkA +1dO-sf +0uE-x9 +0[w<$[ +1*7bb6 $end #250000 -1# -1. -1A -1L +1dJF\@ +1}[YPW +1pK0f; +1=[Eug #500000 #750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #1000000 -1" -b1 , -0- -b0 / -b0 0 -b0 1 -b0 2 -b0 3 -b0 4 -b0 5 -b0 6 -08 -0: -0; -0> -1@ -b1 J -0K -b0 M -b0 N -b0 O -b0 P -b0 Q -b0 R -b0 S -b0 T -0V -0X -0Y -0\ +1,Ca!' +b1 bs-Rg +0*T~2b +b0 6,aYz +b0 Bq5kY +b0 :lN4y +b0 +9uC] +b0 /EG3; +b0 >=e$j +b0 >wz^~ +b0 CYt2z +00b%VN +01dg() +0s%B`l[ +b0 481V} +0Hm9Lt +0%ZXkA +0dO-sf +0*7bb6 #1250000 -b0 ] -b110100 e -b0 m -b1111000 u -b10011010 } -b0 '" -b0 /" -b11110000 7" -1# -1. -1A -1L +b0 bS^uZ +b110100 +MZoR +b0 buliE +b1111000 X1my. +b10011010 pmEg% +b0 J;&2w +b0 #'ZC$ +b11110000 zdBci +1dJF\@ +1}[YPW +1pK0f; +1=[Eug #1500000 #1750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #2000000 #2250000 -1# -1. -1A -1L +1dJF\@ +1}[YPW +1pK0f; +1=[Eug #2500000 #2750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #3000000 -b0 , -1- -b11111110 / -b11011100 0 -b10111010 1 -b10011000 2 -b1110110 3 -b1010100 4 -b110010 5 -b10000 6 -17 -18 -19 -1: -1; -1< -1= -1> -b0 J -1K -b11111110 M -b11011100 N -b10111010 O -b10011000 P -b1110110 Q -b1010100 R -b110010 S -b10000 T -1U -1V -1W -1X -1Y -1Z -1[ -1\ +b0 bs-Rg +1*T~2b +b11111110 6,aYz +b11011100 Bq5kY +b10111010 :lN4y +b10011000 +9uC] +b1110110 /EG3; +b1010100 >=e$j +b110010 >wz^~ +b10000 CYt2z +1:.XL} +10b%VN +1*w)7y +11dg() +1s%B`l[ +b10000 481V} +1E`@Pc +1Hm9Lt +1D@ZT~ +1%ZXkA +1dO-sf +1uE-x9 +1[w<$[ +1*7bb6 #3250000 -1# -b110100 % -b1111000 ' -b10011010 ( -b11110000 + -1. -1A -b110100 C -b1111000 E -b10011010 F -b11110000 I -1L +1dJF\@ +b110100 mIo&U +b1111000 `Zp>N +b10011010 YR.PG +b11110000 tc)n] +1}[YPW +1pK0f; +b110100 q-WOU +b1111000 P,^c) +b10011010 s?0AD +b11110000 ZqG9i +1=[Eug #3500000 #3750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #4000000 #4250000 -b11111110 ] -b11011100 e -b10111010 m -b10011000 u -b1110110 } -b1010100 '" -b110010 /" -b10000 7" -1# -1. -1A -1L +b11111110 bS^uZ +b11011100 +MZoR +b10111010 buliE +b10011000 X1my. +b1110110 pmEg% +b1010100 J;&2w +b110010 #'ZC$ +b10000 zdBci +1dJF\@ +1}[YPW +1pK0f; +1=[Eug #4500000 #4750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #5000000 #5250000 -b11111110 ] -b11011100 e -b10111010 m -b10011000 u -b1110110 } -b1010100 '" -b110010 /" -b10000 7" -1# -1. -1A -1L +b11111110 bS^uZ +b11011100 +MZoR +b10111010 buliE +b10011000 X1my. +b1110110 pmEg% +b1010100 J;&2w +b110010 #'ZC$ +b10000 zdBci +1dJF\@ +1}[YPW +1pK0f; +1=[Eug #5500000 #5750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #6000000 -0" -b1 , -b10011 / -b1010111 0 -b10011011 1 -b11011111 2 -b10 3 -b1000110 4 -b10001010 5 -b11001110 6 -0@ -b1 J -b10011 M -b1010111 N -b10011011 O -b11011111 P -b10 Q -b1000110 R -b10001010 S -b11001110 T +0,Ca!' +b1 bs-Rg +b10011 6,aYz +b1010111 Bq5kY +b10011011 :lN4y +b11011111 +9uC] +b10 /EG3; +b1000110 >=e$j +b10001010 >wz^~ +b11001110 CYt2z +0]ky*D +b1 iuiB`l[ +b11001110 481V} #6250000 -b11111110 ] -b11011100 e -b10111010 m -b10011000 u -b1110110 } -b1010100 '" -b110010 /" -b10000 7" -1# -b11111110 $ -b11011100 % -b10111010 & -b10011000 ' -b1110110 ( -b1010100 ) -b110010 * -b10000 + -1. -1A -b11111110 B -b11011100 C -b10111010 D -b10011000 E -b1110110 F -b1010100 G -b110010 H -b10000 I -1L +b11111110 bS^uZ +b11011100 +MZoR +b10111010 buliE +b10011000 X1my. +b1110110 pmEg% +b1010100 J;&2w +b110010 #'ZC$ +b10000 zdBci +1dJF\@ +b11111110 "w$'Q +b11011100 mIo&U +b10111010 LJ\m% +b10011000 `Zp>N +b1110110 YR.PG +b1010100 BZ&)B +b110010 _$[8D +b10000 tc)n] +1}[YPW +1pK0f; +b11111110 Wz+1. +b11011100 q-WOU +b10111010 ,iWd9 +b10011000 P,^c) +b1110110 s?0AD +b1010100 {,&!. +b110010 0~wS+ +b10000 ZqG9i +1=[Eug #6500000 #6750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #7000000 -b10 , -b1110100 / -b1100101 0 -b1110011 1 -b1110100 2 -b1101001 3 -b1101110 4 -b1100111 5 -b100001 6 -b10 J -b1110100 M -b1100101 N -b1110011 O -b1110100 P -b1101001 Q -b1101110 R -b1100111 S -b100001 T +b10 bs-Rg +b1110100 6,aYz +b1100101 Bq5kY +b1110011 :lN4y +b1110100 +9uC] +b1101001 /EG3; +b1101110 >=e$j +b1100111 >wz^~ +b100001 CYt2z +b10 iuiB`l[ +b100001 481V} #7250000 -b10011 ^ -b1010111 f -b10011011 n -b11011111 v -b10 ~ -b1000110 (" -b10001010 0" -b11001110 8" -1# -b0 $ -b0 % -b0 & -b0 ' -b0 ( -b0 ) -b0 * -b0 + -1. -1A -b0 B -b0 C -b0 D -b0 E -b0 F -b0 G -b0 H -b0 I -1L +b10011 !=66X +b1010111 -#Dd6 +b10011011 l}7)5 +b11011111 8,]`a +b10 yES{c +b1000110 ;J^L" +b10001010 qUI{d +b11001110 %U;af +1dJF\@ +b0 "w$'Q +b0 mIo&U +b0 LJ\m% +b0 `Zp>N +b0 YR.PG +b0 BZ&)B +b0 _$[8D +b0 tc)n] +1}[YPW +1pK0f; +b0 Wz+1. +b0 q-WOU +b0 ,iWd9 +b0 P,^c) +b0 s?0AD +b0 {,&!. +b0 0~wS+ +b0 ZqG9i +1=[Eug #7500000 #7750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #8000000 -b11 , -b1101101 / -b1101111 0 -b1110010 1 -b1100101 2 -b100000 3 -b1110100 4 -b1110011 5 -b1110100 6 -b11 J -b1101101 M -b1101111 N -b1110010 O -b1100101 P -b100000 Q -b1110100 R -b1110011 S -b1110100 T +b11 bs-Rg +b1101101 6,aYz +b1101111 Bq5kY +b1110010 :lN4y +b1100101 +9uC] +b100000 /EG3; +b1110100 >=e$j +b1110011 >wz^~ +b1110100 CYt2z +b11 iuiB`l[ +b1110100 481V} #8250000 -b1110100 _ -b1100101 g -b1110011 o -b1110100 w -b1101001 !" -b1101110 )" -b1100111 1" -b100001 9" -1# -1. -1A -1L +b1110100 ~\!qw +b1100101 \K4+l +b1110011 V7%F. +b1110100 R@/Mx +b1101001 ,VoRT +b1101110 `L=0w +b1100111 kP[@C +b100001 2^Xew +1dJF\@ +1}[YPW +1pK0f; +1=[Eug #8500000 #8750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #9000000 -1" -b0 , -0- -b0 / -b0 0 -b0 1 -b0 2 -b0 3 -b0 4 -b0 5 -b0 6 -07 -08 -09 -0: -0; -0< -0= -0> -1@ -b0 J -0K -b0 M -b0 N -b0 O -b0 P -b0 Q -b0 R -b0 S -b0 T -0U -0V -0W -0X -0Y -0Z -0[ -0\ +1,Ca!' +b0 bs-Rg +0*T~2b +b0 6,aYz +b0 Bq5kY +b0 :lN4y +b0 +9uC] +b0 /EG3; +b0 >=e$j +b0 >wz^~ +b0 CYt2z +0:.XL} +00b%VN +0*w)7y +01dg() +0s%B`l[ +b0 481V} +0E`@Pc +0Hm9Lt +0D@ZT~ +0%ZXkA +0dO-sf +0uE-x9 +0[w<$[ +0*7bb6 #9250000 -b1101101 ` -b1101111 h -b1110010 p -b1100101 x -b100000 "" -b1110100 *" -b1110011 2" -b1110100 :" -1# -1. -1A -1L +b1101101 O&Qy} +b1101111 YRUF" +b1110010 N +b1110110 YR.PG +b1010100 BZ&)B +b110010 _$[8D +b10000 tc)n] +1}[YPW +1pK0f; +b11111110 Wz+1. +b11011100 q-WOU +b10111010 ,iWd9 +b10011000 P,^c) +b1110110 s?0AD +b1010100 {,&!. +b110010 0~wS+ +b10000 ZqG9i +1=[Eug #10500000 #10750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #11000000 -b10 ! -b10 ? +b10 }Q=~y +b10 ]7,pz #11250000 -1# -b10011 $ -b1010111 % -b10011011 & -b11011111 ' -b10 ( -b1000110 ) -b10001010 * -b11001110 + -1. -1A -b10011 B -b1010111 C -b10011011 D -b11011111 E -b10 F -b1000110 G -b10001010 H -b11001110 I -1L +1dJF\@ +b10011 "w$'Q +b1010111 mIo&U +b10011011 LJ\m% +b11011111 `Zp>N +b10 YR.PG +b1000110 BZ&)B +b10001010 _$[8D +b11001110 tc)n] +1}[YPW +1pK0f; +b10011 Wz+1. +b1010111 q-WOU +b10011011 ,iWd9 +b11011111 P,^c) +b10 s?0AD +b1000110 {,&!. +b10001010 0~wS+ +b11001110 ZqG9i +1=[Eug #11500000 #11750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #12000000 -b11 ! -b11 ? +b11 }Q=~y +b11 ]7,pz #12250000 -1# -b1110100 $ -b1100101 % -b1110011 & -b1110100 ' -b1101001 ( -b1101110 ) -b1100111 * -b100001 + -1. -1A -b1110100 B -b1100101 C -b1110011 D -b1110100 E -b1101001 F -b1101110 G -b1100111 H -b100001 I -1L +1dJF\@ +b1110100 "w$'Q +b1100101 mIo&U +b1110011 LJ\m% +b1110100 `Zp>N +b1101001 YR.PG +b1101110 BZ&)B +b1100111 _$[8D +b100001 tc)n] +1}[YPW +1pK0f; +b1110100 Wz+1. +b1100101 q-WOU +b1110011 ,iWd9 +b1110100 P,^c) +b1101001 s?0AD +b1101110 {,&!. +b1100111 0~wS+ +b100001 ZqG9i +1=[Eug #12500000 #12750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #13000000 -b0 ! -0" -b0 ? -0@ +b0 }Q=~y +0,Ca!' +b0 ]7,pz +0]ky*D #13250000 -1# -b1101101 $ -b1101111 % -b1110010 & -b1100101 ' -b100000 ( -b1110100 ) -b1110011 * -b1110100 + -1. -1A -b1101101 B -b1101111 C -b1110010 D -b1100101 E -b100000 F -b1110100 G -b1110011 H -b1110100 I -1L +1dJF\@ +b1101101 "w$'Q +b1101111 mIo&U +b1110010 LJ\m% +b1100101 `Zp>N +b100000 YR.PG +b1110100 BZ&)B +b1110011 _$[8D +b1110100 tc)n] +1}[YPW +1pK0f; +b1101101 Wz+1. +b1101111 q-WOU +b1110010 ,iWd9 +b1100101 P,^c) +b100000 s?0AD +b1110100 {,&!. +b1110011 0~wS+ +b1110100 ZqG9i +1=[Eug #13500000 #13750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #14000000 #14250000 -1# -b0 $ -b0 % -b0 & -b0 ' -b0 ( -b0 ) -b0 * -b0 + -1. -1A -b0 B -b0 C -b0 D -b0 E -b0 F -b0 G -b0 H -b0 I -1L +1dJF\@ +b0 "w$'Q +b0 mIo&U +b0 LJ\m% +b0 `Zp>N +b0 YR.PG +b0 BZ&)B +b0 _$[8D +b0 tc)n] +1}[YPW +1pK0f; +b0 Wz+1. +b0 q-WOU +b0 ,iWd9 +b0 P,^c) +b0 s?0AD +b0 {,&!. +b0 0~wS+ +b0 ZqG9i +1=[Eug #14500000 #14750000 -0# -0. -0A -0L +0dJF\@ +0}[YPW +0pK0f; +0=[Eug #15000000 diff --git a/crates/fayalite/tests/sim/expected/mod1.vcd b/crates/fayalite/tests/sim/expected/mod1.vcd index 0d1a6f4..bd8676f 100644 --- a/crates/fayalite/tests/sim/expected/mod1.vcd +++ b/crates/fayalite/tests/sim/expected/mod1.vcd @@ -1,47 +1,47 @@ $timescale 1 ps $end $scope module mod1 $end $scope struct o $end -$var wire 4 ! i $end -$var wire 2 " o $end -$var wire 2 # i2 $end -$var wire 4 $ o2 $end +$var wire 4 avK(^ i $end +$var wire 2 Q2~aG o $end +$var wire 2 DXK'| i2 $end +$var wire 4 cPuix o2 $end $upscope $end $scope struct child $end -$var wire 4 ) i $end -$var wire 2 * o $end -$var wire 2 + i2 $end -$var wire 4 , o2 $end +$var wire 4 ($5K7 i $end +$var wire 2 %6Wv" o $end +$var wire 2 +|-AU i2 $end +$var wire 4 Hw?%j o2 $end $upscope $end $scope module mod1_child $end -$var wire 4 % i $end -$var wire 2 & o $end -$var wire 2 ' i2 $end -$var wire 4 ( o2 $end +$var wire 4 4}s%= i $end +$var wire 2 }IY?g o $end +$var wire 2 of42K i2 $end +$var wire 4 D9]&= o2 $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -b11 ! -b11 " -b10 # -b1110 $ -b11 % -b11 & -b10 ' -b1110 ( -b11 ) -b11 * -b10 + -b1110 , +b11 avK(^ +b11 Q2~aG +b10 DXK'| +b1110 cPuix +b11 4}s%= +b11 }IY?g +b10 of42K +b1110 D9]&= +b11 ($5K7 +b11 %6Wv" +b10 +|-AU +b1110 Hw?%j $end #1000000 -b1010 ! -b10 " -b1111 $ -b1010 % -b10 & -b1111 ( -b1010 ) -b10 * -b1111 , +b1010 avK(^ +b10 Q2~aG +b1111 cPuix +b1010 4}s%= +b10 }IY?g +b1111 D9]&= +b1010 ($5K7 +b10 %6Wv" +b1111 Hw?%j #2000000 diff --git a/crates/fayalite/tests/sim/expected/phantom_const.vcd b/crates/fayalite/tests/sim/expected/phantom_const.vcd index ba3869b..8611124 100644 --- a/crates/fayalite/tests/sim/expected/phantom_const.vcd +++ b/crates/fayalite/tests/sim/expected/phantom_const.vcd @@ -1,31 +1,31 @@ $timescale 1 ps $end $scope module phantom_const $end $scope struct out $end -$var string 1 ! \[0] $end -$var string 1 " \[1] $end +$var string 1 Ru)8A \[0] $end +$var string 1 y&ssi \[1] $end $upscope $end $scope struct mem $end $scope struct contents $end $scope struct \[0] $end -$var string 1 ' mem $end +$var string 1 =+olp mem $end $upscope $end $upscope $end $scope struct r0 $end -$var string 0 # addr $end -$var wire 1 $ en $end -$var wire 1 % clk $end -$var string 1 & data $end +$var string 0 U5SS1 addr $end +$var wire 1 rx@_T en $end +$var wire 1 o[(us clk $end +$var string 1 %Bg(6 data $end $upscope $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -s0 ' -sPhantomConst([\"a\",\"b\"]) ! -sPhantomConst([\"a\",\"b\"]) " -s0 # -0$ -0% -sPhantomConst(\"mem_element\") & +s0 =+olp +sPhantomConst([\"a\",\"b\"]) Ru)8A +sPhantomConst([\"a\",\"b\"]) y&ssi +s0 U5SS1 +0rx@_T +0o[(us +sPhantomConst(\"mem_element\") %Bg(6 $end #1000000 diff --git a/crates/fayalite/tests/sim/expected/ripple_counter.vcd b/crates/fayalite/tests/sim/expected/ripple_counter.vcd index 550205f..8071550 100644 --- a/crates/fayalite/tests/sim/expected/ripple_counter.vcd +++ b/crates/fayalite/tests/sim/expected/ripple_counter.vcd @@ -1,1713 +1,1713 @@ $timescale 1 ps $end $scope module ripple_counter $end -$var wire 1 ! clk $end -$var wire 6 " o $end +$var wire 1 IR0qP clk $end +$var wire 6 f0Cen o $end $scope struct bits $end -$var wire 1 # \[0] $end -$var wire 1 $ \[1] $end -$var wire 1 % \[2] $end -$var wire 1 & \[3] $end -$var wire 1 ' \[4] $end -$var wire 1 ( \[5] $end +$var wire 1 -$(J- \[0] $end +$var wire 1 ," \[2] $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -0! -0" -0# -b0 $ -b0 % -b0 & +0Xz8w) +0GIFRf +0OJ`bb +b0 G!R[n +b0 (H=Za +b0 Q7>," $end #1000000 -1! -b1 $ +1Xz8w) +b1 G!R[n #2000000 -0! +0Xz8w) #3000000 -1! +1Xz8w) #4000000 -0! +0Xz8w) #5000000 -1! +1Xz8w) #6000000 -0! +0Xz8w) #7000000 -1! +1Xz8w) #8000000 -0! +0Xz8w) #9000000 -1! +1Xz8w) #10000000 -0! +0Xz8w) #11000000 -1! +1Xz8w) #12000000 -0! +0Xz8w) #13000000 -1! +1Xz8w) #14000000 -0! +0Xz8w) #15000000 -1" -b1 % +1GIFRf +b1 (H=Za #16000000 -0" +0GIFRf #17000000 -1! +1Xz8w) #18000000 -0! +0Xz8w) #19000000 -1! +1Xz8w) #20000000 -0! +0Xz8w) #21000000 -1! +1Xz8w) #22000000 -0! +0Xz8w) #23000000 -1# -b1 & +1OJ`bb +b1 Q7>," #24000000 -0# +0OJ`bb #25000000 -1! -b10 $ +1Xz8w) +b10 G!R[n #26000000 -0! +0Xz8w) #27000000 -1! +1Xz8w) #28000000 -0! +0Xz8w) #29000000 -1" -b10 % +1GIFRf +b10 (H=Za #30000000 -0" +0GIFRf #31000000 -1! +1Xz8w) #32000000 -0! +0Xz8w) #33000000 -1! +1Xz8w) #34000000 -0! +0Xz8w) #35000000 -1! +1Xz8w) #36000000 -0! +0Xz8w) #37000000 -1" +1GIFRf #38000000 -0" +0GIFRf #39000000 -1" +1GIFRf #40000000 -0" +0GIFRf #41000000 -1! +1Xz8w) #42000000 -0! +0Xz8w) #43000000 -1! +1Xz8w) #44000000 -0! +0Xz8w) #45000000 -1" +1GIFRf #46000000 -0" +0GIFRf #47000000 -1# -b10 & +1OJ`bb +b10 Q7>," #48000000 -0# +0OJ`bb #49000000 -1! -b11 $ +1Xz8w) +b11 G!R[n #50000000 -0! +0Xz8w) #51000000 -1! +1Xz8w) #52000000 -0! +0Xz8w) #53000000 -1# -b11 & +1OJ`bb +b11 Q7>," #54000000 -0# +0OJ`bb #55000000 -1! +1Xz8w) #56000000 -0! +0Xz8w) #57000000 -1! +1Xz8w) #58000000 -0! +0Xz8w) #59000000 -1! +1Xz8w) #60000000 -0! +0Xz8w) #61000000 -1# +1OJ`bb #62000000 -0# +0OJ`bb #63000000 -1" -b11 % +1GIFRf +b11 (H=Za #64000000 -0" +0GIFRf #65000000 -1! -b100 $ +1Xz8w) +b100 G!R[n #66000000 -0! +0Xz8w) #67000000 -1! +1Xz8w) #68000000 -0! +0Xz8w) #69000000 -1# -b100 & +1OJ`bb +b100 Q7>," #70000000 -0# +0OJ`bb #71000000 -1# +1OJ`bb #72000000 -0# +0OJ`bb #73000000 -1! +1Xz8w) #74000000 -0! +0Xz8w) #75000000 -1" -b100 % +1GIFRf +b100 (H=Za #76000000 -0" +0GIFRf #77000000 -1! -b101 $ +1Xz8w) +b101 G!R[n #78000000 -0! +0Xz8w) #79000000 -1! +1Xz8w) #80000000 -0! +0Xz8w) #81000000 -1! +1Xz8w) #82000000 -0! +0Xz8w) #83000000 -1" -b101 % +1GIFRf +b101 (H=Za #84000000 -0" +0GIFRf #85000000 -1! +1Xz8w) #86000000 -0! +0Xz8w) #87000000 -1" +1GIFRf #88000000 -0" +0GIFRf #89000000 -1! +1Xz8w) #90000000 -0! +0Xz8w) #91000000 -1" +1GIFRf #92000000 -0" +0GIFRf #93000000 -1! +1Xz8w) #94000000 -0! +0Xz8w) #95000000 -1# -b101 & +1OJ`bb +b101 Q7>," #96000000 -0# +0OJ`bb #97000000 -1! -b110 $ +1Xz8w) +b110 G!R[n #98000000 -0! +0Xz8w) #99000000 -1" -b110 % +1GIFRf +b110 (H=Za #100000000 -0" +0GIFRf #101000000 -1" +1GIFRf #102000000 -0" +0GIFRf #103000000 -1! +1Xz8w) #104000000 -0! +0Xz8w) #105000000 -1! +1Xz8w) #106000000 -0! +0Xz8w) #107000000 -1" +1GIFRf #108000000 -0" +0GIFRf #109000000 -1" +1GIFRf #110000000 -0" +0GIFRf #111000000 -1" +1GIFRf #112000000 -0" +0GIFRf #113000000 -1! +1Xz8w) #114000000 -0! +0Xz8w) #115000000 -1" +1GIFRf #116000000 -0" +0GIFRf #117000000 -1" +1GIFRf #118000000 -0" +0GIFRf #119000000 -1# -b110 & +1OJ`bb +b110 Q7>," #120000000 -0# +0OJ`bb #121000000 -1! -b111 $ +1Xz8w) +b111 G!R[n #122000000 -0! +0Xz8w) #123000000 -1" -b111 % +1GIFRf +b111 (H=Za #124000000 -0" +0GIFRf #125000000 -1# -b111 & +1OJ`bb +b111 Q7>," #126000000 -0# +0OJ`bb #127000000 -1! -b1000 $ +1Xz8w) +b1000 G!R[n #128000000 -0! +0Xz8w) #129000000 -1! +1Xz8w) #130000000 -0! +0Xz8w) #131000000 -1" -b1000 % +1GIFRf +b1000 (H=Za #132000000 -0" +0GIFRf #133000000 -1# -b1000 & +1OJ`bb +b1000 Q7>," #134000000 -0# +0OJ`bb #135000000 -1" -b1001 % +1GIFRf +b1001 (H=Za #136000000 -0" +0GIFRf #137000000 -1! -b1001 $ +1Xz8w) +b1001 G!R[n #138000000 -0! +0Xz8w) #139000000 -1" +1GIFRf #140000000 -0" +0GIFRf #141000000 -1# -b1001 & +1OJ`bb +b1001 Q7>," #142000000 -0# +0OJ`bb #143000000 -1# -b1010 & +1OJ`bb +b1010 Q7>," #144000000 -0# +0OJ`bb #145000000 -1! -b1010 $ +1Xz8w) +b1010 G!R[n #146000000 -0! +0Xz8w) #147000000 -1# +1OJ`bb #148000000 -0# +0OJ`bb #149000000 -1! +1Xz8w) #150000000 -0! +0Xz8w) #151000000 -1! +1Xz8w) #152000000 -0! +0Xz8w) #153000000 -1! +1Xz8w) #154000000 -0! +0Xz8w) #155000000 -1# +1OJ`bb #156000000 -0# +0OJ`bb #157000000 -1! +1Xz8w) #158000000 -0! +0Xz8w) #159000000 -1" -b1010 % +1GIFRf +b1010 (H=Za #160000000 -0" +0GIFRf #161000000 -1! -b1011 $ +1Xz8w) +b1011 G!R[n #162000000 -0! +0Xz8w) #163000000 -1# -b1011 & +1OJ`bb +b1011 Q7>," #164000000 -0# +0OJ`bb #165000000 -1! +1Xz8w) #166000000 -0! +0Xz8w) #167000000 -1# +1OJ`bb #168000000 -0# +0OJ`bb #169000000 -1! +1Xz8w) #170000000 -0! +0Xz8w) #171000000 -1# +1OJ`bb #172000000 -0# +0OJ`bb #173000000 -1" -b1011 % +1GIFRf +b1011 (H=Za #174000000 -0" +0GIFRf #175000000 -1! -b1100 $ +1Xz8w) +b1100 G!R[n #176000000 -0! +0Xz8w) #177000000 -1! +1Xz8w) #178000000 -0! +0Xz8w) #179000000 -1# -b1100 & +1OJ`bb +b1100 Q7>," #180000000 -0# +0OJ`bb #181000000 -1" -b1100 % +1GIFRf +b1100 (H=Za #182000000 -0" +0GIFRf #183000000 -1" -b1101 % +1GIFRf +b1101 (H=Za #184000000 -0" +0GIFRf #185000000 -1! -b1101 $ +1Xz8w) +b1101 G!R[n #186000000 -0! +0Xz8w) #187000000 -1# -b1101 & +1OJ`bb +b1101 Q7>," #188000000 -0# +0OJ`bb #189000000 -1" -b1110 % +1GIFRf +b1110 (H=Za #190000000 -0" +0GIFRf #191000000 -1# -b1110 & +1OJ`bb +b1110 Q7>," #192000000 -0# +0OJ`bb #193000000 -1! -b1110 $ +1Xz8w) +b1110 G!R[n #194000000 -0! +0Xz8w) #195000000 -1# -b1111 & +1OJ`bb +b1111 Q7>," #196000000 -0# +0OJ`bb #197000000 -1# +1OJ`bb #198000000 -0# +0OJ`bb #199000000 -1! -b1111 $ +1Xz8w) +b1111 G!R[n #200000000 -0! +0Xz8w) #201000000 -1! +1Xz8w) #202000000 -0! +0Xz8w) #203000000 -1# +1OJ`bb #204000000 -0# +0OJ`bb #205000000 -1# +1OJ`bb #206000000 -0# +0OJ`bb #207000000 -1" -b1111 % +1GIFRf +b1111 (H=Za #208000000 -0" +0GIFRf #209000000 -1! -b10000 $ +1Xz8w) +b10000 G!R[n #210000000 -0! +0Xz8w) #211000000 -1# -b10000 & +1OJ`bb +b10000 Q7>," #212000000 -0# +0OJ`bb #213000000 -1# +1OJ`bb #214000000 -0# +0OJ`bb #215000000 -1# +1OJ`bb #216000000 -0# +0OJ`bb #217000000 -1" -b10000 % +1GIFRf +b10000 (H=Za #218000000 -0" +0GIFRf #219000000 -1! -b10001 $ +1Xz8w) +b10001 G!R[n #220000000 -0! +0Xz8w) #221000000 -1! +1Xz8w) #222000000 -0! +0Xz8w) #223000000 -1! +1Xz8w) #224000000 -0! +0Xz8w) #225000000 -1" -b10001 % +1GIFRf +b10001 (H=Za #226000000 -0" +0GIFRf #227000000 -1! +1Xz8w) #228000000 -0! +0Xz8w) #229000000 -1! +1Xz8w) #230000000 -0! +0Xz8w) #231000000 -1" +1GIFRf #232000000 -0" +0GIFRf #233000000 -1" +1GIFRf #234000000 -0" +0GIFRf #235000000 -1! +1Xz8w) #236000000 -0! +0Xz8w) #237000000 -1! +1Xz8w) #238000000 -0! +0Xz8w) #239000000 -1# -b10001 & +1OJ`bb +b10001 Q7>," #240000000 -0# +0OJ`bb #241000000 -1" -b10010 % +1GIFRf +b10010 (H=Za #242000000 -0" +0GIFRf #243000000 -1! -b10010 $ +1Xz8w) +b10010 G!R[n #244000000 -0! +0Xz8w) #245000000 -1" +1GIFRf #246000000 -0" +0GIFRf #247000000 -1! +1Xz8w) #248000000 -0! +0Xz8w) #249000000 -1" +1GIFRf #250000000 -0" +0GIFRf #251000000 -1! +1Xz8w) #252000000 -0! +0Xz8w) #253000000 -1" +1GIFRf #254000000 -0" +0GIFRf #255000000 -1" +1GIFRf #256000000 -0" +0GIFRf #257000000 -1" +1GIFRf #258000000 -0" +0GIFRf #259000000 -1! +1Xz8w) #260000000 -0! +0Xz8w) #261000000 -1" +1GIFRf #262000000 -0" +0GIFRf #263000000 -1# -b10010 & +1OJ`bb +b10010 Q7>," #264000000 -0# +0OJ`bb #265000000 -1" -b10011 % +1GIFRf +b10011 (H=Za #266000000 -0" +0GIFRf #267000000 -1! -b10011 $ +1Xz8w) +b10011 G!R[n #268000000 -0! +0Xz8w) #269000000 -1# -b10011 & +1OJ`bb +b10011 Q7>," #270000000 -0# +0OJ`bb #271000000 -1! -b10100 $ +1Xz8w) +b10100 G!R[n #272000000 -0! +0Xz8w) #273000000 -1" -b10100 % +1GIFRf +b10100 (H=Za #274000000 -0" +0GIFRf #275000000 -1! +1Xz8w) #276000000 -0! +0Xz8w) #277000000 -1# -b10100 & +1OJ`bb +b10100 Q7>," #278000000 -0# +0OJ`bb #279000000 -1" -b10101 % +1GIFRf +b10101 (H=Za #280000000 -0" +0GIFRf #281000000 -1" +1GIFRf #282000000 -0" +0GIFRf #283000000 -1! -b10101 $ +1Xz8w) +b10101 G!R[n #284000000 -0! +0Xz8w) #285000000 -1# -b10101 & +1OJ`bb +b10101 Q7>," #286000000 -0# +0OJ`bb #287000000 -1# -b10110 & +1OJ`bb +b10110 Q7>," #288000000 -0# +0OJ`bb #289000000 -1" -b10110 % +1GIFRf +b10110 (H=Za #290000000 -0" +0GIFRf #291000000 -1" +1GIFRf #292000000 -0" +0GIFRf #293000000 -1! -b10110 $ +1Xz8w) +b10110 G!R[n #294000000 -0! +0Xz8w) #295000000 -1! -b10111 $ +1Xz8w) +b10111 G!R[n #296000000 -0! +0Xz8w) #297000000 -1" -b10111 % +1GIFRf +b10111 (H=Za #298000000 -0" +0GIFRf #299000000 -1" +1GIFRf #300000000 -0" +0GIFRf #301000000 -1! +1Xz8w) #302000000 -0! +0Xz8w) #303000000 -1" +1GIFRf #304000000 -0" +0GIFRf #305000000 -1" +1GIFRf #306000000 -0" +0GIFRf #307000000 -1" +1GIFRf #308000000 -0" +0GIFRf #309000000 -1! +1Xz8w) #310000000 -0! +0Xz8w) #311000000 -1# -b10111 & +1OJ`bb +b10111 Q7>," #312000000 -0# +0OJ`bb #313000000 -1" -b11000 % +1GIFRf +b11000 (H=Za #314000000 -0" +0GIFRf #315000000 -1" +1GIFRf #316000000 -0" +0GIFRf #317000000 -1" +1GIFRf #318000000 -0" +0GIFRf #319000000 -1! -b11000 $ +1Xz8w) +b11000 G!R[n #320000000 -0! +0Xz8w) #321000000 -1" +1GIFRf #322000000 -0" +0GIFRf #323000000 -1" +1GIFRf #324000000 -0" +0GIFRf #325000000 -1" +1GIFRf #326000000 -0" +0GIFRf #327000000 -1" +1GIFRf #328000000 -0" +0GIFRf #329000000 -1" +1GIFRf #330000000 -0" +0GIFRf #331000000 -1" +1GIFRf #332000000 -0" +0GIFRf #333000000 -1" +1GIFRf #334000000 -0" +0GIFRf #335000000 -1# -b11000 & +1OJ`bb +b11000 Q7>," #336000000 -0# +0OJ`bb #337000000 -1" -b11001 % +1GIFRf +b11001 (H=Za #338000000 -0" +0GIFRf #339000000 -1" +1GIFRf #340000000 -0" +0GIFRf #341000000 -1# -b11001 & +1OJ`bb +b11001 Q7>," #342000000 -0# +0OJ`bb #343000000 -1! -b11001 $ +1Xz8w) +b11001 G!R[n #344000000 -0! +0Xz8w) #345000000 -1" -b11010 % +1GIFRf +b11010 (H=Za #346000000 -0" +0GIFRf #347000000 -1" +1GIFRf #348000000 -0" +0GIFRf #349000000 -1# -b11010 & +1OJ`bb +b11010 Q7>," #350000000 -0# +0OJ`bb #351000000 -1" +1GIFRf #352000000 -0" +0GIFRf #353000000 -1" +1GIFRf #354000000 -0" +0GIFRf #355000000 -1" +1GIFRf #356000000 -0" +0GIFRf #357000000 -1# +1OJ`bb #358000000 -0# +0OJ`bb #359000000 -1# +1OJ`bb #360000000 -0# +0OJ`bb #361000000 -1" +1GIFRf #362000000 -0" +0GIFRf #363000000 -1# +1OJ`bb #364000000 -0# +0OJ`bb #365000000 -1! -b11010 $ +1Xz8w) +b11010 G!R[n #366000000 -0! +0Xz8w) #367000000 -1! -b11011 $ +1Xz8w) +b11011 G!R[n #368000000 -0! +0Xz8w) #369000000 -1" -b11011 % +1GIFRf +b11011 (H=Za #370000000 -0" +0GIFRf #371000000 -1# -b11011 & +1OJ`bb +b11011 Q7>," #372000000 -0# +0OJ`bb #373000000 -1! -b11100 $ +1Xz8w) +b11100 G!R[n #374000000 -0! +0Xz8w) #375000000 -1" -b11100 % +1GIFRf +b11100 (H=Za #376000000 -0" +0GIFRf #377000000 -1" +1GIFRf #378000000 -0" +0GIFRf #379000000 -1# -b11100 & +1OJ`bb +b11100 Q7>," #380000000 -0# +0OJ`bb #381000000 -1! -b11101 $ +1Xz8w) +b11101 G!R[n #382000000 -0! +0Xz8w) #383000000 -1# -b11101 & +1OJ`bb +b11101 Q7>," #384000000 -0# +0OJ`bb #385000000 -1" -b11101 % +1GIFRf +b11101 (H=Za #386000000 -0" +0GIFRf #387000000 -1# -b11110 & +1OJ`bb +b11110 Q7>," #388000000 -0# +0OJ`bb #389000000 -1" -b11110 % +1GIFRf +b11110 (H=Za #390000000 -0" +0GIFRf #391000000 -1! -b11110 $ +1Xz8w) +b11110 G!R[n #392000000 -0! +0Xz8w) #393000000 -1" -b11111 % +1GIFRf +b11111 (H=Za #394000000 -0" +0GIFRf #395000000 -1# -b11111 & +1OJ`bb +b11111 Q7>," #396000000 -0# +0OJ`bb #397000000 -1" +1GIFRf #398000000 -0" +0GIFRf #399000000 -1" +1GIFRf #400000000 -0" +0GIFRf #401000000 -1" +1GIFRf #402000000 -0" +0GIFRf #403000000 -1# +1OJ`bb #404000000 -0# +0OJ`bb #405000000 -1" +1GIFRf #406000000 -0" +0GIFRf #407000000 -1# +1OJ`bb #408000000 -0# +0OJ`bb #409000000 -1" +1GIFRf #410000000 -0" +0GIFRf #411000000 -1# +1OJ`bb #412000000 -0# +0OJ`bb #413000000 -1# +1OJ`bb #414000000 -0# +0OJ`bb #415000000 -1! -b11111 $ +1Xz8w) +b11111 G!R[n #416000000 -0! +0Xz8w) #417000000 -1" -b100000 % +1GIFRf +b100000 (H=Za #418000000 -0" +0GIFRf #419000000 -1# -b100000 & +1OJ`bb +b100000 Q7>," #420000000 -0# +0OJ`bb #421000000 -1# +1OJ`bb #422000000 -0# +0OJ`bb #423000000 -1" +1GIFRf #424000000 -0" +0GIFRf #425000000 -1" +1GIFRf #426000000 -0" +0GIFRf #427000000 -1# +1OJ`bb #428000000 -0# +0OJ`bb #429000000 -1# +1OJ`bb #430000000 -0# +0OJ`bb #431000000 -1# +1OJ`bb #432000000 -0# +0OJ`bb #433000000 -1# +1OJ`bb #434000000 -0# +0OJ`bb #435000000 -1! -b100000 $ +1Xz8w) +b100000 G!R[n #436000000 -0! +0Xz8w) #437000000 -1! -b100001 $ +1Xz8w) +b100001 G!R[n #438000000 -0! +0Xz8w) #439000000 -1! +1Xz8w) #440000000 -0! +0Xz8w) #441000000 -1# -b100001 & +1OJ`bb +b100001 Q7>," #442000000 -0# +0OJ`bb #443000000 -1! +1Xz8w) #444000000 -0! +0Xz8w) #445000000 -1! +1Xz8w) #446000000 -0! +0Xz8w) #447000000 -1" -b100001 % +1GIFRf +b100001 (H=Za #448000000 -0" +0GIFRf #449000000 -1# -b100010 & +1OJ`bb +b100010 Q7>," #450000000 -0# +0OJ`bb #451000000 -1! -b100010 $ +1Xz8w) +b100010 G!R[n #452000000 -0! +0Xz8w) #453000000 -1! +1Xz8w) #454000000 -0! +0Xz8w) #455000000 -1# +1OJ`bb #456000000 -0# +0OJ`bb #457000000 -1# +1OJ`bb #458000000 -0# +0OJ`bb #459000000 -1! +1Xz8w) #460000000 -0! +0Xz8w) #461000000 -1" -b100010 % +1GIFRf +b100010 (H=Za #462000000 -0" +0GIFRf #463000000 -1! -b100011 $ +1Xz8w) +b100011 G!R[n #464000000 -0! +0Xz8w) #465000000 -1# -b100011 & +1OJ`bb +b100011 Q7>," #466000000 -0# +0OJ`bb #467000000 -1! +1Xz8w) #468000000 -0! +0Xz8w) #469000000 -1" -b100011 % +1GIFRf +b100011 (H=Za #470000000 -0" +0GIFRf #471000000 -1" -b100100 % +1GIFRf +b100100 (H=Za #472000000 -0" +0GIFRf #473000000 -1# -b100100 & +1OJ`bb +b100100 Q7>," #474000000 -0# +0OJ`bb #475000000 -1! -b100100 $ +1Xz8w) +b100100 G!R[n #476000000 -0! +0Xz8w) #477000000 -1" -b100101 % +1GIFRf +b100101 (H=Za #478000000 -0" +0GIFRf #479000000 -1# -b100101 & +1OJ`bb +b100101 Q7>," #480000000 -0# +0OJ`bb #481000000 -1# +1OJ`bb #482000000 -0# +0OJ`bb #483000000 -1! -b100101 $ +1Xz8w) +b100101 G!R[n #484000000 -0! +0Xz8w) #485000000 -1# -b100110 & +1OJ`bb +b100110 Q7>," #486000000 -0# +0OJ`bb #487000000 -1! -b100110 $ +1Xz8w) +b100110 G!R[n #488000000 -0! +0Xz8w) #489000000 -1# +1OJ`bb #490000000 -0# +0OJ`bb #491000000 -1! +1Xz8w) #492000000 -0! +0Xz8w) #493000000 -1# +1OJ`bb #494000000 -0# +0OJ`bb #495000000 -1" -b100110 % +1GIFRf +b100110 (H=Za #496000000 -0" +0GIFRf #497000000 -1# -b100111 & +1OJ`bb +b100111 Q7>," #498000000 -0# +0OJ`bb #499000000 -1! -b100111 $ +1Xz8w) +b100111 G!R[n #500000000 -0! +0Xz8w) #501000000 -1# +1OJ`bb #502000000 -0# +0OJ`bb #503000000 -1# +1OJ`bb #504000000 -0# +0OJ`bb #505000000 -1# +1OJ`bb #506000000 -0# +0OJ`bb #507000000 -1" -b100111 % +1GIFRf +b100111 (H=Za #508000000 -0" +0GIFRf #509000000 -1! -b101000 $ +1Xz8w) +b101000 G!R[n #510000000 -0! +0Xz8w) #511000000 -1! +1Xz8w) #512000000 -0! +0Xz8w) #513000000 -1# -b101000 & +1OJ`bb +b101000 Q7>," #514000000 -0# +0OJ`bb #515000000 -1" -b101000 % +1GIFRf +b101000 (H=Za #516000000 -0" +0GIFRf #517000000 -1! -b101001 $ +1Xz8w) +b101001 G!R[n #518000000 -0! +0Xz8w) #519000000 -1" -b101001 % +1GIFRf +b101001 (H=Za #520000000 -0" +0GIFRf #521000000 -1# -b101001 & +1OJ`bb +b101001 Q7>," #522000000 -0# +0OJ`bb #523000000 -1" -b101010 % +1GIFRf +b101010 (H=Za #524000000 -0" +0GIFRf #525000000 -1! -b101010 $ +1Xz8w) +b101010 G!R[n #526000000 -0! +0Xz8w) #527000000 -1# -b101010 & +1OJ`bb +b101010 Q7>," #528000000 -0# +0OJ`bb #529000000 -1# -b101011 & +1OJ`bb +b101011 Q7>," #530000000 -0# +0OJ`bb #531000000 -1" -b101011 % +1GIFRf +b101011 (H=Za #532000000 -0" +0GIFRf #533000000 -1" +1GIFRf #534000000 -0" +0GIFRf #535000000 -1! -b101011 $ +1Xz8w) +b101011 G!R[n #536000000 -0! +0Xz8w) #537000000 -1# -b101100 & +1OJ`bb +b101100 Q7>," #538000000 -0# +0OJ`bb #539000000 -1" -b101100 % +1GIFRf +b101100 (H=Za #540000000 -0" +0GIFRf #541000000 -1" +1GIFRf #542000000 -0" +0GIFRf #543000000 -1" +1GIFRf #544000000 -0" +0GIFRf #545000000 -1# +1OJ`bb #546000000 -0# +0OJ`bb #547000000 -1" +1GIFRf #548000000 -0" +0GIFRf #549000000 -1" +1GIFRf #550000000 -0" +0GIFRf #551000000 -1# +1OJ`bb #552000000 -0# +0OJ`bb #553000000 -1# +1OJ`bb #554000000 -0# +0OJ`bb #555000000 -1" +1GIFRf #556000000 -0" +0GIFRf #557000000 -1# +1OJ`bb #558000000 -0# +0OJ`bb #559000000 -1! -b101100 $ +1Xz8w) +b101100 G!R[n #560000000 -0! +0Xz8w) #561000000 -1# -b101101 & +1OJ`bb +b101101 Q7>," #562000000 -0# +0OJ`bb #563000000 -1" -b101101 % +1GIFRf +b101101 (H=Za #564000000 -0" +0GIFRf #565000000 -1# +1OJ`bb #566000000 -0# +0OJ`bb #567000000 -1" +1GIFRf #568000000 -0" +0GIFRf #569000000 -1# +1OJ`bb #570000000 -0# +0OJ`bb #571000000 -1" +1GIFRf #572000000 -0" +0GIFRf #573000000 -1# +1OJ`bb #574000000 -0# +0OJ`bb #575000000 -1# +1OJ`bb #576000000 -0# +0OJ`bb #577000000 -1# +1OJ`bb #578000000 -0# +0OJ`bb #579000000 -1# +1OJ`bb #580000000 -0# +0OJ`bb #581000000 -1! -b101101 $ +1Xz8w) +b101101 G!R[n #582000000 -0! +0Xz8w) #583000000 -1! -b101110 $ +1Xz8w) +b101110 G!R[n #584000000 -0! +0Xz8w) #585000000 -1# -b101110 & +1OJ`bb +b101110 Q7>," #586000000 -0# +0OJ`bb #587000000 -1# +1OJ`bb #588000000 -0# +0OJ`bb #589000000 -1! +1Xz8w) #590000000 -0! +0Xz8w) #591000000 -1" -b101110 % +1GIFRf +b101110 (H=Za #592000000 -0" +0GIFRf #593000000 -1# -b101111 & +1OJ`bb +b101111 Q7>," #594000000 -0# +0OJ`bb #595000000 -1# +1OJ`bb #596000000 -0# +0OJ`bb #597000000 -1! -b101111 $ +1Xz8w) +b101111 G!R[n #598000000 -0! +0Xz8w) #599000000 -1# +1OJ`bb #600000000 -0# +0OJ`bb #601000000 -1# +1OJ`bb #602000000 -0# +0OJ`bb #603000000 -1# +1OJ`bb #604000000 -0# +0OJ`bb #605000000 -1" -b101111 % +1GIFRf +b101111 (H=Za #606000000 -0" +0GIFRf #607000000 -1! -b110000 $ +1Xz8w) +b110000 G!R[n #608000000 -0! +0Xz8w) #609000000 -1# -b110000 & +1OJ`bb +b110000 Q7>," #610000000 -0# +0OJ`bb #611000000 -1# +1OJ`bb #612000000 -0# +0OJ`bb #613000000 -1" -b110000 % +1GIFRf +b110000 (H=Za #614000000 -0" +0GIFRf #615000000 -1" -b110001 % +1GIFRf +b110001 (H=Za #616000000 -0" +0GIFRf #617000000 -1# -b110001 & +1OJ`bb +b110001 Q7>," #618000000 -0# +0OJ`bb #619000000 -1# +1OJ`bb #620000000 -0# +0OJ`bb #621000000 -1" +1GIFRf #622000000 -0" +0GIFRf #623000000 -1# +1OJ`bb #624000000 -0# +0OJ`bb #625000000 -1# +1OJ`bb #626000000 -0# +0OJ`bb #627000000 -1# +1OJ`bb #628000000 -0# +0OJ`bb #629000000 -1# +1OJ`bb #630000000 -0# +0OJ`bb #631000000 -1! -b110001 $ +1Xz8w) +b110001 G!R[n #632000000 -0! +0Xz8w) #633000000 -1# -b110010 & +1OJ`bb +b110010 Q7>," #634000000 -0# +0OJ`bb #635000000 -1# +1OJ`bb #636000000 -0# +0OJ`bb #637000000 -1# +1OJ`bb #638000000 -0# +0OJ`bb #639000000 -1" -b110010 % +1GIFRf +b110010 (H=Za #640000000 -0" +0GIFRf #641000000 -1# +1OJ`bb #642000000 -0# +0OJ`bb #643000000 -1# +1OJ`bb #644000000 -0# +0OJ`bb #645000000 -1# +1OJ`bb #646000000 -0# +0OJ`bb #647000000 -1# +1OJ`bb #648000000 -0# +0OJ`bb diff --git a/crates/fayalite/tests/sim/expected/sim_fork_join_scope.vcd b/crates/fayalite/tests/sim/expected/sim_fork_join_scope.vcd index 555e83e..cb7bac4 100644 --- a/crates/fayalite/tests/sim/expected/sim_fork_join_scope.vcd +++ b/crates/fayalite/tests/sim/expected/sim_fork_join_scope.vcd @@ -1,1467 +1,1467 @@ $timescale 1 ps $end $scope module sim_fork_join_scope $end $scope struct clocks $end -$var wire 1 ! \[0] $end -$var wire 1 " \[1] $end -$var wire 1 # \[2] $end +$var wire 1 `,lzL \[0] $end +$var wire 1 SA$wv \[1] $end +$var wire 1 out2 $end +$var string 1 8(7-4 out3 $end $scope struct helper1 $end $scope struct cd $end -$var wire 1 + clk $end -$var wire 1 , rst $end +$var wire 1 $Kwp\ clk $end +$var wire 1 nmVq' rst $end $upscope $end -$var string 1 - inp $end -$var string 1 . out $end +$var string 1 qS)@z inp $end +$var string 1 ~je// out $end $upscope $end $scope module sim_only_connects_helper $end $scope struct cd $end -$var wire 1 ' clk $end -$var wire 1 ( rst $end +$var wire 1 %uCn6 clk $end +$var wire 1 Apu`K rst $end $upscope $end -$var string 1 ) inp $end -$var string 1 * out $end +$var string 1 $U*lA inp $end +$var string 1 !prwC out $end $upscope $end -$var string 1 / delay1 $end -$var reg 1 0 delay1_empty $end +$var string 1 CyjVm delay1 $end +$var reg 1 z~g{\ delay1_empty $end $scope struct helper2 $end $scope struct cd $end -$var wire 1 5 clk $end -$var wire 1 6 rst $end +$var wire 1 Ph.=# clk $end +$var wire 1 !GXK\ rst $end $upscope $end -$var string 1 7 inp $end -$var string 1 8 out $end +$var string 1 /YVv: inp $end +$var string 1 Kk*{# out $end $upscope $end $scope module sim_only_connects_helper_2 $end $scope struct cd $end -$var wire 1 1 clk $end -$var wire 1 2 rst $end +$var wire 1 %uCn6" clk $end +$var wire 1 Apu`K" rst $end $upscope $end -$var string 1 3 inp $end -$var string 1 4 out $end +$var string 1 $U*lA" inp $end +$var string 1 !prwC" out $end $upscope $end $upscope $end $enddefinitions $end $dumpvars -0! -1" -s{\"extra\":\x20\"value\"} # -s{} $ -s{} % -s{} & -0' -1( -s{} ) -s{} * -0+ -1, -s{} - -s{} . -s{} / -00 -01 -12 -s{} 3 -s{} 4 -05 -16 -s{} 7 -s{} 8 +0tq:(w +1FVlgb +s{\"extra\":\x20\"value\"} g:xf? +s{} [OKKg +s{} 9pB-> +s{} 8(7-4 +0%uCn6 +1Apu`K +s{} $U*lA +s{} !prwC +0$Kwp\ +1nmVq' +s{} qS)@z +s{} ~je// +s{} CyjVm +0z~g{\ +0%uCn6" +1Apu`K" +s{} $U*lA" +s{} !prwC" +0Ph.=# +1!GXK\ +s{} /YVv: +s{} Kk*{# $end #1000000 -1! -s{\"extra\":\x20\"value\"} $ -1' -s{\"extra\":\x20\"value\"} ) -1+ -s{\"extra\":\x20\"value\"} - -10 -11 -15 -s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} % -s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} * -s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} . -s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} 3 -s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} 7 -s{\"bar\":\x20\"baz\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} & -s{\"bar\":\x20\"baz\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} 4 -s{\"bar\":\x20\"baz\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} 8 +1tq:(w +s{\"extra\":\x20\"value\"} [OKKg +1%uCn6 +s{\"extra\":\x20\"value\"} $U*lA +1$Kwp\ +s{\"extra\":\x20\"value\"} qS)@z +1z~g{\ +1%uCn6" +1Ph.=# +s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} 9pB-> +s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} !prwC +s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} ~je// +s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} $U*lA" +s{\"bar\":\x20\"\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} /YVv: +s{\"bar\":\x20\"baz\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} 8(7-4 +s{\"bar\":\x20\"baz\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} !prwC" +s{\"bar\":\x20\"baz\",\x20\"extra\":\x20\"value\",\x20\"foo\":\x20\"baz\"} Kk*{# #2000000 -0! -0" -0' -0( -0+ -0, -01 -02 -05 -06 +0tq:(w +0FVlgb +0%uCn6 +0Apu`K +0$Kwp\ +0nmVq' +0%uCn6" +0Apu`K" +0Ph.=# +0!GXK\ #3000000 -1! -1' -1+ -s{\"extra\":\x20\"value\"} / -00 -11 -15 +1tq:(w +1%uCn6 +1$Kwp\ +s{\"extra\":\x20\"value\"} CyjVm +0z~g{\ +1%uCn6" +1Ph.=# #4000000 -0! -0' -0+ -01 -05 +0tq:(w +0%uCn6 +0$Kwp\ +0%uCn6" +0Ph.=# #5000000 -1! -1' -1+ -11 -15 +1tq:(w +1%uCn6 +1$Kwp\ +1%uCn6" +1Ph.=# #6000000 -0! -0' -0+ -01 -05 +0tq:(w +0%uCn6 +0$Kwp\ +0%uCn6" +0Ph.=# #7000000 -1! -1' -1+ -11 -15 +1tq:(w +1%uCn6 +1$Kwp\ +1%uCn6" +1Ph.=# #8000000 -0! -0' -0+ -01 -05 +0tq:(w +0%uCn6 +0$Kwp\ +0%uCn6" +0Ph.=# #9000000 -1! -1' -1+ -11 -15 +1tq:(w +1%uCn6 +1$Kwp\ +1%uCn6" +1Ph.=# #10000000 -0! -0' -0+ -01 -05 +0tq:(w +0%uCn6 +0$Kwp\ +0%uCn6" +0Ph.=# #11000000 -1! -1' -1+ -11 -15 +1tq:(w +1%uCn6 +1$Kwp\ +1%uCn6" +1Ph.=# #12000000 -0! -0' -0+ -01 -05 +0tq:(w +0%uCn6 +0$Kwp\ +0%uCn6" +0Ph.=# #13000000 -1! -1' -1+ -11 -15 +1tq:(w +1%uCn6 +1$Kwp\ +1%uCn6" +1Ph.=# #14000000 -0! -0' -0+ -01 -05 +0tq:(w +0%uCn6 +0$Kwp\ +0%uCn6" +0Ph.=# #15000000 -1! -1' -1+ -11 -15 +1tq:(w +1%uCn6 +1$Kwp\ +1%uCn6" +1Ph.=# #16000000 diff --git a/crates/fayalite/tests/sim/expected/sim_read_past.vcd b/crates/fayalite/tests/sim/expected/sim_read_past.vcd index 5d0a932..e98fc97 100644 --- a/crates/fayalite/tests/sim/expected/sim_read_past.vcd +++ b/crates/fayalite/tests/sim/expected/sim_read_past.vcd @@ -1,1908 +1,1908 @@ $timescale 1 ps $end $scope module sim_read_past $end $scope struct clocks $end -$var wire 1 ! \[0] $end -$var wire 1 " \[1] $end -$var wire 1 # \[2] $end +$var wire 1 zV+7l \[0] $end +$var wire 1 7&!