File: t_specparam.v

package info (click to toggle)
verilator 5.038-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 162,552 kB
  • sloc: cpp: 139,204; python: 20,931; ansic: 10,222; yacc: 6,000; lex: 1,925; makefile: 1,260; sh: 494; perl: 282; fortran: 22
file content (44 lines) | stat: -rw-r--r-- 1,289 bytes parent folder | download
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
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2025 by Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0

module t;
  specify
    specparam tdevice_PU = 3e8;
    specparam Tdelay11 = 1.1;
    // verilator lint_off MINTYPMAXDLY
    specparam Tmintypmax = 1.0:1.1:1.2;
    specparam PATHPULSE$a$b = (3.0:3.1:3.2, 4.0:4.1:4.2);
    specparam randomize = 1;  // Special parser corner-case
  endspecify

  // Support in other simulators is limited for module specparams
  specparam Tmod34 = 3.4, Tmod35 = 3.5;  // IEEE 6.20.5 allowed in body
  // Support in other simulators is limited for ranged specparams
  specparam [5:2] Tranged = 4'b1011;

  localparam real PATHPULSE$normal$var = 6.78;

  reg PoweredUp;
  wire DelayIn, DelayOut;

  assign #tdevice_PU DelayOut = DelayIn;

  initial begin
    PoweredUp = 1'b0;
    #tdevice_PU PoweredUp = 1'b1;
    if (Tdelay11 != 1.1) $stop;
`ifdef VERILATOR
    if (Tmintypmax != 1.1) $stop;
    if (PATHPULSE$a$b != 3.1) $stop;
`endif
    if (Tranged != 4'b1011) $stop;
    if (Tmod34 != 3.4) $stop;
    if (Tmod35 != 3.5) $stop;
    if (PATHPULSE$normal$var != 6.78) $stop;
    $write("*-* All Finished *-*\n");
    $finish;
  end
endmodule