diff --git a/monitor/src/global_context.rs b/monitor/src/global_context.rs index 9ece8b6d..afedf747 100644 --- a/monitor/src/global_context.rs +++ b/monitor/src/global_context.rs @@ -2,6 +2,8 @@ // released under MIT License // author: Ernest Ng +use crate::Cli; + /// Time unit for displaying waveform times #[derive(Debug, Clone, Copy)] pub enum TimeUnit { @@ -62,29 +64,28 @@ pub struct GlobalContext { /// Indicates if there are multiple (more than 1) structs in the source file pub multiple_structs: bool, + + /// Indicates whether to print out thread IDs for each inferred transaction + pub show_thread_ids: bool, } impl GlobalContext { - /// Creates a new `GlobalContext` with the provided `design` and configuration flags. - /// The `display_hex` argument indicates whether to print integer literals - /// using hexadecimal (if `false`, we default to using decimal). - pub fn new( - waveform_file: String, - instance_id: u32, - display_hex: bool, - show_waveform_time: bool, - time_unit: TimeUnit, - print_num_steps: bool, - multiple_structs: bool, - ) -> Self { + /// Creates a new `GlobalContext` with the provided `design` + /// and configuration flags as specified by the user via the `Cli`. + /// The `display_hex` field indicates whether to print integer literals + /// in hexadecimal (if `false`, we default to using decimal). + /// Note: this function is meant to be called from `main.rs` only + /// upon monitor initialization. + pub fn new(cli: &Cli, instance_id: u32, time_unit: TimeUnit, multiple_structs: bool) -> Self { Self { - waveform_file, + waveform_file: cli.wave.clone(), instance_id, - display_hex, - show_waveform_time, + display_hex: cli.display_hex, + show_waveform_time: cli.show_waveform_time, time_unit, - print_num_steps, + print_num_steps: cli.print_num_steps, multiple_structs, + show_thread_ids: cli.show_thread_ids, } } } diff --git a/monitor/src/global_scheduler.rs b/monitor/src/global_scheduler.rs index 111bf3fe..ed746e38 100644 --- a/monitor/src/global_scheduler.rs +++ b/monitor/src/global_scheduler.rs @@ -112,7 +112,7 @@ fn process_group_cycles( /// For a single scheduler group, collects all unique maximal traces /// (deduplicated on canonical `ProtocolApplication` sequence, excluding idle, /// with strict-prefix traces filtered out). -/// Returns the list of maximal `OutputEntry` traces for this group. +/// Returns the list of maximal `AugmentedProtocolApplication` traces for this group. fn collect_maximal_traces(scheduler_group: &SchedulerGroup) -> Vec { // Collect all unique traces, deduplicating on the canonical // `ProtocolApplication` sequence (ignoring timing and thread IDs) @@ -120,15 +120,15 @@ fn collect_maximal_traces(scheduler_group: &SchedulerGroup) -> Vec = FxHashSet::default(); for scheduler in scheduler_group { - // Sort `OutputEntry`s by increasing cycle no. + // Sort `AugmentedProtocolApplication`s by increasing cycle no. let mut sorted_output_entries = scheduler.output_buffer.clone(); - sorted_output_entries.sort_by_key(|entry| entry.end_cycle_count); + sorted_output_entries.sort_by_key(|prot| prot.end_cycle_count); // Build canonical trace for dedup, excluding idle entries let trace: Trace = sorted_output_entries .iter() - .filter(|entry| !entry.is_idle) - .map(|entry| entry.protocol_application.clone()) + .filter(|prot| !prot.is_idle) + .map(|prot| prot.protocol_application.clone()) .collect(); // Only append `sorted_output_entries` to `all_entries` @@ -144,11 +144,11 @@ fn collect_maximal_traces(scheduler_group: &SchedulerGroup) -> Vec = all_entries .iter() - .map(|entries| { - entries + .map(|augmented_trace| { + augmented_trace .iter() - .filter(|e| !e.is_idle) - .map(|e| e.protocol_application.clone()) + .filter(|prot| !prot.is_idle) + .map(|prot| prot.protocol_application.clone()) .collect() }) .collect(); @@ -167,6 +167,15 @@ fn collect_maximal_traces(scheduler_group: &SchedulerGroup) -> Vec, trace: WaveSignalTrace) -> Self { @@ -206,15 +215,15 @@ impl GlobalScheduler { if scheduler_group_traces.len() == 1 { let traces = &scheduler_group_traces[0]; for (i, trace) in traces.iter().enumerate() { - if traces.len() > 1 { - println!("Trace {}:", i); - } let lines: Vec = trace .iter() - .filter(|entry| !entry.is_idle) - .map(|entry| self.format_output_entry(entry, ctx)) + .filter(|prot_application| !prot_application.is_idle) + .map(|entry| self.format_augmented_protocol_application(entry, ctx)) .collect(); - println!("{}", lines.join("\n")); + if i > 0 { + println!(); + } + Self::print_trace_block(i, &lines); } return; } @@ -236,26 +245,38 @@ impl GlobalScheduler { let lines: Vec = merged .iter() .filter(|entry| !entry.is_idle) - .map(|entry| self.format_output_entry(entry, ctx)) + .map(|entry| self.format_augmented_protocol_application(entry, ctx)) .collect(); - println!("{}", lines.join("\n")); + Self::print_trace_block(0, &lines); } - /// Formats an `OutputEntry` into a display string - fn format_output_entry( + /// Formats an `AugmentedProtocolApplication` into a display string + fn format_augmented_protocol_application( &self, entry: &AugmentedProtocolApplication, ctx: &GlobalContext, ) -> String { - if ctx.show_waveform_time { - let start_time = self.trace.format_time(entry.start_time_step, ctx.time_unit); - let end_time = self.trace.format_time(entry.end_time_step, ctx.time_unit); - format!( - "{} // [time: {} -> {}] (thread {})", - entry.protocol_application, start_time, end_time, entry.thread_id - ) - } else { - entry.protocol_application.to_string() + match (ctx.show_waveform_time, ctx.show_thread_ids) { + (true, true) | (true, false) => { + let start_time = self.trace.format_time(entry.start_time_step, ctx.time_unit); + let end_time = self.trace.format_time(entry.end_time_step, ctx.time_unit); + if ctx.show_thread_ids { + format!( + "{}; // [time: {} -> {}] (thread {})", + entry.protocol_application, start_time, end_time, entry.thread_id + ) + } else { + format!( + "{}; // [time: {} -> {}]", + entry.protocol_application, start_time, end_time + ) + } + } + (false, true) => format!( + "{}; // (thread {})", + entry.protocol_application, entry.thread_id + ), + (false, false) => format!("{};", entry.protocol_application), } } diff --git a/monitor/src/main.rs b/monitor/src/main.rs index d93a6ec3..08332cf9 100644 --- a/monitor/src/main.rs +++ b/monitor/src/main.rs @@ -74,6 +74,10 @@ struct Cli { #[arg(long, value_name = "SHOW_START_END_WAVEFORM_TIME_FOR_EACH_TRANSACTION")] show_waveform_time: bool, + /// If enabled, displays the thread ID corresponding to each inferred transaction + #[arg(long, value_name = "SHOW_THREAD_IDS")] + show_thread_ids: bool, + /// Specifies the time unit for displaying waveform times. /// Can only be used with --show-waveform-time. /// Valid options: fs, ps, ns, us, ms, s, auto @@ -136,7 +140,7 @@ fn main() -> anyhow::Result<()> { .collect(); // parse waveform - let trace = WaveSignalTrace::open(&cli.wave, &designs, &instances, cli.sample_posedge) + let trace = WaveSignalTrace::open(&cli.wave, &designs, &instances, cli.sample_posedge.clone()) .with_context(|| format!("failed to read waveform file {}", cli.wave))?; // Support multiple structs & designs @@ -167,15 +171,7 @@ fn main() -> anyhow::Result<()> { let multiple_structs = dut_designs.len() > 1; // Create a GlobalContext that is shared across all schedulers - let ctx = GlobalContext::new( - cli.wave, - 0, - cli.display_hex, - cli.show_waveform_time, - time_unit, - cli.print_num_steps, - multiple_structs, - ); + let ctx = GlobalContext::new(&cli, 0, time_unit, multiple_structs); // Multi-struct mode: create a GlobalScheduler with one scheduler per design let mut schedulers = vec![]; diff --git a/monitor/tests/adders/add_d1.out b/monitor/tests/adders/add_d1.out index 71907558..ff76d998 100644 --- a/monitor/tests/adders/add_d1.out +++ b/monitor/tests/adders/add_d1.out @@ -1,2 +1,5 @@ -add(1, 2, 3) -add(4, 5, 9) +// trace 0 +trace { + add(1, 2, 3); + add(4, 5, 9); +} diff --git a/monitor/tests/adders/add_d2.out b/monitor/tests/adders/add_d2.out index 71907558..ff76d998 100644 --- a/monitor/tests/adders/add_d2.out +++ b/monitor/tests/adders/add_d2.out @@ -1,2 +1,5 @@ -add(1, 2, 3) -add(4, 5, 9) +// trace 0 +trace { + add(1, 2, 3); + add(4, 5, 9); +} diff --git a/monitor/tests/alus/alu_d1.out b/monitor/tests/alus/alu_d1.out index c86a5b1e..16fa0842 100644 --- a/monitor/tests/alus/alu_d1.out +++ b/monitor/tests/alus/alu_d1.out @@ -1,5 +1,8 @@ -add(1, 2, 3) -add(123, 245, 368) -sub(200, 200, 0) -and(100, 100, 100) -or(0, 230, 230) +// trace 0 +trace { + add(1, 2, 3); + add(123, 245, 368); + sub(200, 200, 0); + and(100, 100, 100); + or(0, 230, 230); +} diff --git a/monitor/tests/alus/alu_d2.out b/monitor/tests/alus/alu_d2.out index c86a5b1e..16fa0842 100644 --- a/monitor/tests/alus/alu_d2.out +++ b/monitor/tests/alus/alu_d2.out @@ -1,5 +1,8 @@ -add(1, 2, 3) -add(123, 245, 368) -sub(200, 200, 0) -and(100, 100, 100) -or(0, 230, 230) +// trace 0 +trace { + add(1, 2, 3); + add(123, 245, 368); + sub(200, 200, 0); + and(100, 100, 100); + or(0, 230, 230); +} diff --git a/monitor/tests/brave_new_world_francis/bit_truncation_fft.out b/monitor/tests/brave_new_world_francis/bit_truncation_fft.out index 78f72a42..2861938d 100644 --- a/monitor/tests/brave_new_world_francis/bit_truncation_fft.out +++ b/monitor/tests/brave_new_world_francis/bit_truncation_fft.out @@ -1 +1,4 @@ -bit_truncation_fft(8386560, 2047) +// trace 0 +trace { + bit_truncation_fft(8386560, 2047); +} diff --git a/monitor/tests/brave_new_world_francis/bit_truncation_sha.out b/monitor/tests/brave_new_world_francis/bit_truncation_sha.out index 341d1568..52f5d64f 100644 --- a/monitor/tests/brave_new_world_francis/bit_truncation_sha.out +++ b/monitor/tests/brave_new_world_francis/bit_truncation_sha.out @@ -1 +1,4 @@ -bit_truncation_sha(4398046511104, 68719476736) +// trace 0 +trace { + bit_truncation_sha(4398046511104, 68719476736); +} diff --git a/monitor/tests/brave_new_world_francis/ftu_sha.out b/monitor/tests/brave_new_world_francis/ftu_sha.out index 989eeadf..bf9d06bc 100644 --- a/monitor/tests/brave_new_world_francis/ftu_sha.out +++ b/monitor/tests/brave_new_world_francis/ftu_sha.out @@ -1 +1,4 @@ -failure_to_update_sha() +// trace 0 +trace { + failure_to_update_sha(); +} diff --git a/monitor/tests/brave_new_world_francis/signal_async.out b/monitor/tests/brave_new_world_francis/signal_async.out index 5a65693f..ccd9f567 100644 --- a/monitor/tests/brave_new_world_francis/signal_async.out +++ b/monitor/tests/brave_new_world_francis/signal_async.out @@ -1 +1,4 @@ -signal_async(6, 7) +// trace 0 +trace { + signal_async(6, 7); +} diff --git a/monitor/tests/brave_new_world_francis/use_without_valid.out b/monitor/tests/brave_new_world_francis/use_without_valid.out index 12fab7a6..1b5733f2 100644 --- a/monitor/tests/brave_new_world_francis/use_without_valid.out +++ b/monitor/tests/brave_new_world_francis/use_without_valid.out @@ -1 +1,4 @@ -use_without_valid(5, 5) +// trace 0 +trace { + use_without_valid(5, 5); +} diff --git a/monitor/tests/fifo/fifo.out b/monitor/tests/fifo/fifo.out index 224ff776..8d3f2a95 100644 --- a/monitor/tests/fifo/fifo.out +++ b/monitor/tests/fifo/fifo.out @@ -1,6 +1,9 @@ -reset() -push(3) -push(4) -idle() -pop(3) -pop(4) +// trace 0 +trace { + reset(); + push(3); + push(4); + idle(); + pop(3); + pop(4); +} diff --git a/monitor/tests/fifo/push_pop_identity.out b/monitor/tests/fifo/push_pop_identity.out index 062dcbdf..7b7038ac 100644 --- a/monitor/tests/fifo/push_pop_identity.out +++ b/monitor/tests/fifo/push_pop_identity.out @@ -1,6 +1,9 @@ -reset() -push(2) -pop(2) -idle() -push(3) -pop(3) +// trace 0 +trace { + reset(); + push(2); + pop(2); + idle(); + push(3); + pop(3); +} diff --git a/monitor/tests/fpga-debugging/axi-stream-s2/s2_buggy.out b/monitor/tests/fpga-debugging/axi-stream-s2/s2_buggy.out index 37f1e4de..40a7ea8e 100644 --- a/monitor/tests/fpga-debugging/axi-stream-s2/s2_buggy.out +++ b/monitor/tests/fpga-debugging/axi-stream-s2/s2_buggy.out @@ -1,33 +1,38 @@ -Trace 0: -reset() // [time: 0ns -> 12.5ns] (thread 0) -wait_for_data() // [time: 337.5ns -> 362.5ns] (thread 19) -wait_for_data() // [time: 387.5ns -> 412.5ns] (thread 21) -wait_for_data() // [time: 512.5ns -> 537.5ns] (thread 26) -wait_for_data() // [time: 537.5ns -> 562.5ns] (thread 27) -wait_for_data() // [time: 612.5ns -> 637.5ns] (thread 30) -wait_for_data() // [time: 787.5ns -> 812.5ns] (thread 37) -wait_for_data() // [time: 837.5ns -> 862.5ns] (thread 39) -recv(1) // [time: 862.5ns -> 887.5ns] (thread 40) -recv(2) // [time: 887.5ns -> 912.5ns] (thread 41) -recv(3) // [time: 912.5ns -> 937.5ns] (thread 42) -recv(4) // [time: 937.5ns -> 962.5ns] (thread 43) -recv(5) // [time: 962.5ns -> 987.5ns] (thread 44) -recv(6) // [time: 987.5ns -> 1012.5ns] (thread 45) -stall(7, 0) // [time: 1012.5ns -> 1037.5ns] (thread 46) -stall(7, 1) // [time: 1037.5ns -> 1050ns] (thread 47) -Trace 1: -reset() // [time: 0ns -> 12.5ns] (thread 0) -wait_for_data() // [time: 337.5ns -> 362.5ns] (thread 19) -wait_for_data() // [time: 387.5ns -> 412.5ns] (thread 21) -wait_for_data() // [time: 512.5ns -> 537.5ns] (thread 26) -wait_for_data() // [time: 537.5ns -> 562.5ns] (thread 27) -wait_for_data() // [time: 612.5ns -> 637.5ns] (thread 30) -wait_for_data() // [time: 787.5ns -> 812.5ns] (thread 37) -wait_for_data() // [time: 837.5ns -> 862.5ns] (thread 39) -recv(1) // [time: 862.5ns -> 887.5ns] (thread 40) -recv(2) // [time: 887.5ns -> 912.5ns] (thread 41) -recv(3) // [time: 912.5ns -> 937.5ns] (thread 42) -recv(4) // [time: 937.5ns -> 962.5ns] (thread 43) -recv(5) // [time: 962.5ns -> 987.5ns] (thread 44) -recv(6) // [time: 987.5ns -> 1012.5ns] (thread 45) -stall(7, 1) // [time: 1037.5ns -> 1050ns] (thread 47) +// trace 0 +trace { + reset(); // [time: 0ns -> 12.5ns] + wait_for_data(); // [time: 337.5ns -> 362.5ns] + wait_for_data(); // [time: 387.5ns -> 412.5ns] + wait_for_data(); // [time: 512.5ns -> 537.5ns] + wait_for_data(); // [time: 537.5ns -> 562.5ns] + wait_for_data(); // [time: 612.5ns -> 637.5ns] + wait_for_data(); // [time: 787.5ns -> 812.5ns] + wait_for_data(); // [time: 837.5ns -> 862.5ns] + recv(1); // [time: 862.5ns -> 887.5ns] + recv(2); // [time: 887.5ns -> 912.5ns] + recv(3); // [time: 912.5ns -> 937.5ns] + recv(4); // [time: 937.5ns -> 962.5ns] + recv(5); // [time: 962.5ns -> 987.5ns] + recv(6); // [time: 987.5ns -> 1012.5ns] + stall(7, 0); // [time: 1012.5ns -> 1037.5ns] + stall(7, 1); // [time: 1037.5ns -> 1050ns] +} + +// trace 1 +trace { + reset(); // [time: 0ns -> 12.5ns] + wait_for_data(); // [time: 337.5ns -> 362.5ns] + wait_for_data(); // [time: 387.5ns -> 412.5ns] + wait_for_data(); // [time: 512.5ns -> 537.5ns] + wait_for_data(); // [time: 537.5ns -> 562.5ns] + wait_for_data(); // [time: 612.5ns -> 637.5ns] + wait_for_data(); // [time: 787.5ns -> 812.5ns] + wait_for_data(); // [time: 837.5ns -> 862.5ns] + recv(1); // [time: 862.5ns -> 887.5ns] + recv(2); // [time: 887.5ns -> 912.5ns] + recv(3); // [time: 912.5ns -> 937.5ns] + recv(4); // [time: 937.5ns -> 962.5ns] + recv(5); // [time: 962.5ns -> 987.5ns] + recv(6); // [time: 987.5ns -> 1012.5ns] + stall(7, 1); // [time: 1037.5ns -> 1050ns] +} diff --git a/monitor/tests/fpga-debugging/axi-stream-s2/s2_fixed.out b/monitor/tests/fpga-debugging/axi-stream-s2/s2_fixed.out index 6e1b7d21..8ad4900a 100644 --- a/monitor/tests/fpga-debugging/axi-stream-s2/s2_fixed.out +++ b/monitor/tests/fpga-debugging/axi-stream-s2/s2_fixed.out @@ -1,54 +1,62 @@ -Trace 0: -reset() // [time: 0ns -> 12.5ns] (thread 0) -wait_for_data() // [time: 337.5ns -> 362.5ns] (thread 19) -wait_for_data() // [time: 387.5ns -> 412.5ns] (thread 21) -wait_for_data() // [time: 512.5ns -> 537.5ns] (thread 26) -wait_for_data() // [time: 537.5ns -> 562.5ns] (thread 27) -wait_for_data() // [time: 612.5ns -> 637.5ns] (thread 30) -wait_for_data() // [time: 787.5ns -> 812.5ns] (thread 37) -wait_for_data() // [time: 837.5ns -> 862.5ns] (thread 39) -recv(1) // [time: 862.5ns -> 887.5ns] (thread 40) -recv(2) // [time: 887.5ns -> 912.5ns] (thread 41) -recv(3) // [time: 912.5ns -> 937.5ns] (thread 42) -recv(4) // [time: 937.5ns -> 962.5ns] (thread 43) -recv(5) // [time: 962.5ns -> 987.5ns] (thread 44) -recv(6) // [time: 987.5ns -> 1012.5ns] (thread 45) -stall(7, 0) // [time: 1012.5ns -> 1037.5ns] (thread 46) -stall(7, 0) // [time: 1037.5ns -> 1062.5ns] (thread 47) -reset() // [time: 1062.5ns -> 1087.5ns] (thread 48) -reset() // [time: 1087.5ns -> 1100ns] (thread 49) -Trace 1: -reset() // [time: 0ns -> 12.5ns] (thread 0) -wait_for_data() // [time: 337.5ns -> 362.5ns] (thread 19) -wait_for_data() // [time: 387.5ns -> 412.5ns] (thread 21) -wait_for_data() // [time: 512.5ns -> 537.5ns] (thread 26) -wait_for_data() // [time: 537.5ns -> 562.5ns] (thread 27) -wait_for_data() // [time: 612.5ns -> 637.5ns] (thread 30) -wait_for_data() // [time: 787.5ns -> 812.5ns] (thread 37) -wait_for_data() // [time: 837.5ns -> 862.5ns] (thread 39) -recv(1) // [time: 862.5ns -> 887.5ns] (thread 40) -recv(2) // [time: 887.5ns -> 912.5ns] (thread 41) -recv(3) // [time: 912.5ns -> 937.5ns] (thread 42) -recv(4) // [time: 937.5ns -> 962.5ns] (thread 43) -recv(5) // [time: 962.5ns -> 987.5ns] (thread 44) -recv(6) // [time: 987.5ns -> 1012.5ns] (thread 45) -stall(7, 0) // [time: 1012.5ns -> 1037.5ns] (thread 46) -reset() // [time: 1062.5ns -> 1087.5ns] (thread 48) -reset() // [time: 1087.5ns -> 1100ns] (thread 49) -Trace 2: -reset() // [time: 0ns -> 12.5ns] (thread 0) -wait_for_data() // [time: 337.5ns -> 362.5ns] (thread 19) -wait_for_data() // [time: 387.5ns -> 412.5ns] (thread 21) -wait_for_data() // [time: 512.5ns -> 537.5ns] (thread 26) -wait_for_data() // [time: 537.5ns -> 562.5ns] (thread 27) -wait_for_data() // [time: 612.5ns -> 637.5ns] (thread 30) -wait_for_data() // [time: 787.5ns -> 812.5ns] (thread 37) -wait_for_data() // [time: 837.5ns -> 862.5ns] (thread 39) -recv(1) // [time: 862.5ns -> 887.5ns] (thread 40) -recv(2) // [time: 887.5ns -> 912.5ns] (thread 41) -recv(3) // [time: 912.5ns -> 937.5ns] (thread 42) -recv(4) // [time: 937.5ns -> 962.5ns] (thread 43) -recv(5) // [time: 962.5ns -> 987.5ns] (thread 44) -recv(6) // [time: 987.5ns -> 1012.5ns] (thread 45) -reset() // [time: 1062.5ns -> 1087.5ns] (thread 48) -reset() // [time: 1087.5ns -> 1100ns] (thread 49) +// trace 0 +trace { + reset(); // [time: 0ns -> 12.5ns] + wait_for_data(); // [time: 337.5ns -> 362.5ns] + wait_for_data(); // [time: 387.5ns -> 412.5ns] + wait_for_data(); // [time: 512.5ns -> 537.5ns] + wait_for_data(); // [time: 537.5ns -> 562.5ns] + wait_for_data(); // [time: 612.5ns -> 637.5ns] + wait_for_data(); // [time: 787.5ns -> 812.5ns] + wait_for_data(); // [time: 837.5ns -> 862.5ns] + recv(1); // [time: 862.5ns -> 887.5ns] + recv(2); // [time: 887.5ns -> 912.5ns] + recv(3); // [time: 912.5ns -> 937.5ns] + recv(4); // [time: 937.5ns -> 962.5ns] + recv(5); // [time: 962.5ns -> 987.5ns] + recv(6); // [time: 987.5ns -> 1012.5ns] + stall(7, 0); // [time: 1012.5ns -> 1037.5ns] + stall(7, 0); // [time: 1037.5ns -> 1062.5ns] + reset(); // [time: 1062.5ns -> 1087.5ns] + reset(); // [time: 1087.5ns -> 1100ns] +} + +// trace 1 +trace { + reset(); // [time: 0ns -> 12.5ns] + wait_for_data(); // [time: 337.5ns -> 362.5ns] + wait_for_data(); // [time: 387.5ns -> 412.5ns] + wait_for_data(); // [time: 512.5ns -> 537.5ns] + wait_for_data(); // [time: 537.5ns -> 562.5ns] + wait_for_data(); // [time: 612.5ns -> 637.5ns] + wait_for_data(); // [time: 787.5ns -> 812.5ns] + wait_for_data(); // [time: 837.5ns -> 862.5ns] + recv(1); // [time: 862.5ns -> 887.5ns] + recv(2); // [time: 887.5ns -> 912.5ns] + recv(3); // [time: 912.5ns -> 937.5ns] + recv(4); // [time: 937.5ns -> 962.5ns] + recv(5); // [time: 962.5ns -> 987.5ns] + recv(6); // [time: 987.5ns -> 1012.5ns] + stall(7, 0); // [time: 1012.5ns -> 1037.5ns] + reset(); // [time: 1062.5ns -> 1087.5ns] + reset(); // [time: 1087.5ns -> 1100ns] +} + +// trace 2 +trace { + reset(); // [time: 0ns -> 12.5ns] + wait_for_data(); // [time: 337.5ns -> 362.5ns] + wait_for_data(); // [time: 387.5ns -> 412.5ns] + wait_for_data(); // [time: 512.5ns -> 537.5ns] + wait_for_data(); // [time: 537.5ns -> 562.5ns] + wait_for_data(); // [time: 612.5ns -> 637.5ns] + wait_for_data(); // [time: 787.5ns -> 812.5ns] + wait_for_data(); // [time: 837.5ns -> 862.5ns] + recv(1); // [time: 862.5ns -> 887.5ns] + recv(2); // [time: 887.5ns -> 912.5ns] + recv(3); // [time: 912.5ns -> 937.5ns] + recv(4); // [time: 937.5ns -> 962.5ns] + recv(5); // [time: 962.5ns -> 987.5ns] + recv(6); // [time: 987.5ns -> 1012.5ns] + reset(); // [time: 1062.5ns -> 1087.5ns] + reset(); // [time: 1087.5ns -> 1100ns] +} diff --git a/monitor/tests/fpga-debugging/axis-adapter-s3/s3_buggy.out b/monitor/tests/fpga-debugging/axis-adapter-s3/s3_buggy.out index 59b5bbb2..fc233887 100644 --- a/monitor/tests/fpga-debugging/axis-adapter-s3/s3_buggy.out +++ b/monitor/tests/fpga-debugging/axis-adapter-s3/s3_buggy.out @@ -1,10 +1,13 @@ -reset() // [time: 0ns -> 25ns] (thread 0) -wait_for_data() // [time: 25ns -> 50ns] (thread 6) -wait_for_data() // [time: 50ns -> 75ns] (thread 7) -wait_for_data() // [time: 75ns -> 100ns] (thread 8) -recv(205) // [time: 100ns -> 125ns] (thread 9) -recv(171) // [time: 125ns -> 150ns] (thread 10) -recv(205) // [time: 150ns -> 175ns] (thread 11) -recv(171) // [time: 175ns -> 200ns] (thread 12) -recv(205) // [time: 200ns -> 225ns] (thread 13) -recv_last(171) // [time: 225ns -> 237.5ns] (thread 14) +// trace 0 +trace { + reset(); // [time: 0ns -> 25ns] + wait_for_data(); // [time: 25ns -> 50ns] + wait_for_data(); // [time: 50ns -> 75ns] + wait_for_data(); // [time: 75ns -> 100ns] + recv(205); // [time: 100ns -> 125ns] + recv(171); // [time: 125ns -> 150ns] + recv(205); // [time: 150ns -> 175ns] + recv(171); // [time: 175ns -> 200ns] + recv(205); // [time: 200ns -> 225ns] + recv_last(171); // [time: 225ns -> 237.5ns] +} diff --git a/monitor/tests/fpga-debugging/axis-adapter-s3/s3_fixed.out b/monitor/tests/fpga-debugging/axis-adapter-s3/s3_fixed.out index b4b160d8..989b7303 100644 --- a/monitor/tests/fpga-debugging/axis-adapter-s3/s3_fixed.out +++ b/monitor/tests/fpga-debugging/axis-adapter-s3/s3_fixed.out @@ -1,9 +1,12 @@ -reset() // [time: 0ns -> 25ns] (thread 0) -wait_for_data() // [time: 25ns -> 50ns] (thread 6) -wait_for_data() // [time: 50ns -> 75ns] (thread 7) -wait_for_data() // [time: 75ns -> 100ns] (thread 8) -recv(205) // [time: 100ns -> 125ns] (thread 9) -recv(171) // [time: 125ns -> 150ns] (thread 10) -recv(205) // [time: 150ns -> 175ns] (thread 11) -recv(171) // [time: 175ns -> 200ns] (thread 12) -recv_last(205) // [time: 200ns -> 212.5ns] (thread 13) +// trace 0 +trace { + reset(); // [time: 0ns -> 25ns] + wait_for_data(); // [time: 25ns -> 50ns] + wait_for_data(); // [time: 50ns -> 75ns] + wait_for_data(); // [time: 75ns -> 100ns] + recv(205); // [time: 100ns -> 125ns] + recv(171); // [time: 125ns -> 150ns] + recv(205); // [time: 150ns -> 175ns] + recv(171); // [time: 175ns -> 200ns] + recv_last(205); // [time: 200ns -> 212.5ns] +} diff --git a/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_buggy.out b/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_buggy.out index 817f39e8..d80b0d5f 100644 --- a/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_buggy.out +++ b/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_buggy.out @@ -1,15 +1,18 @@ -Sender::reset() // [time: 0ns -> 25ns] (thread Sender::2) -Receiver::reset() // [time: 0ns -> 25ns] (thread Receiver::2) -Sender::idle() // [time: 25ns -> 50ns] (thread Sender::3) -Sender::push(1) // [time: 50ns -> 75ns] (thread Sender::4) -Sender::push(2) // [time: 75ns -> 100ns] (thread Sender::5) -Sender::push(3) // [time: 100ns -> 125ns] (thread Sender::6) -Receiver::pop(2) // [time: 25ns -> 125ns] (thread Receiver::3) -Sender::push(4) // [time: 125ns -> 150ns] (thread Sender::7) -Receiver::pop(3) // [time: 100ns -> 150ns] (thread Receiver::4) -Sender::push(5) // [time: 150ns -> 175ns] (thread Sender::8) -Receiver::pop(4) // [time: 125ns -> 175ns] (thread Receiver::5) -Sender::push(6) // [time: 175ns -> 200ns] (thread Sender::9) -Receiver::pop(5) // [time: 150ns -> 200ns] (thread Receiver::6) -Sender::push(7) // [time: 200ns -> 212.5ns] (thread Sender::10) -Receiver::pop(6) // [time: 175ns -> 212.5ns] (thread Receiver::7) +// trace 0 +trace { + Sender::reset(); // [time: 0ns -> 25ns] + Receiver::reset(); // [time: 0ns -> 25ns] + Sender::idle(); // [time: 25ns -> 50ns] + Sender::push(1); // [time: 50ns -> 75ns] + Sender::push(2); // [time: 75ns -> 100ns] + Sender::push(3); // [time: 100ns -> 125ns] + Receiver::pop(2); // [time: 25ns -> 125ns] + Sender::push(4); // [time: 125ns -> 150ns] + Receiver::pop(3); // [time: 100ns -> 150ns] + Sender::push(5); // [time: 150ns -> 175ns] + Receiver::pop(4); // [time: 125ns -> 175ns] + Sender::push(6); // [time: 175ns -> 200ns] + Receiver::pop(5); // [time: 150ns -> 200ns] + Sender::push(7); // [time: 200ns -> 212.5ns] + Receiver::pop(6); // [time: 175ns -> 212.5ns] +} diff --git a/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_fixed.out b/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_fixed.out index 2516f6b4..421b780e 100644 --- a/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_fixed.out +++ b/monitor/tests/fpga-debugging/axis-async-fifo-c4/c4_fixed.out @@ -1,20 +1,23 @@ -Sender::reset() // [time: 0ns -> 25ns] (thread Sender::2) -Receiver::reset() // [time: 0ns -> 25ns] (thread Receiver::2) -Sender::idle() // [time: 25ns -> 50ns] (thread Sender::3) -Receiver::idle() // [time: 25ns -> 50ns] (thread Receiver::3) -Sender::push(1) // [time: 50ns -> 75ns] (thread Sender::4) -Receiver::idle() // [time: 50ns -> 75ns] (thread Receiver::4) -Sender::push(2) // [time: 75ns -> 100ns] (thread Sender::5) -Receiver::idle() // [time: 75ns -> 100ns] (thread Receiver::5) -Sender::push(3) // [time: 100ns -> 150ns] (thread Sender::6) -Receiver::pop(2) // [time: 100ns -> 150ns] (thread Receiver::6) -Sender::push(4) // [time: 150ns -> 175ns] (thread Sender::7) -Receiver::pop(3) // [time: 125ns -> 175ns] (thread Receiver::7) -Sender::push(5) // [time: 175ns -> 200ns] (thread Sender::8) -Receiver::pop(4) // [time: 150ns -> 200ns] (thread Receiver::8) -Sender::push(6) // [time: 200ns -> 225ns] (thread Sender::9) -Receiver::pop(5) // [time: 175ns -> 225ns] (thread Receiver::9) -Sender::push(7) // [time: 225ns -> 250ns] (thread Sender::10) -Receiver::pop(6) // [time: 200ns -> 250ns] (thread Receiver::10) -Sender::push(8) // [time: 250ns -> 262.5ns] (thread Sender::11) -Receiver::pop(7) // [time: 225ns -> 262.5ns] (thread Receiver::11) +// trace 0 +trace { + Sender::reset(); // [time: 0ns -> 25ns] + Receiver::reset(); // [time: 0ns -> 25ns] + Sender::idle(); // [time: 25ns -> 50ns] + Receiver::idle(); // [time: 25ns -> 50ns] + Sender::push(1); // [time: 50ns -> 75ns] + Receiver::idle(); // [time: 50ns -> 75ns] + Sender::push(2); // [time: 75ns -> 100ns] + Receiver::idle(); // [time: 75ns -> 100ns] + Sender::push(3); // [time: 100ns -> 150ns] + Receiver::pop(2); // [time: 100ns -> 150ns] + Sender::push(4); // [time: 150ns -> 175ns] + Receiver::pop(3); // [time: 125ns -> 175ns] + Sender::push(5); // [time: 175ns -> 200ns] + Receiver::pop(4); // [time: 150ns -> 200ns] + Sender::push(6); // [time: 200ns -> 225ns] + Receiver::pop(5); // [time: 175ns -> 225ns] + Sender::push(7); // [time: 225ns -> 250ns] + Receiver::pop(6); // [time: 200ns -> 250ns] + Sender::push(8); // [time: 250ns -> 262.5ns] + Receiver::pop(7); // [time: 225ns -> 262.5ns] +} diff --git a/monitor/tests/fpga-debugging/axis-fifo-d11/d11_buggy.out b/monitor/tests/fpga-debugging/axis-fifo-d11/d11_buggy.out index 6ef1f7f7..7f01204e 100644 --- a/monitor/tests/fpga-debugging/axis-fifo-d11/d11_buggy.out +++ b/monitor/tests/fpga-debugging/axis-fifo-d11/d11_buggy.out @@ -1,14 +1,17 @@ -reset() // [time: 0ns -> 25ns] (thread 4) -push(1) // [time: 25ns -> 50ns] (thread 6) -push(1) // [time: 50ns -> 75ns] (thread 7) -push(2) // [time: 75ns -> 100ns] (thread 8) -push(4) // [time: 100ns -> 125ns] (thread 9) -push(5) // [time: 125ns -> 150ns] (thread 10) -push(6) // [time: 150ns -> 175ns] (thread 11) -push(6) // [time: 175ns -> 200ns] (thread 12) -push(6) // [time: 200ns -> 225ns] (thread 13) -push(6) // [time: 225ns -> 250ns] (thread 14) -push(6) // [time: 250ns -> 275ns] (thread 15) -push(6) // [time: 275ns -> 300ns] (thread 16) -reset() // [time: 300ns -> 325ns] (thread 17) -push(6) // [time: 325ns -> 337.5ns] (thread 18) +// trace 0 +trace { + reset(); // [time: 0ns -> 25ns] + push(1); // [time: 25ns -> 50ns] + push(1); // [time: 50ns -> 75ns] + push(2); // [time: 75ns -> 100ns] + push(4); // [time: 100ns -> 125ns] + push(5); // [time: 125ns -> 150ns] + push(6); // [time: 150ns -> 175ns] + push(6); // [time: 175ns -> 200ns] + push(6); // [time: 200ns -> 225ns] + push(6); // [time: 225ns -> 250ns] + push(6); // [time: 250ns -> 275ns] + push(6); // [time: 275ns -> 300ns] + reset(); // [time: 300ns -> 325ns] + push(6); // [time: 325ns -> 337.5ns] +} diff --git a/monitor/tests/fpga-debugging/axis-fifo-d11/d11_fixed.out b/monitor/tests/fpga-debugging/axis-fifo-d11/d11_fixed.out index 293ac6ee..91c4edb1 100644 --- a/monitor/tests/fpga-debugging/axis-fifo-d11/d11_fixed.out +++ b/monitor/tests/fpga-debugging/axis-fifo-d11/d11_fixed.out @@ -1,18 +1,21 @@ -reset() // [time: 0ns -> 25ns] (thread 4) -push(1) // [time: 25ns -> 50ns] (thread 6) -push(1) // [time: 50ns -> 75ns] (thread 7) -push(2) // [time: 75ns -> 100ns] (thread 8) -push(4) // [time: 100ns -> 125ns] (thread 9) -push(5) // [time: 125ns -> 150ns] (thread 10) -push(6) // [time: 150ns -> 175ns] (thread 11) -push(6) // [time: 175ns -> 200ns] (thread 12) -push(6) // [time: 200ns -> 225ns] (thread 13) -push(6) // [time: 225ns -> 250ns] (thread 14) -push(6) // [time: 250ns -> 275ns] (thread 15) -push(6) // [time: 275ns -> 300ns] (thread 16) -reset() // [time: 300ns -> 325ns] (thread 17) -push(6) // [time: 325ns -> 350ns] (thread 18) -push(6) // [time: 350ns -> 375ns] (thread 19) -push(7) // [time: 375ns -> 400ns] (thread 20) -push(7) // [time: 400ns -> 425ns] (thread 21) -push(7) // [time: 425ns -> 437.5ns] (thread 22) +// trace 0 +trace { + reset(); // [time: 0ns -> 25ns] + push(1); // [time: 25ns -> 50ns] + push(1); // [time: 50ns -> 75ns] + push(2); // [time: 75ns -> 100ns] + push(4); // [time: 100ns -> 125ns] + push(5); // [time: 125ns -> 150ns] + push(6); // [time: 150ns -> 175ns] + push(6); // [time: 175ns -> 200ns] + push(6); // [time: 200ns -> 225ns] + push(6); // [time: 225ns -> 250ns] + push(6); // [time: 250ns -> 275ns] + push(6); // [time: 275ns -> 300ns] + reset(); // [time: 300ns -> 325ns] + push(6); // [time: 325ns -> 350ns] + push(6); // [time: 350ns -> 375ns] + push(7); // [time: 375ns -> 400ns] + push(7); // [time: 400ns -> 425ns] + push(7); // [time: 425ns -> 437.5ns] +} diff --git a/monitor/tests/fpga-debugging/axis-fifo-d12/d12_buggy.out b/monitor/tests/fpga-debugging/axis-fifo-d12/d12_buggy.out index 8820ce32..6a0936b1 100644 --- a/monitor/tests/fpga-debugging/axis-fifo-d12/d12_buggy.out +++ b/monitor/tests/fpga-debugging/axis-fifo-d12/d12_buggy.out @@ -1,13 +1,16 @@ -reset() // [time: 0ns -> 25ns] (thread 4) -push(1) // [time: 25ns -> 50ns] (thread 5) -push(1) // [time: 50ns -> 75ns] (thread 6) -push(2) // [time: 75ns -> 100ns] (thread 7) -push(3) // [time: 100ns -> 125ns] (thread 8) -push(4) // [time: 125ns -> 150ns] (thread 9) -push(5) // [time: 150ns -> 175ns] (thread 10) -push(6) // [time: 175ns -> 200ns] (thread 11) -pop(1) // [time: 200ns -> 250ns] (thread 12) -push_and_pop(6, 2) // [time: 225ns -> 275ns] (thread 13) -push_and_pop(6, 3) // [time: 250ns -> 300ns] (thread 14) -push_and_pop(7, 3) // [time: 275ns -> 325ns] (thread 15) -push_and_pop(7, 5) // [time: 300ns -> 362.5ns] (thread 16) +// trace 0 +trace { + reset(); // [time: 0ns -> 25ns] + push(1); // [time: 25ns -> 50ns] + push(1); // [time: 50ns -> 75ns] + push(2); // [time: 75ns -> 100ns] + push(3); // [time: 100ns -> 125ns] + push(4); // [time: 125ns -> 150ns] + push(5); // [time: 150ns -> 175ns] + push(6); // [time: 175ns -> 200ns] + pop(1); // [time: 200ns -> 250ns] + push_and_pop(6, 2); // [time: 225ns -> 275ns] + push_and_pop(6, 3); // [time: 250ns -> 300ns] + push_and_pop(7, 3); // [time: 275ns -> 325ns] + push_and_pop(7, 5); // [time: 300ns -> 362.5ns] +} diff --git a/monitor/tests/fpga-debugging/axis-fifo-d12/d12_fixed.out b/monitor/tests/fpga-debugging/axis-fifo-d12/d12_fixed.out index c1a32ab4..4eeb0094 100644 --- a/monitor/tests/fpga-debugging/axis-fifo-d12/d12_fixed.out +++ b/monitor/tests/fpga-debugging/axis-fifo-d12/d12_fixed.out @@ -1,12 +1,15 @@ -reset() // [time: 0ns -> 25ns] (thread 4) -push(1) // [time: 25ns -> 50ns] (thread 5) -push(1) // [time: 50ns -> 75ns] (thread 6) -push(2) // [time: 75ns -> 100ns] (thread 7) -push(3) // [time: 100ns -> 125ns] (thread 8) -push(4) // [time: 125ns -> 150ns] (thread 9) -push(5) // [time: 150ns -> 175ns] (thread 10) -push(6) // [time: 175ns -> 200ns] (thread 11) -pop(1) // [time: 200ns -> 250ns] (thread 12) -push_and_pop(6, 2) // [time: 225ns -> 275ns] (thread 13) -push_and_pop(6, 3) // [time: 250ns -> 300ns] (thread 14) -push_and_pop(7, 3) // [time: 275ns -> 325ns] (thread 15) +// trace 0 +trace { + reset(); // [time: 0ns -> 25ns] + push(1); // [time: 25ns -> 50ns] + push(1); // [time: 50ns -> 75ns] + push(2); // [time: 75ns -> 100ns] + push(3); // [time: 100ns -> 125ns] + push(4); // [time: 125ns -> 150ns] + push(5); // [time: 150ns -> 175ns] + push(6); // [time: 175ns -> 200ns] + pop(1); // [time: 200ns -> 250ns] + push_and_pop(6, 2); // [time: 225ns -> 275ns] + push_and_pop(6, 3); // [time: 250ns -> 300ns] + push_and_pop(7, 3); // [time: 275ns -> 325ns] +} diff --git a/monitor/tests/fpga-debugging/axis-fifo-d4/d4_buggy.out b/monitor/tests/fpga-debugging/axis-fifo-d4/d4_buggy.out index 478c0376..168cdc90 100644 --- a/monitor/tests/fpga-debugging/axis-fifo-d4/d4_buggy.out +++ b/monitor/tests/fpga-debugging/axis-fifo-d4/d4_buggy.out @@ -1,44 +1,47 @@ -reset() // [time: 0ns -> 2.5ns] (thread 4) -reset() // [time: 2.5ns -> 5ns] (thread 5) -reset() // [time: 5ns -> 7.5ns] (thread 6) -reset() // [time: 7.5ns -> 10ns] (thread 7) -reset() // [time: 10ns -> 12.5ns] (thread 8) -reset() // [time: 12.5ns -> 15ns] (thread 9) -reset() // [time: 15ns -> 17.5ns] (thread 10) -reset() // [time: 17.5ns -> 20ns] (thread 11) -reset() // [time: 20ns -> 22.5ns] (thread 12) -reset() // [time: 22.5ns -> 25ns] (thread 13) -push(0) // [time: 37.5ns -> 40ns] (thread 19) -push(1) // [time: 40ns -> 42.5ns] (thread 20) -push(2) // [time: 42.5ns -> 45ns] (thread 21) -push(3) // [time: 45ns -> 47.5ns] (thread 22) -push(4) // [time: 47.5ns -> 50ns] (thread 23) -push(5) // [time: 50ns -> 52.5ns] (thread 24) -push(6) // [time: 52.5ns -> 55ns] (thread 25) -push(7) // [time: 55ns -> 57.5ns] (thread 26) -push(8) // [time: 57.5ns -> 60ns] (thread 27) -push(9) // [time: 60ns -> 62.5ns] (thread 28) -push(233) // [time: 62.5ns -> 65ns] (thread 29) -push(0) // [time: 77.5ns -> 80ns] (thread 35) -push(1) // [time: 80ns -> 82.5ns] (thread 36) -push(2) // [time: 82.5ns -> 85ns] (thread 37) -push(3) // [time: 85ns -> 87.5ns] (thread 38) -push(4) // [time: 87.5ns -> 90ns] (thread 39) -push(5) // [time: 90ns -> 92.5ns] (thread 40) -push(6) // [time: 92.5ns -> 95ns] (thread 41) -push(7) // [time: 95ns -> 97.5ns] (thread 42) -push(8) // [time: 97.5ns -> 100ns] (thread 43) -push(9) // [time: 100ns -> 102.5ns] (thread 44) -push(233) // [time: 102.5ns -> 105ns] (thread 45) -push(0) // [time: 117.5ns -> 120ns] (thread 51) -push(1) // [time: 120ns -> 122.5ns] (thread 52) -push(2) // [time: 122.5ns -> 125ns] (thread 53) -push(3) // [time: 125ns -> 127.5ns] (thread 54) -push(4) // [time: 127.5ns -> 130ns] (thread 55) -push(5) // [time: 130ns -> 132.5ns] (thread 56) -push(6) // [time: 132.5ns -> 135ns] (thread 57) -push(7) // [time: 135ns -> 137.5ns] (thread 58) -push(8) // [time: 137.5ns -> 140ns] (thread 59) -push(9) // [time: 140ns -> 142.5ns] (thread 60) -push(233) // [time: 142.5ns -> 145ns] (thread 61) -push(0) // [time: 157.5ns -> 158.75ns] (thread 67) +// trace 0 +trace { + reset(); // [time: 0ns -> 2.5ns] + reset(); // [time: 2.5ns -> 5ns] + reset(); // [time: 5ns -> 7.5ns] + reset(); // [time: 7.5ns -> 10ns] + reset(); // [time: 10ns -> 12.5ns] + reset(); // [time: 12.5ns -> 15ns] + reset(); // [time: 15ns -> 17.5ns] + reset(); // [time: 17.5ns -> 20ns] + reset(); // [time: 20ns -> 22.5ns] + reset(); // [time: 22.5ns -> 25ns] + push(0); // [time: 37.5ns -> 40ns] + push(1); // [time: 40ns -> 42.5ns] + push(2); // [time: 42.5ns -> 45ns] + push(3); // [time: 45ns -> 47.5ns] + push(4); // [time: 47.5ns -> 50ns] + push(5); // [time: 50ns -> 52.5ns] + push(6); // [time: 52.5ns -> 55ns] + push(7); // [time: 55ns -> 57.5ns] + push(8); // [time: 57.5ns -> 60ns] + push(9); // [time: 60ns -> 62.5ns] + push(233); // [time: 62.5ns -> 65ns] + push(0); // [time: 77.5ns -> 80ns] + push(1); // [time: 80ns -> 82.5ns] + push(2); // [time: 82.5ns -> 85ns] + push(3); // [time: 85ns -> 87.5ns] + push(4); // [time: 87.5ns -> 90ns] + push(5); // [time: 90ns -> 92.5ns] + push(6); // [time: 92.5ns -> 95ns] + push(7); // [time: 95ns -> 97.5ns] + push(8); // [time: 97.5ns -> 100ns] + push(9); // [time: 100ns -> 102.5ns] + push(233); // [time: 102.5ns -> 105ns] + push(0); // [time: 117.5ns -> 120ns] + push(1); // [time: 120ns -> 122.5ns] + push(2); // [time: 122.5ns -> 125ns] + push(3); // [time: 125ns -> 127.5ns] + push(4); // [time: 127.5ns -> 130ns] + push(5); // [time: 130ns -> 132.5ns] + push(6); // [time: 132.5ns -> 135ns] + push(7); // [time: 135ns -> 137.5ns] + push(8); // [time: 137.5ns -> 140ns] + push(9); // [time: 140ns -> 142.5ns] + push(233); // [time: 142.5ns -> 145ns] + push(0); // [time: 157.5ns -> 158.75ns] +} diff --git a/monitor/tests/fpga-debugging/axis-fifo-d4/d4_fixed.out b/monitor/tests/fpga-debugging/axis-fifo-d4/d4_fixed.out index abf42e0a..d4462d29 100644 --- a/monitor/tests/fpga-debugging/axis-fifo-d4/d4_fixed.out +++ b/monitor/tests/fpga-debugging/axis-fifo-d4/d4_fixed.out @@ -1,43 +1,46 @@ -reset() // [time: 0ns -> 2.5ns] (thread 4) -reset() // [time: 2.5ns -> 5ns] (thread 5) -reset() // [time: 5ns -> 7.5ns] (thread 6) -reset() // [time: 7.5ns -> 10ns] (thread 7) -reset() // [time: 10ns -> 12.5ns] (thread 8) -reset() // [time: 12.5ns -> 15ns] (thread 9) -reset() // [time: 15ns -> 17.5ns] (thread 10) -reset() // [time: 17.5ns -> 20ns] (thread 11) -reset() // [time: 20ns -> 22.5ns] (thread 12) -reset() // [time: 22.5ns -> 25ns] (thread 13) -push(0) // [time: 37.5ns -> 40ns] (thread 19) -push(1) // [time: 40ns -> 42.5ns] (thread 20) -push(2) // [time: 42.5ns -> 45ns] (thread 21) -push(3) // [time: 45ns -> 47.5ns] (thread 22) -push(4) // [time: 47.5ns -> 50ns] (thread 23) -push(5) // [time: 50ns -> 52.5ns] (thread 24) -push(6) // [time: 52.5ns -> 55ns] (thread 25) -push(7) // [time: 55ns -> 57.5ns] (thread 26) -push(8) // [time: 57.5ns -> 60ns] (thread 27) -push(9) // [time: 60ns -> 62.5ns] (thread 28) -push(233) // [time: 62.5ns -> 65ns] (thread 29) -push(0) // [time: 77.5ns -> 80ns] (thread 35) -push(1) // [time: 80ns -> 82.5ns] (thread 36) -push(2) // [time: 82.5ns -> 85ns] (thread 37) -push(3) // [time: 85ns -> 87.5ns] (thread 38) -push(4) // [time: 87.5ns -> 90ns] (thread 39) -push(5) // [time: 90ns -> 92.5ns] (thread 40) -push(6) // [time: 92.5ns -> 95ns] (thread 41) -push(7) // [time: 95ns -> 97.5ns] (thread 42) -push(8) // [time: 97.5ns -> 100ns] (thread 43) -push(9) // [time: 100ns -> 102.5ns] (thread 44) -push(233) // [time: 102.5ns -> 105ns] (thread 45) -push(0) // [time: 117.5ns -> 120ns] (thread 51) -push(1) // [time: 120ns -> 122.5ns] (thread 52) -push(2) // [time: 122.5ns -> 125ns] (thread 53) -push(3) // [time: 125ns -> 127.5ns] (thread 54) -push(4) // [time: 127.5ns -> 130ns] (thread 55) -push(5) // [time: 130ns -> 132.5ns] (thread 56) -push(6) // [time: 132.5ns -> 135ns] (thread 57) -push(7) // [time: 135ns -> 137.5ns] (thread 58) -push(8) // [time: 137.5ns -> 140ns] (thread 59) -push(9) // [time: 140ns -> 142.5ns] (thread 60) -push(233) // [time: 142.5ns -> 145ns] (thread 61) +// trace 0 +trace { + reset(); // [time: 0ns -> 2.5ns] + reset(); // [time: 2.5ns -> 5ns] + reset(); // [time: 5ns -> 7.5ns] + reset(); // [time: 7.5ns -> 10ns] + reset(); // [time: 10ns -> 12.5ns] + reset(); // [time: 12.5ns -> 15ns] + reset(); // [time: 15ns -> 17.5ns] + reset(); // [time: 17.5ns -> 20ns] + reset(); // [time: 20ns -> 22.5ns] + reset(); // [time: 22.5ns -> 25ns] + push(0); // [time: 37.5ns -> 40ns] + push(1); // [time: 40ns -> 42.5ns] + push(2); // [time: 42.5ns -> 45ns] + push(3); // [time: 45ns -> 47.5ns] + push(4); // [time: 47.5ns -> 50ns] + push(5); // [time: 50ns -> 52.5ns] + push(6); // [time: 52.5ns -> 55ns] + push(7); // [time: 55ns -> 57.5ns] + push(8); // [time: 57.5ns -> 60ns] + push(9); // [time: 60ns -> 62.5ns] + push(233); // [time: 62.5ns -> 65ns] + push(0); // [time: 77.5ns -> 80ns] + push(1); // [time: 80ns -> 82.5ns] + push(2); // [time: 82.5ns -> 85ns] + push(3); // [time: 85ns -> 87.5ns] + push(4); // [time: 87.5ns -> 90ns] + push(5); // [time: 90ns -> 92.5ns] + push(6); // [time: 92.5ns -> 95ns] + push(7); // [time: 95ns -> 97.5ns] + push(8); // [time: 97.5ns -> 100ns] + push(9); // [time: 100ns -> 102.5ns] + push(233); // [time: 102.5ns -> 105ns] + push(0); // [time: 117.5ns -> 120ns] + push(1); // [time: 120ns -> 122.5ns] + push(2); // [time: 122.5ns -> 125ns] + push(3); // [time: 125ns -> 127.5ns] + push(4); // [time: 127.5ns -> 130ns] + push(5); // [time: 130ns -> 132.5ns] + push(6); // [time: 132.5ns -> 135ns] + push(7); // [time: 135ns -> 137.5ns] + push(8); // [time: 137.5ns -> 140ns] + push(9); // [time: 140ns -> 142.5ns] + push(233); // [time: 142.5ns -> 145ns] +} diff --git a/monitor/tests/identities/identity_d1.out b/monitor/tests/identities/identity_d1.out index 49bf44d7..6b745f06 100644 --- a/monitor/tests/identities/identity_d1.out +++ b/monitor/tests/identities/identity_d1.out @@ -1 +1,4 @@ -slicing_ok(1, 1) +// trace 0 +trace { + slicing_ok(1, 1); +} diff --git a/monitor/tests/multi/multi0.out b/monitor/tests/multi/multi0.out index f416770e..8219b9ab 100644 --- a/monitor/tests/multi/multi0.out +++ b/monitor/tests/multi/multi0.out @@ -1 +1,4 @@ -multi(10, 10) +// trace 0 +trace { + multi(10, 10); +} diff --git a/monitor/tests/multi/multi0keep.out b/monitor/tests/multi/multi0keep.out index f416770e..8219b9ab 100644 --- a/monitor/tests/multi/multi0keep.out +++ b/monitor/tests/multi/multi0keep.out @@ -1 +1,4 @@ -multi(10, 10) +// trace 0 +trace { + multi(10, 10); +} diff --git a/monitor/tests/multi/multi0keep2const.out b/monitor/tests/multi/multi0keep2const.out index f416770e..8219b9ab 100644 --- a/monitor/tests/multi/multi0keep2const.out +++ b/monitor/tests/multi/multi0keep2const.out @@ -1 +1,4 @@ -multi(10, 10) +// trace 0 +trace { + multi(10, 10); +} diff --git a/monitor/tests/multi/multi2const.out b/monitor/tests/multi/multi2const.out index f416770e..8219b9ab 100644 --- a/monitor/tests/multi/multi2const.out +++ b/monitor/tests/multi/multi2const.out @@ -1 +1,4 @@ -multi(10, 10) +// trace 0 +trace { + multi(10, 10); +} diff --git a/monitor/tests/multi/multi2multi.out b/monitor/tests/multi/multi2multi.out index f416770e..8219b9ab 100644 --- a/monitor/tests/multi/multi2multi.out +++ b/monitor/tests/multi/multi2multi.out @@ -1 +1,4 @@ -multi(10, 10) +// trace 0 +trace { + multi(10, 10); +} diff --git a/monitor/tests/multi/multi_data.out b/monitor/tests/multi/multi_data.out index f416770e..8219b9ab 100644 --- a/monitor/tests/multi/multi_data.out +++ b/monitor/tests/multi/multi_data.out @@ -1 +1,4 @@ -multi(10, 10) +// trace 0 +trace { + multi(10, 10); +} diff --git a/monitor/tests/multipliers/mult_d2.out b/monitor/tests/multipliers/mult_d2.out index 0198f095..e81c6c28 100644 --- a/monitor/tests/multipliers/mult_d2.out +++ b/monitor/tests/multipliers/mult_d2.out @@ -1,2 +1,5 @@ -mul(1, 2, 2) -mul(6, 8, 48) +// trace 0 +trace { + mul(1, 2, 2); + mul(6, 8, 48); +} diff --git a/monitor/tests/picorv32/pcpi_mul_unsigned_mul.out b/monitor/tests/picorv32/pcpi_mul_unsigned_mul.out index b7159d35..7b7bd936 100644 --- a/monitor/tests/picorv32/pcpi_mul_unsigned_mul.out +++ b/monitor/tests/picorv32/pcpi_mul_unsigned_mul.out @@ -1,5 +1,8 @@ -pcpi_mul_reset() -pcpi_mul(1, 1, 1, 33554483) -pcpi_mul(1, 100, 100, 33554483) -pcpi_mul(100, 1, 100, 33554483) -pcpi_mul(33554483, 200, 2415929304, 33554483) +// trace 0 +trace { + pcpi_mul_reset(); + pcpi_mul(1, 1, 1, 33554483); + pcpi_mul(1, 100, 100, 33554483); + pcpi_mul(100, 1, 100, 33554483); + pcpi_mul(33554483, 200, 2415929304, 33554483); +} diff --git a/monitor/tests/serv/serv_regfile.out b/monitor/tests/serv/serv_regfile.out index da1a472f..92f93316 100644 --- a/monitor/tests/serv/serv_regfile.out +++ b/monitor/tests/serv/serv_regfile.out @@ -1,2 +1,5 @@ -read_write(0x00, 0x00000000, 0x00000000, 0x00, 0x1, 0x05, 0xdeadbeef) -read_write(0x05, 0xdeadbeef, 0x00000000, 0x00, 0x0, 0x00, 0x00000000) +// trace 0 +trace { + read_write(0x00, 0x00000000, 0x00000000, 0x00, 0x1, 0x05, 0xdeadbeef); + read_write(0x05, 0xdeadbeef, 0x00000000, 0x00, 0x0, 0x00, 0x00000000); +} diff --git a/monitor/tests/tinyaes128/aes128.out b/monitor/tests/tinyaes128/aes128.out index c77ecc9f..0153c201 100644 --- a/monitor/tests/tinyaes128/aes128.out +++ b/monitor/tests/tinyaes128/aes128.out @@ -1,2 +1,5 @@ -aes128(0x000102030405060708090a0b0c0d0e0f, 0x00112233445566778899aabbccddeeff, 0x69c4e0d86a7b0430d8cdb78070b4c55a) -aes128(0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x66e94bd4ef8a2c3b884cfa59ca342b2e) +// trace 0 +trace { + aes128(0x000102030405060708090a0b0c0d0e0f, 0x00112233445566778899aabbccddeeff, 0x69c4e0d86a7b0430d8cdb78070b4c55a); + aes128(0x00000000000000000000000000000000, 0x00000000000000000000000000000000, 0x66e94bd4ef8a2c3b884cfa59ca342b2e); +} diff --git a/monitor/tests/wal/advanced/axis.out b/monitor/tests/wal/advanced/axis.out index 7f9da4e5..3f3b07eb 100644 --- a/monitor/tests/wal/advanced/axis.out +++ b/monitor/tests/wal/advanced/axis.out @@ -1,12 +1,15 @@ -send_data(0) // [time: 804ns -> 812ns] (thread 102) -send_data(1) // [time: 1508ns -> 1516ns] (thread 190) -send_data(2) // [time: 2212ns -> 2220ns] (thread 278) -send_data(3) // [time: 2916ns -> 2924ns] (thread 366) -send_data(8) // [time: 3620ns -> 6628ns] (thread 454) -send_data(9) // [time: 7140ns -> 7412ns] (thread 519) -send_data(10) // [time: 7844ns -> 7852ns] (thread 574) -send_data(11) // [time: 8548ns -> 8556ns] (thread 662) -send_data(12) // [time: 9252ns -> 9260ns] (thread 750) -send_data(15) // [time: 9956ns -> 11628ns] (thread 838) -send_data(18) // [time: 12068ns -> 13932ns] (thread 894) -send_data(19) // [time: 14180ns -> 14188ns] (thread 926) +// trace 0 +trace { + send_data(0); // [time: 804ns -> 812ns] + send_data(1); // [time: 1508ns -> 1516ns] + send_data(2); // [time: 2212ns -> 2220ns] + send_data(3); // [time: 2916ns -> 2924ns] + send_data(8); // [time: 3620ns -> 6628ns] + send_data(9); // [time: 7140ns -> 7412ns] + send_data(10); // [time: 7844ns -> 7852ns] + send_data(11); // [time: 8548ns -> 8556ns] + send_data(12); // [time: 9252ns -> 9260ns] + send_data(15); // [time: 9956ns -> 11628ns] + send_data(18); // [time: 12068ns -> 13932ns] + send_data(19); // [time: 14180ns -> 14188ns] +} diff --git a/monitor/tests/wal/advanced/axis_minimal.out b/monitor/tests/wal/advanced/axis_minimal.out index 7d931465..1f3b586f 100644 --- a/monitor/tests/wal/advanced/axis_minimal.out +++ b/monitor/tests/wal/advanced/axis_minimal.out @@ -1 +1,4 @@ -send_data(15) // [time: 0ns -> 284ns] (thread 0) +// trace 0 +trace { + send_data(15); // [time: 0ns -> 284ns] +} diff --git a/monitor/tests/wal/advanced/axis_truncated.out b/monitor/tests/wal/advanced/axis_truncated.out index a378d355..7c8edb29 100644 --- a/monitor/tests/wal/advanced/axis_truncated.out +++ b/monitor/tests/wal/advanced/axis_truncated.out @@ -1,3 +1,6 @@ -send_data(15) // [time: 0ns -> 968ns] (thread 0) -send_data(18) // [time: 1408ns -> 3272ns] (thread 57) -send_data(19) // [time: 3520ns -> 3528ns] (thread 89) +// trace 0 +trace { + send_data(15); // [time: 0ns -> 968ns] + send_data(18); // [time: 1408ns -> 3272ns] + send_data(19); // [time: 3520ns -> 3528ns] +}