File: t_psl_basic.v

package info (click to toggle)
verilator 3.833-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 10,196 kB
  • sloc: cpp: 49,566; perl: 7,111; yacc: 2,221; lex: 1,702; makefile: 651; sh: 175
file content (54 lines) | stat: -rw-r--r-- 1,400 bytes parent folder | download | duplicates (3)
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
// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2005 by Wilson Snyder.

module t (/*AUTOARG*/
   // Inputs
   clk
   );

   input clk;

   reg 	 toggle;

   integer cyc; initial cyc=1;
   wire [7:0] cyc_copy = cyc[7:0];

   // psl cover  {cyc==3 || cyc==4} @ (posedge clk);
   // psl assert {cyc<100} @ (posedge clk) report "AssertionFalse1";
`ifdef FAILING_ASSERTIONS
   // psl assert {toggle} @ (posedge clk) report "AssertionShouldFail";
`endif

   // psl default clock = negedge clk;
//FIX   // psl assert always {cyc<99};
   // psl cover {cyc==9} report "DefaultClock,expect=1";

   // psl assert {(cyc==5)->toggle};
   // psl cover  {(cyc==5)->toggle} report "ToggleLogIf,expect=1";
`ifdef NOT_SUP
   // psl assert {toggle<->cyc[0]};
   // psl cover  {toggle<->cyc[0]} report "CycsLogIff,expect=10";
`endif
   
   // Test {{..}} == Sequence of sequence...
   // psl assert {{true}};

   always @ (negedge clk) begin
      //if (!(cyc==5) || toggle) $write("%d: %s\n", cyc, "ToggleLogIf,expect=1");
      //if (toggle&&cyc[0] || ~toggle&&~cyc[0]) $write("%d: %s\n", cyc, "CycsLogIff,expect=10");
   end

   always @ (posedge clk) begin
      if (cyc!=0) begin
	 cyc <= cyc + 1;
	 toggle <= !cyc[0];
	 if (cyc==10) begin
	    $write("*-* All Finished *-*\n");
	    $finish;
	 end
      end
   end

endmodule