1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
/*
// Verilog syntax highlighting test file.
* Ryan Dalzell, 19th October 2005
* License: as-is
* NOTE This whole comment section should fold
* Testing the alerts:
* FIXME HACK NOTE NOTICE TASK TODO ###
*/
`timescale 1ns/1ns // comment in a directive.
`define ns 1
// typical Verilog syntax.
module test (clock, reset, clear, enable, d, q);
parameter param = 8;
parameter name = "test";
localparam local = param*4;
input clock;
input reset;
input clear;
input enable;
input [param-1:0] d;
output [param-1:0] q;
wire [param-1:0] in;
wire [param-1:0] out;
// a generate block, should also fold.
genvar i;
generate
for (i=0; i<param; i=i+1)
begin: test
buf(out[i], in[i]);
end
endgenerate
reg signed [param-1:0] q;
always @(posedge clock or negedge reset)
begin: register // named block.
if (!reset || clear) begin // unnamed block.
q <= 0;
end else begin
if (enable) begin q <= $signed(d); end // block on one line, shouldn't fold.
end
end
endmodule
// a Verilog state machine.
module test2 (clock, reset, clear, enable, start, ready);
input clock;
input reset;
input clear;
input enable;
input start;
output ready;
parameter [1:0] idle = 2'b00; // binary number.
parameter [1:0] run = 2'b01;
parameter [1:0] same1 = 2'b10;
parameter [1:0] same2 = 2'b11;
reg [1:0] state;
wire state2;
wire state3;
wire state4;
always @(posedge clock or negedge reset)
begin
if (!reset)
state <= idle;
else
if (enable) begin
case (state)
idle: begin
if (start)
state <= run;
end
run: begin
state <= idle;
end
same1, same2: begin
state <= idle;
end
endcase
end
end
// some instantiations.
test test_positional(clock, reset, clear, enable, state, state2);
test test_named(.clock(clock), .reset(reset), .clear(clear), .enable(enable), .d(state), .q(state3));
// a conditional operator.
assign state4 = state==idle? state2 : state3;
endmodule
// bad syntax
modules bad (clock, reset, clear, enable);
inout clock;
inpu reset;
outputs enable;
endmod
|