8000 [#74021] add t_trace_saif_sc test · verilator/verilator@3c148bc · GitHub
[go: up one dir, main page]

Skip to content

Commit 3c148bc

Browse files
committed
[#74021] add t_trace_saif_sc test
1 parent 4027cde commit 3c148bc

File tree

3 files changed

+203
-0
lines changed

3 files changed

+203
-0
lines changed

test_regress/t/t_trace_saif_sc.out

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
(SAIFILE
2+
(SAIFVERSION "2.0")
3+
(DIRECTION "backward")
4+
(DESIGN "t")
5+
(DIVIDER / )
6+
(TIMESCALE 1ps)
7+
(DURATION 1004)
8+
(INSTANCE top
9+
(INSTANCE t
10+
(NET
11+
(clk (T0 505) (T1 499) (TX 0) (TC 199))
12+
(cyc\[0\] (T0 504) (T1 500) (TX 0) (TC 100))
13+
(cyc\[1\] (T0 504) (T1 500) (TX 0) (TC 50))
14+
(cyc\[2\] (T0 520) (T1 484) (TX 0) (TC 25))
15+
(cyc\[3\] (T0 524) (T1 480) (TX 0) (TC 12))
16+
(cyc\[4\] (T0 524) (T 10000 1 480) (TX 0) (TC 6))
17+
(cyc\[5\] (T0 640) (T1 364) (TX 0) (TC 3))
18+
(cyc\[6\] (T0 640) (T1 364) (TX 0) (TC 1))
19+
(rstn (T0 110) (T1 894) (TX 0) (TC 1))
20+
(fst_parameter\[0\] (T0 0) (T1 1004) (TX 0) (TC 1))
21+
(fst_parameter\[1\] (T0 0) (T1 1004) (TX 0) (TC 1))
22+
(fst_parameter\[3\] (T0 0) (T1 1004) (TX 0) (TC 1))
23+
(fst_parameter\[4\] (T0 0) (T1 1004) (TX 0) (TC 1))
24+
(fst_parameter\[5\] (T0 0) (T1 1004) (TX 0) (TC 1))
25+
(fst_parameter\[6\] (T0 0) (T1 1004) (TX 0) (TC 1))
26+
(fst_lparam\[3\] (T0 0) (T1 1004) (TX 0) (TC 1))
27+
(fst_lparam\[6\] (T0 0) (T1 1004) (TX 0) (TC 1))
28+
(fst_lparam\[7\] (T0 0) (T1 1004) (TX 0) (TC 1))
29+
(fst_lparam\[8\] (T0 0) (T1 1004) (TX 0) (TC 1))
30+
(fst_supply1 (T0 0) (T1 1004) (TX 0) (TC 1))
31+
(fst_tri1 (T0 0) (T1 1004) (TX 0) (TC 1))
32+
(state\[0\] (T0 414) (T1 590) (TX 0) (TC 46))
33+
(state\[1\] (T0 540) (T1 464) (TX 0) (TC 45))
34+
(state\[2\] (T0 534) (T1 470) (TX 0) (TC 46))
35+
(state\[3\] (T0 544) (T1 460) (TX 0) (TC 44))
36+
(state\[4\] (T0 540) (T1 464) (TX 0) (TC 45))
37+
)
38+
(INSTANCE test
39+
(NET
40+
(clk (T0 505) (T1 499) (TX 0) (TC 199))
41+
(rstn (T0 110) (T1 894) (TX 0) (TC 1))
42+
(state\[0\] (T0 414) (T1 590) (TX 0) (TC 46))
43+
(state\[1\] (T0 540) (T1 464) (TX 0) (TC 45))
44+
(state\[2\] (T0 534) (T1 470) (TX 0) (TC 46))
45+
(state\[3\] (T0 544) (T1 460) (TX 0) (TC 44))
46+
(state\[4\] (T0 540) (T1 464) (TX 0) (TC 45))
47+
(state_w\[0\] (T0 534) (T1 470) (TX 0) (TC 46))
48+
(state_w\[1\] (T0 534) (T1 470) (TX 0) (TC 46))
49+
(state_w\[2\] (T0 434) (T1 570) (TX 0) (TC 46))
50+
(state_w\[3\] (T0 530) (T1 474) (TX 0) (TC 47))
51+
(state_w\[4\] (T0 424) (T1 580) (TX 0) (TC 48))
52+
(state_array[0]\[0\] (T0 414) (T1 590) (TX 0) (TC 46))
53+
(state_array[0]\[1\] (T0 540) (T1 464) (TX 0) (TC 45))
54+
(state_array[0]\[2\] (T0 534) (T1 470) (TX 0) (TC 46))
55+
(state_array[0]\[3\] (T0 544) (T1 460) (TX 0) (TC 44))
56+
(state_array[0]\[4\] (T0 540) (T1 464) (TX 0) (TC 45))
57+
(state_array[1]\[0\] (T0 420) (T1 584) (TX 0) (TC 47))
58+
(state_array[1]\[1\] (T0 534) (T1 470) (TX 0) (TC 46))
59+
(state_array[1]\[2\] (T0 534) (T1 470) (TX 0) (TC 46))
60+
(state_array[1]\[3\] (T0 540) (T1 464) (TX 0) (TC 45))
61+
(state_array[1]\[4\] (T0 534) (T1 470) (TX 0) (TC 46))
62+
(state_array[2]\[0\] (T0 424) (T1 580) (TX 0) (TC 48))
63+
(state_array[2]\[1\] (T0 534) (T1 470) (TX 0) (TC 46))
64+
(state_array[2]\[2\] (T0 534) (T1 470) (TX 0) (TC 46))
65+
(state_array[2]\[3\] (T0 534) (T1 470) (TX 0) (TC 46))
66+
(state_array[2]\[4\] (T0 530) (T1 474) (TX 0) (TC 47))
67+
)
68+
(INSTANCE unnamedblk1
69+
(NET
70+
(i\[0\] (T0 10) (T1 994) (TX 0) (TC 1))
71+
(i\[1\] (T0 10) (T1 994) (TX 0) (TC 1))
72+
)
73+
)
74+
(INSTANCE unnamedblk2
75+
(NET
76+
(i\[1\] (T0 120) (T1 884) (TX 0) (TC 1))
77+
)
78+
)
79+
)
80+
)
81+
)
82+
)

test_regress/t/t_trace_saif_sc.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/usr/bin/env python3
2+
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
3+
#
4+
# Copyright 2024 by Wilson Snyder. This program is free software; you
5+
# can redistribute it and/or modify it under the terms of either the GNU
6+
# Lesser General Public License Version 3 or the Perl Artistic License
7+
# Version 2.0.
8+
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
9+
10+
import vltest_bootstrap
11+
12+
test.scenarios('vlt_all')
13+
14+
if not test.have_sc:
15+
test.skip("No SystemC installed")
16+
17+
test.compile(verilator_flags2=["--trace-saif --sc"])
18+
19+
test.execute()
20+
21+
test.fst_identical(test.trace_filename, test.golden_filename)
22+
23+
test.passes()

test_regress/t/t_trace_saif_sc.v

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
// DESCRIPTION: Verilator: Verilog Test module
2+
//
3+
// This file ONLY is placed into the Public Domain, for any use,
4+
// Author: Yu-Sheng Lin johnjohnlys@media.ee.ntu.edu.tw
5+
// SPDX-License-Identifier: CC0-1.0
6+
7+
module t (/*AUTOARG*/
8+
// Inputs
9+
clk
10+
);
11+
12+
input clk;
13+
14+
int cyc;
15+
reg rstn;
16+
17+
parameter real fst_gparam_real = 1.23;
18+
localparam real fst_lparam_real = 4.56;
19+
real fst_real = 1.23;
20+
integer fst_integer;
21+
bit fst_bit;
22+
logic fst_logic;
23+
int fst_int;
24+
shortint fst_shortint;
25+
longint fst_longint;
26+
byte fst_byte;
27+
28+
parameter fst_parameter = 123;
29+
localparam fst_lparam = 456;
30+
supply0 fst_supply0;
31+
supply1 fst_supply1;
32+
tri0 fst_tri0;
33+
tri1 fst_tri1;
34+
tri fst_tri;
35+
wire fst_wire;
36+
37+
logic [4:0] state;
38+
39+
Test test (/*AUTOINST*/
40+
// Outputs
41+
.state (state[4:0]),
42+
// Inputs
43+
.clk (clk),
44+
.rstn (rstn));
45+
46+
// Test loop
47+
always @ (posedge clk) begin
48+
cyc <= cyc + 1;
49+
if (cyc==0) begin
50+
// Setup
51+
rstn <= ~'1;
52+
end
53+
else if (cyc<10) begin
54+
rstn <= ~'1;
55+
end
56+
else if (cyc<90) begin
57+
rstn <= ~'0;
58+
end
59+
else if (cyc==99) begin
60+
$write("*-* All Finished *-*\n");
61+
$finish;
62+
end
63+
end
64+
65+
endmodule
66+
67+
68+
module Test (
69+
input clk,
70+
input rstn,
71+
output logic [4:0] state
72+
);
73+
74+
logic [4:0] state_w;
75+
logic [4:0] state_array [3];
76+
assign state = state_array[0];
77+
78+
always_comb begin
79+
state_w[4] = state_array[2][0];
80+
state_w[3] = state_array[2][4];
81+
state_w[2] = state_array[2][3] ^ state_array[2][0];
82+
state_w[1] = state_array[2][2];
83+
state_w[0] = state_array[2][1];
84+
end
85+
86+
always_ff @(posedge clk or negedge rstn) begin
87+
if (!rstn) begin
88+
for (int i = 0; i < 3; i++)
89+
state_array[i] <= 'b1;
90+
end
91+
else begin
92+
for (int i = 0; i < 2; i++)
93+
state_array[i] <= state_array[i+1];
94+
state_array[2] <= state_w;
95+
end
96+
end
97+
98+
endmodule

0 commit comments

Comments
 (0)
0