Verilog Templates  (On Going Development)


//=========================
hello.vl====================
module                     main;
initial
begin
$display("Hello, World");
$finish ;
end
endmodule


donsauer$ 
cd /Users/donsauer/Documents/KEY/KEY0/verilog     // drag folder into terminal
donsauer$  ./iverilog  hello.vl                              // produces a.out
donsauer$  ./a.out                                           // runs a.out
           Hello, World

//========================counter_Plus_Test.v====================

module                    test;                               
reg                       reset = 0;            /* Make a reset that pulses once. */
initial begin
# 17                      reset = 1;
# 11                      reset = 0;
# 29                      reset = 1;
# 11                      reset = 0;
# 100                     $stop;
end                  
reg                       clk = 0;
always #5                 clk = !clk;    /* Make a regular pulsing clock. */
wire [7:0]                value;
counter                   c1 (    value,  clk,  reset);
initial
$monitor(                "At time %t, value = %h (%0d)", $time, value, value);
endmodule              

module                    counter(  out,  clk,  reset);
parameter   WIDTH =       8;
output [WIDTH-1 : 0]                out;
input                                     clk,  reset ;
reg [WIDTH-1 : 0]         out;
wire                                      clk,  reset ;
always                    @(posedge       clk         )
out <=                    out + 1;
always                    @reset
if                        (reset)
assign                    out = 0;
else
deassign                  out;
endmodule 
       

//========================
donsauer$ 
./iverilog  counter_Plus_Test.v                   // produces a.out
donsauer$ 
./a.out                                           // runs a.out
At time                    0, value = xx (x)
At time                   17, value = 00 (0)
At time                   35, value = 01 (1)
At time                   45, value = 02 (2)
At time                   55, value = 03 (3)
At time                   57, value = 00 (0)
At time                   75, value = 01 (1)
At time                   85, value = 02 (2)
At time                   95, value = 03 (3)
At time                  105, value = 04 (4)
At time                  115, value = 05 (5)
At time                  125, value = 06 (6)
At time                  135, value = 07 (7)
At time                  145, value = 08 (8)
At time                  155, value = 09 (9)
At time                  165, value = 0a (10)
** VVP Stop(0) **
** Current simulation time is 168 ticks.

finish
** Continue **

//========================counter_Plus_Test.v===============================
module                  test;
reg                  
    reset;
reg                  
    clk;
wire [7:0]           
     value;
initial              
    begin
$dumpfile(           
   "counter_Plus_Test2.vcd");
$dumpvars(           
     0, test);
# 1  clk =           
     0;
# 17 reset =         
     1;
# 11 reset =         
    0;
# 19 reset =         
    1;
# 31 reset =         
    0;
# 100                
    $finish;
end
always #5                 clk =!clk;
counter                   c1 (       value,  clk, reset);
initial
$monitor(                "At time %t, value = %h (%0d)", $time, value, value);
endmodule            

module                  counter(  out,   clk,  reset);
parameter WIDTH =         8;
output [WIDTH-1:0]                     out;
input                                         clk,  reset ;
reg [WIDTH-1 : 0]                      out;
wire                                          clk,  reset ;
always                    @(posedge           clk         )
out <=                    out + 1;
always                    @reset
if                       (reset)
assign out =              0;
else
deassign                  out;
endmodule          

//========================RUN_GTKWave===========================
donsauer$  
./iverilog  counter_Plus_Test2.v                   // produces a.out
donsauer$  
./a.out                                            // creates vcd
VCD info:   dumpfile counter_Plus_Test.vcd opened for output.
At time                    0, value = xx (x)
At time                   18, value = 00 (0)
At time                   35, value = 01 (1)
At time                   45, value = 02 (2)
At time                   48, value = 00 (0)
At time                   85, value = 01 (1)
At time                   95, value = 02 (2)
At time                  105, value = 03 (3)
At time                  115, value = 04 (4)
At time                  125, value = 05 (5)
At time                  135, value = 06 (6)
At time                  145, value = 07 (7)
At time                  155, value = 08 (8)
At time                  165, value = 09 (9)
At time                  175, value = 0a (10)
donsauer$   PATH=${PATH}:/Developer/Simulator/GTKwave/bin
donsauer$   vertex counter_Plus_Test2.v -emitstems >counter_Plus_Test2.stems   //makes des.stems 
donsauer$   gtkwave -o -t counter_Plus_Test2.stems counter_Plus_Test2.vcd counter_Plus_Test2.sav 
// opens wave viewer
//========================RUN_GTKWave===========================

SigSearchPath.jpg

//========================SELECT_SIGNALS===========================

Signals.jpg



//========================VIEW_OUTPUT===========================

Output.jpg