21 / 24 · Lab
Shift-register simulation lab
Trace the serial input alongside q.
Lessons are free to read. Enroll to save your learning progress.
Prepare the example
Prepare a Digital Design Studio Desktop project and the permissions to run it. Save each example in a separate folder as rtl/top.sv.
module top (
input logic clk,
input logic rst,
input logic din,
output logic [2:0] q
);
// Old q[1:0] and din are captured together at each rising edge.
always_ff @(posedge clk)
if (rst) q <= 3'b000;
else q <= {q[1:0], din};
endmodule
Run the example
In New analysis, choose Two-state single-clock v1. Set Clock port to clk and the period to 1000ps. Use the values below, run Preflight, then Run RTL simulation and compare the result.
- Initial register values (LSB first)
- [false,false,false]
- Reset port
- rst · Active high · 1 cycle
- Maximum cycles / time
- 5 / 5000ps
Simulation inputs
This file sets the circuit input values at each time step. Expand the filename to inspect it, or download it for your lab.
[
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
true
]
}
}
]
Compare the result
5 cycles · q=011. The rising-edge sequence is 000 → 001 → 010 → 101 → 011.
These labs use two-state, single-clock RTL. Do not add #delay, initial or X/Z testbenches. Study progress does not verify a simulator run.