//! Root Comment
/// Type alias for a data word.
typedef logic [31:0] word_t;
/// First-in First-out Queue
///
/// This module implements a FIFO queue.
///
/// # Safety
/// Be careful, this module may harm your sanity.
// This is an irrelevant comment.
module fifo #(
/// Set this to a random value.
parameter N = 1000
)(
/// The main clock input.
input logic clk_i,
/// The first reset output.
output logic rst1_o,
/// The second reset output.
output logic rst2_o
);
//! Here are some additional details.
/// Here is some internal typedef.
typedef word_t [3:0] qword_t;
/// Some internal signals. Very strange.
///
/// You are actually expected to use this as follows:
/// ```
/// always_ff @(posedge clk_i) begin
/// data_q <= data_d;
/// end
/// ```
word_t data_d, data_q;
/// Magic nets.
word_t magic;
endmodule
/// A helper package for the fifo.
///
/// This is pretty awesome, you may want to consider using this.
package fifo_pkg;
/// Well, you've got to start somewhere.
typedef logic [1023:0][3:0] too_much_data_t;
/// Parametrization is very important.
parameter int Length = 123;
/// Local communities!
localparam int Width = 42;
endpackage