SanketAI commited on
Commit
5fb6faa
·
verified ·
1 Parent(s): 6f3874b

Upload folder using huggingface_hub

Browse files
Files changed (31) hide show
  1. .gitattributes +3 -0
  2. MANIFEST.in +1 -0
  3. dist/openenv_chipforge-0.1.0-py3-none-any.whl +3 -0
  4. dist/openenv_chipforge-0.1.0.tar.gz +3 -0
  5. openenv_chipforge.egg-info/SOURCES.txt +101 -1
  6. server/tasks/hard/01_priority_encoder_latch/design.v +207 -0
  7. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign +3 -0
  8. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.cpp +94 -0
  9. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.h +87 -0
  10. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.mk +66 -0
  11. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.a +0 -0
  12. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.cpp +8 -0
  13. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.d +11 -0
  14. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.o +0 -0
  15. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__Syms.h +38 -0
  16. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__Syms__Slow.cpp +28 -0
  17. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root.h +51 -0
  18. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__0.cpp +361 -0
  19. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__0__Slow.cpp +172 -0
  20. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__Slow.cpp +24 -0
  21. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__main.cpp +39 -0
  22. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__pch.h +27 -0
  23. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ver.d +1 -0
  24. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__verFiles.dat +21 -0
  25. server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign_classes.mk +53 -0
  26. server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated.d +12 -0
  27. server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated.o +3 -0
  28. server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_threads.d +8 -0
  29. server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_threads.o +0 -0
  30. server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_timing.d +8 -0
  31. server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_timing.o +0 -0
.gitattributes CHANGED
@@ -38,3 +38,6 @@ obj_dir/verilated.o filter=lfs diff=lfs merge=lfs -text
38
  obj_dir/verilated_vcd_c.o filter=lfs diff=lfs merge=lfs -text
39
  server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign filter=lfs diff=lfs merge=lfs -text
40
  server/tasks/easy/01_inverter_semicolon/obj_dir/verilated.o filter=lfs diff=lfs merge=lfs -text
 
 
 
 
38
  obj_dir/verilated_vcd_c.o filter=lfs diff=lfs merge=lfs -text
39
  server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign filter=lfs diff=lfs merge=lfs -text
40
  server/tasks/easy/01_inverter_semicolon/obj_dir/verilated.o filter=lfs diff=lfs merge=lfs -text
41
+ dist/openenv_chipforge-0.1.0-py3-none-any.whl filter=lfs diff=lfs merge=lfs -text
42
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign filter=lfs diff=lfs merge=lfs -text
43
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated.o filter=lfs diff=lfs merge=lfs -text
MANIFEST.in ADDED
@@ -0,0 +1 @@
 
 
1
+ recursive-include server/tasks *
dist/openenv_chipforge-0.1.0-py3-none-any.whl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dfad2246acd7f6f7234746ac3ca9995cb8a1350f157d5e951ed697478fb8c58a
3
+ size 491069
dist/openenv_chipforge-0.1.0.tar.gz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f92238bfb2f8edd6bafb3bdb389455402760d7ff2e994a07267daa3e4e4c0f1
3
+ size 456458
openenv_chipforge.egg-info/SOURCES.txt CHANGED
@@ -1,3 +1,4 @@
 
1
  README.md
2
  __init__.py
3
  client.py
@@ -16,4 +17,103 @@ openenv_chipforge.egg-info/requires.txt
16
  openenv_chipforge.egg-info/top_level.txt
17
  server/__init__.py
18
  server/app.py
19
- server/chipforge_environment.py
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MANIFEST.in
2
  README.md
3
  __init__.py
4
  client.py
 
17
  openenv_chipforge.egg-info/top_level.txt
18
  server/__init__.py
19
  server/app.py
20
+ server/chipforge_environment.py
21
+ server/tasks/easy/01_inverter_semicolon/design.v
22
+ server/tasks/easy/01_inverter_semicolon/design_buggy.v
23
+ server/tasks/easy/01_inverter_semicolon/design_golden.v
24
+ server/tasks/easy/01_inverter_semicolon/task.json
25
+ server/tasks/easy/01_inverter_semicolon/testbench.v
26
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign
27
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign.cpp
28
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign.h
29
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign.mk
30
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__ALL.a
31
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__ALL.cpp
32
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__ALL.d
33
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__ALL.o
34
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__Syms.h
35
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__Syms__Slow.cpp
36
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign___024root.h
37
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign___024root__0.cpp
38
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign___024root__0__Slow.cpp
39
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign___024root__Slow.cpp
40
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__main.cpp
41
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__pch.h
42
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__ver.d
43
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign__verFiles.dat
44
+ server/tasks/easy/01_inverter_semicolon/obj_dir/Vdesign_classes.mk
45
+ server/tasks/easy/01_inverter_semicolon/obj_dir/verilated.d
46
+ server/tasks/easy/01_inverter_semicolon/obj_dir/verilated.o
47
+ server/tasks/easy/01_inverter_semicolon/obj_dir/verilated_threads.d
48
+ server/tasks/easy/01_inverter_semicolon/obj_dir/verilated_threads.o
49
+ server/tasks/easy/01_inverter_semicolon/obj_dir/verilated_timing.d
50
+ server/tasks/easy/01_inverter_semicolon/obj_dir/verilated_timing.o
51
+ server/tasks/easy/02_and_missing_paren/design_buggy.v
52
+ server/tasks/easy/02_and_missing_paren/design_golden.v
53
+ server/tasks/easy/02_and_missing_paren/task.json
54
+ server/tasks/easy/02_and_missing_paren/testbench.v
55
+ server/tasks/easy/03_write_testbench_from_prompt/design_buggy.v
56
+ server/tasks/easy/03_write_testbench_from_prompt/task.json
57
+ server/tasks/hard/01_priority_encoder_latch/design.v
58
+ server/tasks/hard/01_priority_encoder_latch/design_buggy.v
59
+ server/tasks/hard/01_priority_encoder_latch/design_golden.v
60
+ server/tasks/hard/01_priority_encoder_latch/task.json
61
+ server/tasks/hard/01_priority_encoder_latch/testbench.v
62
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign
63
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.cpp
64
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.h
65
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.mk
66
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.a
67
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.cpp
68
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.d
69
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.o
70
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__Syms.h
71
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__Syms__Slow.cpp
72
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root.h
73
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__0.cpp
74
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__0__Slow.cpp
75
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__Slow.cpp
76
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__main.cpp
77
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__pch.h
78
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ver.d
79
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__verFiles.dat
80
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign_classes.mk
81
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated.d
82
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated.o
83
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_threads.d
84
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_threads.o
85
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_timing.d
86
+ server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_timing.o
87
+ server/tasks/hard/02_alu_incomplete_case/design_buggy.v
88
+ server/tasks/hard/02_alu_incomplete_case/design_golden.v
89
+ server/tasks/hard/02_alu_incomplete_case/task.json
90
+ server/tasks/hard/02_alu_incomplete_case/testbench.v
91
+ server/tasks/medium/01_half_subtractor_logic/design_buggy.v
92
+ server/tasks/medium/01_half_subtractor_logic/design_golden.v
93
+ server/tasks/medium/01_half_subtractor_logic/task.json
94
+ server/tasks/medium/01_half_subtractor_logic/testbench.v
95
+ server/tasks/medium/02_decoder_logic/design_buggy.v
96
+ server/tasks/medium/02_decoder_logic/design_golden.v
97
+ server/tasks/medium/02_decoder_logic/task.json
98
+ server/tasks/medium/02_decoder_logic/testbench.v
99
+ server/tasks/medium/03_write_design_and_testbench_from_prompt/task.json
100
+ server/tasks/task_easy_missing_semicolon/design_buggy.v
101
+ server/tasks/task_easy_missing_semicolon/design_golden.v
102
+ server/tasks/task_easy_missing_semicolon/task.json
103
+ server/tasks/task_easy_missing_semicolon/testbench.v
104
+ server/tasks/task_easy_syntax/design_buggy.v
105
+ server/tasks/task_easy_syntax/design_golden.v
106
+ server/tasks/task_easy_syntax/task.json
107
+ server/tasks/task_easy_syntax/testbench.v
108
+ server/tasks/task_hard_latch_inference/design_buggy.v
109
+ server/tasks/task_hard_latch_inference/design_golden.v
110
+ server/tasks/task_hard_latch_inference/task.json
111
+ server/tasks/task_hard_latch_inference/testbench.v
112
+ server/tasks/task_medium_logic_bug/design_buggy.v
113
+ server/tasks/task_medium_logic_bug/design_golden.v
114
+ server/tasks/task_medium_logic_bug/task.json
115
+ server/tasks/task_medium_logic_bug/testbench.v
116
+ server/tasks/task_medium_wrong_operator/design_buggy.v
117
+ server/tasks/task_medium_wrong_operator/design_golden.v
118
+ server/tasks/task_medium_wrong_operator/task.json
119
+ server/tasks/task_medium_wrong_operator/testbench.v
server/tasks/hard/01_priority_encoder_latch/design.v ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module priority_encoder3 (
2
+ input req2,
3
+ input req1,
4
+ input req0,
5
+ output reg valid,
6
+ output reg [1:0] code
7
+ );
8
+
9
+ wire pad00;
10
+ wire pad01;
11
+ wire pad02;
12
+ wire pad03;
13
+ wire pad04;
14
+ wire pad05;
15
+ wire pad06;
16
+ wire pad07;
17
+ wire pad08;
18
+ wire pad09;
19
+ wire pad10;
20
+ wire pad11;
21
+ wire pad12;
22
+ wire pad13;
23
+ wire pad14;
24
+ wire pad15;
25
+ wire pad16;
26
+ wire pad17;
27
+ wire pad18;
28
+ wire pad19;
29
+ wire pad20;
30
+ wire pad21;
31
+ wire pad22;
32
+ wire pad23;
33
+ wire pad24;
34
+ wire pad25;
35
+ wire pad26;
36
+ wire pad27;
37
+ wire pad28;
38
+ wire pad29;
39
+ wire pad30;
40
+ wire pad31;
41
+ wire pad32;
42
+ wire pad33;
43
+ wire pad34;
44
+ wire pad35;
45
+ wire pad36;
46
+ wire pad37;
47
+ wire pad38;
48
+ wire pad39;
49
+ wire pad40;
50
+ wire pad41;
51
+ wire pad42;
52
+ wire pad43;
53
+ wire pad44;
54
+ wire pad45;
55
+ wire pad46;
56
+ wire pad47;
57
+ wire pad48;
58
+ wire pad49;
59
+ wire pad50;
60
+ wire pad51;
61
+ wire pad52;
62
+ wire pad53;
63
+ wire pad54;
64
+ wire pad55;
65
+ wire pad56;
66
+ wire pad57;
67
+ wire pad58;
68
+ wire pad59;
69
+ wire pad60;
70
+ wire pad61;
71
+ wire pad62;
72
+ wire pad63;
73
+ wire pad64;
74
+ wire pad65;
75
+ wire pad66;
76
+ wire pad67;
77
+ wire pad68;
78
+ wire pad69;
79
+ wire pad70;
80
+ wire pad71;
81
+ wire pad72;
82
+ wire pad73;
83
+ wire pad74;
84
+ wire pad75;
85
+ wire pad76;
86
+ wire pad77;
87
+ wire pad78;
88
+ wire pad79;
89
+ wire pad80;
90
+ wire pad81;
91
+ wire pad82;
92
+ wire pad83;
93
+ wire pad84;
94
+ wire pad85;
95
+ wire pad86;
96
+ wire pad87;
97
+ wire pad88;
98
+ wire pad89;
99
+
100
+ assign pad00 = req0;
101
+ assign pad01 = pad00;
102
+ assign pad02 = pad01;
103
+ assign pad03 = pad02;
104
+ assign pad04 = pad03;
105
+ assign pad05 = pad04;
106
+ assign pad06 = pad05;
107
+ assign pad07 = pad06;
108
+ assign pad08 = pad07;
109
+ assign pad09 = pad08;
110
+ assign pad10 = pad09;
111
+ assign pad11 = pad10;
112
+ assign pad12 = pad11;
113
+ assign pad13 = pad12;
114
+ assign pad14 = pad13;
115
+ assign pad15 = pad14;
116
+ assign pad16 = pad15;
117
+ assign pad17 = pad16;
118
+ assign pad18 = pad17;
119
+ assign pad19 = pad18;
120
+ assign pad20 = pad19;
121
+ assign pad21 = pad20;
122
+ assign pad22 = pad21;
123
+ assign pad23 = pad22;
124
+ assign pad24 = pad23;
125
+ assign pad25 = pad24;
126
+ assign pad26 = pad25;
127
+ assign pad27 = pad26;
128
+ assign pad28 = pad27;
129
+ assign pad29 = pad28;
130
+ assign pad30 = pad29;
131
+ assign pad31 = pad30;
132
+ assign pad32 = pad31;
133
+ assign pad33 = pad32;
134
+ assign pad34 = pad33;
135
+ assign pad35 = pad34;
136
+ assign pad36 = pad35;
137
+ assign pad37 = pad36;
138
+ assign pad38 = pad37;
139
+ assign pad39 = pad38;
140
+ assign pad40 = pad39;
141
+ assign pad41 = pad40;
142
+ assign pad42 = pad41;
143
+ assign pad43 = pad42;
144
+ assign pad44 = pad43;
145
+ assign pad45 = pad44;
146
+ assign pad46 = pad45;
147
+ assign pad47 = pad46;
148
+ assign pad48 = pad47;
149
+ assign pad49 = pad48;
150
+ assign pad50 = pad49;
151
+ assign pad51 = pad50;
152
+ assign pad52 = pad51;
153
+ assign pad53 = pad52;
154
+ assign pad54 = pad53;
155
+ assign pad55 = pad54;
156
+ assign pad56 = pad55;
157
+ assign pad57 = pad56;
158
+ assign pad58 = pad57;
159
+ assign pad59 = pad58;
160
+ assign pad60 = pad59;
161
+ assign pad61 = pad60;
162
+ assign pad62 = pad61;
163
+ assign pad63 = pad62;
164
+ assign pad64 = pad63;
165
+ assign pad65 = pad64;
166
+ assign pad66 = pad65;
167
+ assign pad67 = pad66;
168
+ assign pad68 = pad67;
169
+ assign pad69 = pad68;
170
+ assign pad70 = pad69;
171
+ assign pad71 = pad70;
172
+ assign pad72 = pad71;
173
+ assign pad73 = pad72;
174
+ assign pad74 = pad73;
175
+ assign pad75 = pad74;
176
+ assign pad76 = pad75;
177
+ assign pad77 = pad76;
178
+ assign pad78 = pad77;
179
+ assign pad79 = pad78;
180
+ assign pad80 = pad79;
181
+ assign pad81 = pad80;
182
+ assign pad82 = pad81;
183
+ assign pad83 = pad82;
184
+ assign pad84 = pad83;
185
+ assign pad85 = pad84;
186
+ assign pad86 = pad85;
187
+ assign pad87 = pad86;
188
+ assign pad88 = pad87;
189
+ assign pad89 = pad88;
190
+
191
+ always @(*) begin
192
+ valid = 1'b0;
193
+ code = 2'b00;
194
+
195
+ if (req2) begin
196
+ valid = 1'b1;
197
+ code = 2'b10;
198
+ end else if (req1) begin
199
+ valid = 1'b1;
200
+ code = 2'b01;
201
+ end else if (req0) begin
202
+ valid = 1'b1;
203
+ code = 2'b00;
204
+ end
205
+ end
206
+
207
+ endmodule
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cf420ed0f34211a52e32fbf542bbd288d958af45b713a18bbef76b751b085960
3
+ size 274672
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.cpp ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Model implementation (design independent parts)
3
+
4
+ #include "Vdesign__pch.h"
5
+
6
+ //============================================================
7
+ // Constructors
8
+
9
+ Vdesign::Vdesign(VerilatedContext* _vcontextp__, const char* _vcname__)
10
+ : VerilatedModel{*_vcontextp__}
11
+ , vlSymsp{new Vdesign__Syms(contextp(), _vcname__, this)}
12
+ , rootp{&(vlSymsp->TOP)}
13
+ {
14
+ // Register model with the context
15
+ contextp()->addModel(this);
16
+ }
17
+
18
+ Vdesign::Vdesign(const char* _vcname__)
19
+ : Vdesign(Verilated::threadContextp(), _vcname__)
20
+ {
21
+ }
22
+
23
+ //============================================================
24
+ // Destructor
25
+
26
+ Vdesign::~Vdesign() {
27
+ delete vlSymsp;
28
+ }
29
+
30
+ //============================================================
31
+ // Evaluation function
32
+
33
+ #ifdef VL_DEBUG
34
+ void Vdesign___024root___eval_debug_assertions(Vdesign___024root* vlSelf);
35
+ #endif // VL_DEBUG
36
+ void Vdesign___024root___eval_static(Vdesign___024root* vlSelf);
37
+ void Vdesign___024root___eval_initial(Vdesign___024root* vlSelf);
38
+ void Vdesign___024root___eval_settle(Vdesign___024root* vlSelf);
39
+ void Vdesign___024root___eval(Vdesign___024root* vlSelf);
40
+
41
+ void Vdesign::eval_step() {
42
+ VL_DEBUG_IF(VL_DBG_MSGF("+++++TOP Evaluate Vdesign::eval_step\n"); );
43
+ #ifdef VL_DEBUG
44
+ // Debug assertions
45
+ Vdesign___024root___eval_debug_assertions(&(vlSymsp->TOP));
46
+ #endif // VL_DEBUG
47
+ vlSymsp->__Vm_deleter.deleteAll();
48
+ if (VL_UNLIKELY(!vlSymsp->__Vm_didInit)) {
49
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Initial\n"););
50
+ Vdesign___024root___eval_static(&(vlSymsp->TOP));
51
+ Vdesign___024root___eval_initial(&(vlSymsp->TOP));
52
+ Vdesign___024root___eval_settle(&(vlSymsp->TOP));
53
+ vlSymsp->__Vm_didInit = true;
54
+ }
55
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Eval\n"););
56
+ Vdesign___024root___eval(&(vlSymsp->TOP));
57
+ // Evaluate cleanup
58
+ Verilated::endOfEval(vlSymsp->__Vm_evalMsgQp);
59
+ }
60
+
61
+ //============================================================
62
+ // Events and timing
63
+ bool Vdesign::eventsPending() { return !vlSymsp->TOP.__VdlySched.empty() && !contextp()->gotFinish(); }
64
+
65
+ uint64_t Vdesign::nextTimeSlot() { return vlSymsp->TOP.__VdlySched.nextTimeSlot(); }
66
+
67
+ //============================================================
68
+ // Utilities
69
+
70
+ const char* Vdesign::name() const {
71
+ return vlSymsp->name();
72
+ }
73
+
74
+ //============================================================
75
+ // Invoke final blocks
76
+
77
+ void Vdesign___024root___eval_final(Vdesign___024root* vlSelf);
78
+
79
+ VL_ATTR_COLD void Vdesign::final() {
80
+ contextp()->executingFinal(true);
81
+ Vdesign___024root___eval_final(&(vlSymsp->TOP));
82
+ contextp()->executingFinal(false);
83
+ }
84
+
85
+ //============================================================
86
+ // Implementations of abstract methods from VerilatedModel
87
+
88
+ const char* Vdesign::hierName() const { return vlSymsp->name(); }
89
+ const char* Vdesign::modelName() const { return "Vdesign"; }
90
+ unsigned Vdesign::threads() const { return 1; }
91
+ void Vdesign::prepareClone() const { contextp()->prepareClone(); }
92
+ void Vdesign::atClone() const {
93
+ contextp()->threadPoolpOnClone();
94
+ }
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.h ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Primary model header
3
+ //
4
+ // This header should be included by all source files instantiating the design.
5
+ // The class here is then constructed to instantiate the design.
6
+ // See the Verilator manual for examples.
7
+
8
+ #ifndef VERILATED_VDESIGN_H_
9
+ #define VERILATED_VDESIGN_H_ // guard
10
+
11
+ #include "verilated.h"
12
+
13
+ class Vdesign__Syms;
14
+ class Vdesign___024root;
15
+
16
+ // This class is the main interface to the Verilated model
17
+ class alignas(VL_CACHE_LINE_BYTES) Vdesign VL_NOT_FINAL : public VerilatedModel {
18
+ private:
19
+ // Symbol table holding complete model state (owned by this class)
20
+ Vdesign__Syms* const vlSymsp;
21
+
22
+ public:
23
+
24
+ // CONSTEXPR CAPABILITIES
25
+ // Verilated with --trace?
26
+ static constexpr bool traceCapable = false;
27
+
28
+ // PORTS
29
+ // The application code writes and reads these signals to
30
+ // propagate new values into/out from the Verilated model.
31
+
32
+ // CELLS
33
+ // Public to allow access to /* verilator public */ items.
34
+ // Otherwise the application code can consider these internals.
35
+
36
+ // Root instance pointer to allow access to model internals,
37
+ // including inlined /* verilator public_flat_* */ items.
38
+ Vdesign___024root* const rootp;
39
+
40
+ // CONSTRUCTORS
41
+ /// Construct the model; called by application code
42
+ /// If contextp is null, then the model will use the default global context
43
+ /// If name is "", then makes a wrapper with a
44
+ /// single model invisible with respect to DPI scope names.
45
+ explicit Vdesign(VerilatedContext* contextp, const char* name = "TOP");
46
+ explicit Vdesign(const char* name = "TOP");
47
+ /// Destroy the model; called (often implicitly) by application code
48
+ virtual ~Vdesign();
49
+ private:
50
+ VL_UNCOPYABLE(Vdesign); ///< Copying not allowed
51
+
52
+ public:
53
+ // API METHODS
54
+ /// Evaluate the model. Application must call when inputs change.
55
+ void eval() { eval_step(); }
56
+ /// Evaluate when calling multiple units/models per time step.
57
+ void eval_step();
58
+ /// Evaluate at end of a timestep for tracing, when using eval_step().
59
+ /// Application must call after all eval() and before time changes.
60
+ void eval_end_step() {}
61
+ /// Simulation complete, run final blocks. Application must call on completion.
62
+ void final();
63
+ /// Are there scheduled events to handle?
64
+ bool eventsPending();
65
+ /// Returns time at next time slot. Aborts if !eventsPending()
66
+ uint64_t nextTimeSlot();
67
+ /// Trace signals in the model; called by application code
68
+ void trace(VerilatedTraceBaseC* tfp, int levels, int options = 0) { contextp()->trace(tfp, levels, options); }
69
+ /// Retrieve name of this model instance (as passed to constructor).
70
+ const char* name() const;
71
+
72
+ // Abstract methods from VerilatedModel
73
+ const char* hierName() const override final;
74
+ const char* modelName() const override final;
75
+ unsigned threads() const override final;
76
+ /// Prepare for cloning the model at the process level (e.g. fork in Linux)
77
+ /// Release necessary resources. Called before cloning.
78
+ void prepareClone() const;
79
+ /// Re-init after cloning the model at the process level (e.g. fork in Linux)
80
+ /// Re-allocate necessary resources. Called after cloning.
81
+ void atClone() const;
82
+ private:
83
+ // Internal functions - trace registration
84
+ void traceBaseModel(VerilatedTraceBaseC* tfp, int levels, int options);
85
+ };
86
+
87
+ #endif // guard
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign.mk ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Verilated -*- Makefile -*-
2
+ # DESCRIPTION: Verilator output: Makefile for building Verilated archive or executable
3
+ #
4
+ # Execute this makefile from the object directory:
5
+ # make -f Vdesign.mk
6
+
7
+ default: Vdesign
8
+
9
+ ### Constants...
10
+ # Perl executable (from $PERL, defaults to 'perl' if not set)
11
+ PERL = perl
12
+ # Python3 executable (from $PYTHON3, defaults to 'python3' if not set)
13
+ PYTHON3 = python3
14
+ # Path to Verilator kit (from $VERILATOR_ROOT)
15
+ VERILATOR_ROOT = /opt/oss-cad-suite/share/verilator
16
+ # SystemC include directory with systemc.h (from $SYSTEMC_INCLUDE)
17
+ SYSTEMC_INCLUDE ?=
18
+ # SystemC library directory with libsystemc.a (from $SYSTEMC_LIBDIR)
19
+ SYSTEMC_LIBDIR ?=
20
+
21
+ ### Switches...
22
+ # C++ code coverage 0/1 (from --prof-c)
23
+ VM_PROFC = 0
24
+ # SystemC output mode? 0/1 (from --sc)
25
+ VM_SC = 0
26
+ # Legacy or SystemC output mode? 0/1 (from --sc)
27
+ VM_SP_OR_SC = $(VM_SC)
28
+ # Deprecated
29
+ VM_PCLI = 1
30
+ # Deprecated: SystemC architecture to find link library path (from $SYSTEMC_ARCH)
31
+ VM_SC_TARGET_ARCH = linux
32
+
33
+ ### Vars...
34
+ # Design prefix (from --prefix)
35
+ VM_PREFIX = Vdesign
36
+ # Module prefix (from --prefix)
37
+ VM_MODPREFIX = Vdesign
38
+ # User CFLAGS (from -CFLAGS on Verilator command line)
39
+ VM_USER_CFLAGS = \
40
+ -DVL_TIME_CONTEXT \
41
+
42
+ # User LDLIBS (from -LDFLAGS on Verilator command line)
43
+ VM_USER_LDLIBS = \
44
+
45
+ # User .cpp files (from .cpp's on Verilator command line)
46
+ VM_USER_CLASSES = \
47
+
48
+ # User .cpp directories (from .cpp's on Verilator command line)
49
+ VM_USER_DIR = \
50
+ .. \
51
+
52
+ ### Default rules...
53
+ # Include list of all generated classes
54
+ include Vdesign_classes.mk
55
+ # Include global rules
56
+ include $(VERILATOR_ROOT)/include/verilated.mk
57
+
58
+ ### Executable rules... (from --exe)
59
+ VPATH += $(VM_USER_DIR)
60
+
61
+
62
+ ### Link rules... (from --exe)
63
+ Vdesign: $(VK_USER_OBJS) $(VK_GLOBAL_OBJS) $(VM_PREFIX)__ALL.a
64
+ $(LINK) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) $(LIBS) $(SC_LIBS) -o $@
65
+
66
+ # Verilated -*- Makefile -*-
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.a ADDED
Binary file (47.9 kB). View file
 
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.cpp ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ // DESCRIPTION: Generated by verilator_includer via makefile
2
+ #define VL_INCLUDE_OPT include
3
+ #include "Vdesign.cpp"
4
+ #include "Vdesign___024root__0.cpp"
5
+ #include "Vdesign__main.cpp"
6
+ #include "Vdesign___024root__Slow.cpp"
7
+ #include "Vdesign___024root__0__Slow.cpp"
8
+ #include "Vdesign__Syms__Slow.cpp"
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.d ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Vdesign__ALL.o: Vdesign__ALL.cpp Vdesign.cpp Vdesign__pch.h \
2
+ /opt/oss-cad-suite/share/verilator/include/verilated.h \
3
+ /opt/oss-cad-suite/share/verilator/include/verilated_config.h \
4
+ /opt/oss-cad-suite/share/verilator/include/verilatedos.h \
5
+ /opt/oss-cad-suite/share/verilator/include/verilated_types.h \
6
+ /opt/oss-cad-suite/share/verilator/include/verilated_funcs.h \
7
+ Vdesign__Syms.h Vdesign.h Vdesign___024root.h \
8
+ /opt/oss-cad-suite/share/verilator/include/verilated_timing.h \
9
+ /opt/oss-cad-suite/share/verilator/include/verilated.h \
10
+ Vdesign___024root__0.cpp Vdesign__main.cpp Vdesign___024root__Slow.cpp \
11
+ Vdesign___024root__0__Slow.cpp Vdesign__Syms__Slow.cpp
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ALL.o ADDED
Binary file (43.5 kB). View file
 
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__Syms.h ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Symbol table internal header
3
+ //
4
+ // Internal details; most calling programs do not need this header,
5
+ // unless using verilator public meta comments.
6
+
7
+ #ifndef VERILATED_VDESIGN__SYMS_H_
8
+ #define VERILATED_VDESIGN__SYMS_H_ // guard
9
+
10
+ #include "verilated.h"
11
+
12
+ // INCLUDE MODEL CLASS
13
+
14
+ #include "Vdesign.h"
15
+
16
+ // INCLUDE MODULE CLASSES
17
+ #include "Vdesign___024root.h"
18
+
19
+ // SYMS CLASS (contains all model state)
20
+ class alignas(VL_CACHE_LINE_BYTES) Vdesign__Syms final : public VerilatedSyms {
21
+ public:
22
+ // INTERNAL STATE
23
+ Vdesign* const __Vm_modelp;
24
+ VlDeleter __Vm_deleter;
25
+ bool __Vm_didInit = false;
26
+
27
+ // MODULE INSTANCE STATE
28
+ Vdesign___024root TOP;
29
+
30
+ // CONSTRUCTORS
31
+ Vdesign__Syms(VerilatedContext* contextp, const char* namep, Vdesign* modelp);
32
+ ~Vdesign__Syms();
33
+
34
+ // METHODS
35
+ const char* name() const { return TOP.vlNamep; }
36
+ };
37
+
38
+ #endif // guard
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__Syms__Slow.cpp ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Symbol table implementation internals
3
+
4
+ #include "Vdesign__pch.h"
5
+
6
+ Vdesign__Syms::Vdesign__Syms(VerilatedContext* contextp, const char* namep, Vdesign* modelp)
7
+ : VerilatedSyms{contextp}
8
+ // Setup internal state of the Syms class
9
+ , __Vm_modelp{modelp}
10
+ // Setup top module instance
11
+ , TOP{this, namep}
12
+ {
13
+ // Check resources
14
+ Verilated::stackCheck(256);
15
+ // Setup sub module instances
16
+ // Configure time unit / time precision
17
+ _vm_contextp__->timeunit(-9);
18
+ _vm_contextp__->timeprecision(-12);
19
+ // Setup each module's pointers to their submodules
20
+ // Setup each module's pointer back to symbol table (for public functions)
21
+ TOP.__Vconfigure(true);
22
+ // Setup scopes
23
+ }
24
+
25
+ Vdesign__Syms::~Vdesign__Syms() {
26
+ // Tear down scopes
27
+ // Tear down sub module instances
28
+ }
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root.h ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Design internal header
3
+ // See Vdesign.h for the primary calling header
4
+
5
+ #ifndef VERILATED_VDESIGN___024ROOT_H_
6
+ #define VERILATED_VDESIGN___024ROOT_H_ // guard
7
+
8
+ #include "verilated.h"
9
+ #include "verilated_timing.h"
10
+
11
+
12
+ class Vdesign__Syms;
13
+
14
+ class alignas(VL_CACHE_LINE_BYTES) Vdesign___024root final {
15
+ public:
16
+
17
+ // DESIGN SPECIFIC STATE
18
+ CData/*0:0*/ tb_priority_encoder3__DOT__req2;
19
+ CData/*0:0*/ tb_priority_encoder3__DOT__req1;
20
+ CData/*0:0*/ tb_priority_encoder3__DOT__req0;
21
+ CData/*0:0*/ tb_priority_encoder3__DOT__valid;
22
+ CData/*1:0*/ tb_priority_encoder3__DOT__code;
23
+ CData/*0:0*/ __VstlFirstIteration;
24
+ CData/*0:0*/ __VstlPhaseResult;
25
+ CData/*0:0*/ __VactPhaseResult;
26
+ CData/*0:0*/ __VinactPhaseResult;
27
+ CData/*0:0*/ __VnbaPhaseResult;
28
+ IData/*31:0*/ __VactIterCount;
29
+ IData/*31:0*/ __VinactIterCount;
30
+ IData/*31:0*/ __Vi;
31
+ VlUnpacked<QData/*63:0*/, 1> __VstlTriggered;
32
+ VlUnpacked<QData/*63:0*/, 1> __VactTriggered;
33
+ VlUnpacked<QData/*63:0*/, 1> __VactTriggeredAcc;
34
+ VlUnpacked<QData/*63:0*/, 1> __VnbaTriggered;
35
+ VlDelayScheduler __VdlySched;
36
+
37
+ // INTERNAL VARIABLES
38
+ Vdesign__Syms* vlSymsp;
39
+ const char* vlNamep;
40
+
41
+ // CONSTRUCTORS
42
+ Vdesign___024root(Vdesign__Syms* symsp, const char* namep);
43
+ ~Vdesign___024root();
44
+ VL_UNCOPYABLE(Vdesign___024root);
45
+
46
+ // INTERNAL METHODS
47
+ void __Vconfigure(bool first);
48
+ };
49
+
50
+
51
+ #endif // guard
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__0.cpp ADDED
@@ -0,0 +1,361 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Design implementation internals
3
+ // See Vdesign.h for the primary calling header
4
+
5
+ #include "Vdesign__pch.h"
6
+
7
+ VlCoroutine Vdesign___024root___eval_initial__TOP__Vtiming__0(Vdesign___024root* vlSelf);
8
+
9
+ void Vdesign___024root___eval_initial(Vdesign___024root* vlSelf) {
10
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_initial\n"); );
11
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
12
+ auto& vlSelfRef = std::ref(*vlSelf).get();
13
+ // Body
14
+ Vdesign___024root___eval_initial__TOP__Vtiming__0(vlSelf);
15
+ }
16
+
17
+ VlCoroutine Vdesign___024root___eval_initial__TOP__Vtiming__0(Vdesign___024root* vlSelf) {
18
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_initial__TOP__Vtiming__0\n"); );
19
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
20
+ auto& vlSelfRef = std::ref(*vlSelf).get();
21
+ // Body
22
+ VL_WRITEF_NX("req2 req1 req0 | valid code\n-------------------------\n",0);
23
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 0U;
24
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 0U;
25
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 0U;
26
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
27
+ nullptr, "testbench.v",
28
+ 23);
29
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
30
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
31
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
32
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
33
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
34
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
35
+ >> 1U)), '#',1,(1U
36
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
37
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 0U;
38
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 0U;
39
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 1U;
40
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
41
+ nullptr, "testbench.v",
42
+ 24);
43
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
44
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
45
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
46
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
47
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
48
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
49
+ >> 1U)), '#',1,(1U
50
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
51
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 0U;
52
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 1U;
53
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 0U;
54
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
55
+ nullptr, "testbench.v",
56
+ 25);
57
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
58
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
59
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
60
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
61
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
62
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
63
+ >> 1U)), '#',1,(1U
64
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
65
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 0U;
66
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 1U;
67
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 1U;
68
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
69
+ nullptr, "testbench.v",
70
+ 26);
71
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
72
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
73
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
74
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
75
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
76
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
77
+ >> 1U)), '#',1,(1U
78
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
79
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 1U;
80
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 0U;
81
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 0U;
82
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
83
+ nullptr, "testbench.v",
84
+ 27);
85
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
86
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
87
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
88
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
89
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
90
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
91
+ >> 1U)), '#',1,(1U
92
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
93
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 1U;
94
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 0U;
95
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 1U;
96
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
97
+ nullptr, "testbench.v",
98
+ 28);
99
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
100
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
101
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
102
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
103
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
104
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
105
+ >> 1U)), '#',1,(1U
106
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
107
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 1U;
108
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 1U;
109
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 0U;
110
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
111
+ nullptr, "testbench.v",
112
+ 29);
113
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
114
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
115
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
116
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
117
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
118
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
119
+ >> 1U)), '#',1,(1U
120
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
121
+ vlSelfRef.tb_priority_encoder3__DOT__req2 = 1U;
122
+ vlSelfRef.tb_priority_encoder3__DOT__req1 = 1U;
123
+ vlSelfRef.tb_priority_encoder3__DOT__req0 = 1U;
124
+ co_await vlSelfRef.__VdlySched.delay(0x0000000000002710ULL,
125
+ nullptr, "testbench.v",
126
+ 30);
127
+ VL_WRITEF_NX(" %b %b %b | %b %b%b\n",6
128
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req2
129
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__req1)
130
+ , '#',1,vlSelfRef.tb_priority_encoder3__DOT__req0
131
+ , '#',1,(IData)(vlSelfRef.tb_priority_encoder3__DOT__valid)
132
+ , '#',1,(1U & ((IData)(vlSelfRef.tb_priority_encoder3__DOT__code)
133
+ >> 1U)), '#',1,(1U
134
+ & (IData)(vlSelfRef.tb_priority_encoder3__DOT__code)));
135
+ VL_FINISH_MT("testbench.v", 32, "");
136
+ co_return;
137
+ }
138
+
139
+ void Vdesign___024root___eval_triggers_vec__act(Vdesign___024root* vlSelf) {
140
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_triggers_vec__act\n"); );
141
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
142
+ auto& vlSelfRef = std::ref(*vlSelf).get();
143
+ // Body
144
+ vlSelfRef.__VactTriggered[0U] = (QData)((IData)(vlSelfRef.__VdlySched.awaitingCurrentTime()));
145
+ }
146
+
147
+ bool Vdesign___024root___trigger_anySet__act(const VlUnpacked<QData/*63:0*/, 1> &in) {
148
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___trigger_anySet__act\n"); );
149
+ // Locals
150
+ IData/*31:0*/ n;
151
+ // Body
152
+ n = 0U;
153
+ do {
154
+ if (in[n]) {
155
+ return (1U);
156
+ }
157
+ n = ((IData)(1U) + n);
158
+ } while ((1U > n));
159
+ return (0U);
160
+ }
161
+
162
+ void Vdesign___024root___act_sequent__TOP__0(Vdesign___024root* vlSelf) {
163
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___act_sequent__TOP__0\n"); );
164
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
165
+ auto& vlSelfRef = std::ref(*vlSelf).get();
166
+ // Body
167
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 0U;
168
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
169
+ if (vlSelfRef.tb_priority_encoder3__DOT__req2) {
170
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
171
+ vlSelfRef.tb_priority_encoder3__DOT__code = 2U;
172
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req1) {
173
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
174
+ vlSelfRef.tb_priority_encoder3__DOT__code = 1U;
175
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req0) {
176
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
177
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
178
+ }
179
+ }
180
+
181
+ void Vdesign___024root___eval_act(Vdesign___024root* vlSelf) {
182
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_act\n"); );
183
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
184
+ auto& vlSelfRef = std::ref(*vlSelf).get();
185
+ // Body
186
+ if ((1ULL & vlSelfRef.__VactTriggered[0U])) {
187
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 0U;
188
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
189
+ if (vlSelfRef.tb_priority_encoder3__DOT__req2) {
190
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
191
+ vlSelfRef.tb_priority_encoder3__DOT__code = 2U;
192
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req1) {
193
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
194
+ vlSelfRef.tb_priority_encoder3__DOT__code = 1U;
195
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req0) {
196
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
197
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
198
+ }
199
+ }
200
+ }
201
+
202
+ void Vdesign___024root___eval_nba(Vdesign___024root* vlSelf) {
203
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_nba\n"); );
204
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
205
+ auto& vlSelfRef = std::ref(*vlSelf).get();
206
+ // Body
207
+ if ((1ULL & vlSelfRef.__VnbaTriggered[0U])) {
208
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 0U;
209
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
210
+ if (vlSelfRef.tb_priority_encoder3__DOT__req2) {
211
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
212
+ vlSelfRef.tb_priority_encoder3__DOT__code = 2U;
213
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req1) {
214
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
215
+ vlSelfRef.tb_priority_encoder3__DOT__code = 1U;
216
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req0) {
217
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
218
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
219
+ }
220
+ }
221
+ }
222
+
223
+ void Vdesign___024root___timing_resume(Vdesign___024root* vlSelf) {
224
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___timing_resume\n"); );
225
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
226
+ auto& vlSelfRef = std::ref(*vlSelf).get();
227
+ // Body
228
+ if ((1ULL & vlSelfRef.__VactTriggered[0U])) {
229
+ vlSelfRef.__VdlySched.resume();
230
+ }
231
+ }
232
+
233
+ void Vdesign___024root___trigger_orInto__act_vec_vec(VlUnpacked<QData/*63:0*/, 1> &out, const VlUnpacked<QData/*63:0*/, 1> &in) {
234
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___trigger_orInto__act_vec_vec\n"); );
235
+ // Locals
236
+ IData/*31:0*/ n;
237
+ // Body
238
+ n = 0U;
239
+ do {
240
+ out[n] = (out[n] | in[n]);
241
+ n = ((IData)(1U) + n);
242
+ } while ((0U >= n));
243
+ }
244
+
245
+ #ifdef VL_DEBUG
246
+ VL_ATTR_COLD void Vdesign___024root___dump_triggers__act(const VlUnpacked<QData/*63:0*/, 1> &triggers, const std::string &tag);
247
+ #endif // VL_DEBUG
248
+
249
+ bool Vdesign___024root___eval_phase__act(Vdesign___024root* vlSelf) {
250
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_phase__act\n"); );
251
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
252
+ auto& vlSelfRef = std::ref(*vlSelf).get();
253
+ // Locals
254
+ CData/*0:0*/ __VactExecute;
255
+ // Body
256
+ Vdesign___024root___eval_triggers_vec__act(vlSelf);
257
+ Vdesign___024root___trigger_orInto__act_vec_vec(vlSelfRef.__VactTriggered, vlSelfRef.__VactTriggeredAcc);
258
+ #ifdef VL_DEBUG
259
+ if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) {
260
+ Vdesign___024root___dump_triggers__act(vlSelfRef.__VactTriggered, "act"s);
261
+ }
262
+ #endif
263
+ Vdesign___024root___trigger_orInto__act_vec_vec(vlSelfRef.__VnbaTriggered, vlSelfRef.__VactTriggered);
264
+ __VactExecute = Vdesign___024root___trigger_anySet__act(vlSelfRef.__VactTriggered);
265
+ if (__VactExecute) {
266
+ vlSelfRef.__VactTriggeredAcc.fill(0ULL);
267
+ Vdesign___024root___timing_resume(vlSelf);
268
+ Vdesign___024root___eval_act(vlSelf);
269
+ }
270
+ return (__VactExecute);
271
+ }
272
+
273
+ bool Vdesign___024root___eval_phase__inact(Vdesign___024root* vlSelf) {
274
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_phase__inact\n"); );
275
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
276
+ auto& vlSelfRef = std::ref(*vlSelf).get();
277
+ // Locals
278
+ CData/*0:0*/ __VinactExecute;
279
+ // Body
280
+ __VinactExecute = vlSelfRef.__VdlySched.awaitingZeroDelay();
281
+ if (__VinactExecute) {
282
+ VL_FATAL_MT("testbench.v", 3, "", "ZERODLY: Design Verilated with '--no-sched-zero-delay', but #0 delay executed at runtime");
283
+ }
284
+ return (__VinactExecute);
285
+ }
286
+
287
+ void Vdesign___024root___trigger_clear__act(VlUnpacked<QData/*63:0*/, 1> &out) {
288
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___trigger_clear__act\n"); );
289
+ // Locals
290
+ IData/*31:0*/ n;
291
+ // Body
292
+ n = 0U;
293
+ do {
294
+ out[n] = 0ULL;
295
+ n = ((IData)(1U) + n);
296
+ } while ((1U > n));
297
+ }
298
+
299
+ bool Vdesign___024root___eval_phase__nba(Vdesign___024root* vlSelf) {
300
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_phase__nba\n"); );
301
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
302
+ auto& vlSelfRef = std::ref(*vlSelf).get();
303
+ // Locals
304
+ CData/*0:0*/ __VnbaExecute;
305
+ // Body
306
+ __VnbaExecute = Vdesign___024root___trigger_anySet__act(vlSelfRef.__VnbaTriggered);
307
+ if (__VnbaExecute) {
308
+ Vdesign___024root___eval_nba(vlSelf);
309
+ Vdesign___024root___trigger_clear__act(vlSelfRef.__VnbaTriggered);
310
+ }
311
+ return (__VnbaExecute);
312
+ }
313
+
314
+ void Vdesign___024root___eval(Vdesign___024root* vlSelf) {
315
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval\n"); );
316
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
317
+ auto& vlSelfRef = std::ref(*vlSelf).get();
318
+ // Locals
319
+ IData/*31:0*/ __VnbaIterCount;
320
+ // Body
321
+ __VnbaIterCount = 0U;
322
+ do {
323
+ if (VL_UNLIKELY(((0x00002710U < __VnbaIterCount)))) {
324
+ #ifdef VL_DEBUG
325
+ Vdesign___024root___dump_triggers__act(vlSelfRef.__VnbaTriggered, "nba"s);
326
+ #endif
327
+ VL_FATAL_MT("testbench.v", 3, "", "DIDNOTCONVERGE: NBA region did not converge after '--converge-limit' of 10000 tries");
328
+ }
329
+ __VnbaIterCount = ((IData)(1U) + __VnbaIterCount);
330
+ vlSelfRef.__VinactIterCount = 0U;
331
+ do {
332
+ if (VL_UNLIKELY(((0x00002710U < vlSelfRef.__VinactIterCount)))) {
333
+ VL_FATAL_MT("testbench.v", 3, "", "DIDNOTCONVERGE: Inactive region did not converge after '--converge-limit' of 10000 tries");
334
+ }
335
+ vlSelfRef.__VinactIterCount = ((IData)(1U)
336
+ + vlSelfRef.__VinactIterCount);
337
+ vlSelfRef.__VactIterCount = 0U;
338
+ do {
339
+ if (VL_UNLIKELY(((0x00002710U < vlSelfRef.__VactIterCount)))) {
340
+ #ifdef VL_DEBUG
341
+ Vdesign___024root___dump_triggers__act(vlSelfRef.__VactTriggered, "act"s);
342
+ #endif
343
+ VL_FATAL_MT("testbench.v", 3, "", "DIDNOTCONVERGE: Active region did not converge after '--converge-limit' of 10000 tries");
344
+ }
345
+ vlSelfRef.__VactIterCount = ((IData)(1U)
346
+ + vlSelfRef.__VactIterCount);
347
+ vlSelfRef.__VactPhaseResult = Vdesign___024root___eval_phase__act(vlSelf);
348
+ } while (vlSelfRef.__VactPhaseResult);
349
+ vlSelfRef.__VinactPhaseResult = Vdesign___024root___eval_phase__inact(vlSelf);
350
+ } while (vlSelfRef.__VinactPhaseResult);
351
+ vlSelfRef.__VnbaPhaseResult = Vdesign___024root___eval_phase__nba(vlSelf);
352
+ } while (vlSelfRef.__VnbaPhaseResult);
353
+ }
354
+
355
+ #ifdef VL_DEBUG
356
+ void Vdesign___024root___eval_debug_assertions(Vdesign___024root* vlSelf) {
357
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_debug_assertions\n"); );
358
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
359
+ auto& vlSelfRef = std::ref(*vlSelf).get();
360
+ }
361
+ #endif // VL_DEBUG
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__0__Slow.cpp ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Design implementation internals
3
+ // See Vdesign.h for the primary calling header
4
+
5
+ #include "Vdesign__pch.h"
6
+
7
+ VL_ATTR_COLD void Vdesign___024root___eval_static(Vdesign___024root* vlSelf) {
8
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_static\n"); );
9
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
10
+ auto& vlSelfRef = std::ref(*vlSelf).get();
11
+ // Body
12
+ do {
13
+ vlSelfRef.__VactTriggeredAcc[vlSelfRef.__Vi]
14
+ = vlSelfRef.__VactTriggered[vlSelfRef.__Vi];
15
+ vlSelfRef.__Vi = ((IData)(1U) + vlSelfRef.__Vi);
16
+ } while ((0U >= vlSelfRef.__Vi));
17
+ }
18
+
19
+ VL_ATTR_COLD void Vdesign___024root___eval_final(Vdesign___024root* vlSelf) {
20
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_final\n"); );
21
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
22
+ auto& vlSelfRef = std::ref(*vlSelf).get();
23
+ }
24
+
25
+ #ifdef VL_DEBUG
26
+ VL_ATTR_COLD void Vdesign___024root___dump_triggers__stl(const VlUnpacked<QData/*63:0*/, 1> &triggers, const std::string &tag);
27
+ #endif // VL_DEBUG
28
+ VL_ATTR_COLD bool Vdesign___024root___eval_phase__stl(Vdesign___024root* vlSelf);
29
+
30
+ VL_ATTR_COLD void Vdesign___024root___eval_settle(Vdesign___024root* vlSelf) {
31
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_settle\n"); );
32
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
33
+ auto& vlSelfRef = std::ref(*vlSelf).get();
34
+ // Locals
35
+ IData/*31:0*/ __VstlIterCount;
36
+ // Body
37
+ __VstlIterCount = 0U;
38
+ vlSelfRef.__VstlFirstIteration = 1U;
39
+ do {
40
+ if (VL_UNLIKELY(((0x00002710U < __VstlIterCount)))) {
41
+ #ifdef VL_DEBUG
42
+ Vdesign___024root___dump_triggers__stl(vlSelfRef.__VstlTriggered, "stl"s);
43
+ #endif
44
+ VL_FATAL_MT("testbench.v", 3, "", "DIDNOTCONVERGE: Settle region did not converge after '--converge-limit' of 10000 tries");
45
+ }
46
+ __VstlIterCount = ((IData)(1U) + __VstlIterCount);
47
+ vlSelfRef.__VstlPhaseResult = Vdesign___024root___eval_phase__stl(vlSelf);
48
+ vlSelfRef.__VstlFirstIteration = 0U;
49
+ } while (vlSelfRef.__VstlPhaseResult);
50
+ }
51
+
52
+ VL_ATTR_COLD void Vdesign___024root___eval_triggers_vec__stl(Vdesign___024root* vlSelf) {
53
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_triggers_vec__stl\n"); );
54
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
55
+ auto& vlSelfRef = std::ref(*vlSelf).get();
56
+ // Body
57
+ vlSelfRef.__VstlTriggered[0U] = ((0xfffffffffffffffeULL
58
+ & vlSelfRef.__VstlTriggered[0U])
59
+ | (IData)((IData)(vlSelfRef.__VstlFirstIteration)));
60
+ }
61
+
62
+ VL_ATTR_COLD bool Vdesign___024root___trigger_anySet__stl(const VlUnpacked<QData/*63:0*/, 1> &in);
63
+
64
+ #ifdef VL_DEBUG
65
+ VL_ATTR_COLD void Vdesign___024root___dump_triggers__stl(const VlUnpacked<QData/*63:0*/, 1> &triggers, const std::string &tag) {
66
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___dump_triggers__stl\n"); );
67
+ // Body
68
+ if ((1U & (~ (IData)(Vdesign___024root___trigger_anySet__stl(triggers))))) {
69
+ VL_DBG_MSGS(" No '" + tag + "' region triggers active\n");
70
+ }
71
+ if ((1U & (IData)(triggers[0U]))) {
72
+ VL_DBG_MSGS(" '" + tag + "' region trigger index 0 is active: Internal 'stl' trigger - first iteration\n");
73
+ }
74
+ }
75
+ #endif // VL_DEBUG
76
+
77
+ VL_ATTR_COLD bool Vdesign___024root___trigger_anySet__stl(const VlUnpacked<QData/*63:0*/, 1> &in) {
78
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___trigger_anySet__stl\n"); );
79
+ // Locals
80
+ IData/*31:0*/ n;
81
+ // Body
82
+ n = 0U;
83
+ do {
84
+ if (in[n]) {
85
+ return (1U);
86
+ }
87
+ n = ((IData)(1U) + n);
88
+ } while ((1U > n));
89
+ return (0U);
90
+ }
91
+
92
+ VL_ATTR_COLD void Vdesign___024root___eval_stl(Vdesign___024root* vlSelf) {
93
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_stl\n"); );
94
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
95
+ auto& vlSelfRef = std::ref(*vlSelf).get();
96
+ // Body
97
+ if ((1ULL & vlSelfRef.__VstlTriggered[0U])) {
98
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 0U;
99
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
100
+ if (vlSelfRef.tb_priority_encoder3__DOT__req2) {
101
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
102
+ vlSelfRef.tb_priority_encoder3__DOT__code = 2U;
103
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req1) {
104
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
105
+ vlSelfRef.tb_priority_encoder3__DOT__code = 1U;
106
+ } else if (vlSelfRef.tb_priority_encoder3__DOT__req0) {
107
+ vlSelfRef.tb_priority_encoder3__DOT__valid = 1U;
108
+ vlSelfRef.tb_priority_encoder3__DOT__code = 0U;
109
+ }
110
+ }
111
+ }
112
+
113
+ VL_ATTR_COLD bool Vdesign___024root___eval_phase__stl(Vdesign___024root* vlSelf) {
114
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___eval_phase__stl\n"); );
115
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
116
+ auto& vlSelfRef = std::ref(*vlSelf).get();
117
+ // Locals
118
+ CData/*0:0*/ __VstlExecute;
119
+ // Body
120
+ Vdesign___024root___eval_triggers_vec__stl(vlSelf);
121
+ #ifdef VL_DEBUG
122
+ if (VL_UNLIKELY(vlSymsp->_vm_contextp__->debug())) {
123
+ Vdesign___024root___dump_triggers__stl(vlSelfRef.__VstlTriggered, "stl"s);
124
+ }
125
+ #endif
126
+ __VstlExecute = Vdesign___024root___trigger_anySet__stl(vlSelfRef.__VstlTriggered);
127
+ if (__VstlExecute) {
128
+ Vdesign___024root___eval_stl(vlSelf);
129
+ }
130
+ return (__VstlExecute);
131
+ }
132
+
133
+ bool Vdesign___024root___trigger_anySet__act(const VlUnpacked<QData/*63:0*/, 1> &in);
134
+
135
+ #ifdef VL_DEBUG
136
+ VL_ATTR_COLD void Vdesign___024root___dump_triggers__act(const VlUnpacked<QData/*63:0*/, 1> &triggers, const std::string &tag) {
137
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___dump_triggers__act\n"); );
138
+ // Body
139
+ if ((1U & (~ (IData)(Vdesign___024root___trigger_anySet__act(triggers))))) {
140
+ VL_DBG_MSGS(" No '" + tag + "' region triggers active\n");
141
+ }
142
+ if ((1U & (IData)(triggers[0U]))) {
143
+ VL_DBG_MSGS(" '" + tag + "' region trigger index 0 is active: @([true] __VdlySched.awaitingCurrentTime())\n");
144
+ }
145
+ }
146
+ #endif // VL_DEBUG
147
+
148
+ VL_ATTR_COLD void Vdesign___024root___ctor_var_reset(Vdesign___024root* vlSelf) {
149
+ VL_DEBUG_IF(VL_DBG_MSGF("+ Vdesign___024root___ctor_var_reset\n"); );
150
+ Vdesign__Syms* const __restrict vlSymsp VL_ATTR_UNUSED = vlSelf->vlSymsp;
151
+ auto& vlSelfRef = std::ref(*vlSelf).get();
152
+ // Body
153
+ const uint64_t __VscopeHash = VL_MURMUR64_HASH(vlSelf->vlNamep);
154
+ vlSelf->tb_priority_encoder3__DOT__req2 = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 9943119845136453460ull);
155
+ vlSelf->tb_priority_encoder3__DOT__req1 = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 18060180862738191540ull);
156
+ vlSelf->tb_priority_encoder3__DOT__req0 = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 687725623710860105ull);
157
+ vlSelf->tb_priority_encoder3__DOT__valid = VL_SCOPED_RAND_RESET_I(1, __VscopeHash, 17636183473393224740ull);
158
+ vlSelf->tb_priority_encoder3__DOT__code = VL_SCOPED_RAND_RESET_I(2, __VscopeHash, 15448362772404662925ull);
159
+ for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) {
160
+ vlSelf->__VstlTriggered[__Vi0] = 0;
161
+ }
162
+ for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) {
163
+ vlSelf->__VactTriggered[__Vi0] = 0;
164
+ }
165
+ for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) {
166
+ vlSelf->__VactTriggeredAcc[__Vi0] = 0;
167
+ }
168
+ for (int __Vi0 = 0; __Vi0 < 1; ++__Vi0) {
169
+ vlSelf->__VnbaTriggered[__Vi0] = 0;
170
+ }
171
+ vlSelf->__Vi = 0;
172
+ }
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign___024root__Slow.cpp ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Design implementation internals
3
+ // See Vdesign.h for the primary calling header
4
+
5
+ #include "Vdesign__pch.h"
6
+
7
+ void Vdesign___024root___ctor_var_reset(Vdesign___024root* vlSelf);
8
+
9
+ Vdesign___024root::Vdesign___024root(Vdesign__Syms* symsp, const char* namep)
10
+ : __VdlySched{*symsp->_vm_contextp__}
11
+ {
12
+ vlSymsp = symsp;
13
+ vlNamep = strdup(namep);
14
+ // Reset structure values
15
+ Vdesign___024root___ctor_var_reset(this);
16
+ }
17
+
18
+ void Vdesign___024root::__Vconfigure(bool first) {
19
+ (void)first; // Prevent unused variable warning
20
+ }
21
+
22
+ Vdesign___024root::~Vdesign___024root() {
23
+ VL_DO_DANGLING(std::free(const_cast<char*>(vlNamep)), vlNamep);
24
+ }
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__main.cpp ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: main() simulation loop, created with --main
3
+
4
+ #include "verilated.h"
5
+ #include "Vdesign.h"
6
+
7
+ //======================
8
+
9
+ int main(int argc, char** argv, char**) {
10
+ // Setup context, defaults, and parse command line
11
+ Verilated::debug(0);
12
+ const std::unique_ptr<VerilatedContext> contextp{new VerilatedContext};
13
+ contextp->threads(1);
14
+ contextp->commandArgs(argc, argv);
15
+
16
+ // Construct the Verilated model, from Vtop.h generated from Verilating
17
+ const std::unique_ptr<Vdesign> topp{new Vdesign{contextp.get(), ""}};
18
+
19
+ // Simulate until $finish
20
+ while (VL_LIKELY(!contextp->gotFinish())) {
21
+ // Evaluate model
22
+ topp->eval();
23
+ // Advance time
24
+ if (!topp->eventsPending()) break;
25
+ contextp->time(topp->nextTimeSlot());
26
+ }
27
+
28
+ if (VL_LIKELY(!contextp->gotFinish())) {
29
+ VL_DEBUG_IF(VL_PRINTF("+ Exiting without $finish; no events left\n"););
30
+ }
31
+
32
+ // Execute 'final' processes
33
+ topp->final();
34
+
35
+ // Print statistical summary report
36
+ contextp->statsPrintSummary();
37
+
38
+ return 0;
39
+ }
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__pch.h ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Verilated -*- C++ -*-
2
+ // DESCRIPTION: Verilator output: Precompiled header
3
+ //
4
+ // Internal details; most user sources do not need this header,
5
+ // unless using verilator public meta comments.
6
+ // Suggest use Vdesign.h instead.
7
+
8
+ #ifndef VERILATED_VDESIGN__PCH_H_
9
+ #define VERILATED_VDESIGN__PCH_H_ // guard
10
+
11
+ // GCC and Clang only will precompile headers (PCH) for the first header.
12
+ // So, make sure this is the one and only PCH.
13
+ // If multiple module's includes are needed, use individual includes.
14
+ #ifdef VL_PCH_INCLUDED
15
+ # error "Including multiple precompiled header files"
16
+ #endif
17
+ #define VL_PCH_INCLUDED
18
+
19
+
20
+ #include "verilated.h"
21
+
22
+ #include "Vdesign__Syms.h"
23
+ #include "Vdesign.h"
24
+
25
+ // Additional include files added using '--compiler-include'
26
+
27
+ #endif // guard
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__ver.d ADDED
@@ -0,0 +1 @@
 
 
1
+ obj_dir/Vdesign.cpp obj_dir/Vdesign.h obj_dir/Vdesign.mk obj_dir/Vdesign__Syms.h obj_dir/Vdesign__Syms__Slow.cpp obj_dir/Vdesign___024root.h obj_dir/Vdesign___024root__0.cpp obj_dir/Vdesign___024root__0__Slow.cpp obj_dir/Vdesign___024root__Slow.cpp obj_dir/Vdesign__main.cpp obj_dir/Vdesign__pch.h obj_dir/Vdesign__ver.d obj_dir/Vdesign_classes.mk : /opt/oss-cad-suite/libexec/verilator_bin /opt/oss-cad-suite/libexec/verilator_bin /opt/oss-cad-suite/share/verilator/include/verilated_std.sv /opt/oss-cad-suite/share/verilator/include/verilated_std_waiver.vlt design.v testbench.v
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign__verFiles.dat ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # DESCRIPTION: Verilator output: Timestamp data for --skip-identical. Delete at will.
2
+ C "-Wall --cc --binary --build-jobs 0 --build --quiet-build -Wno-fatal --timescale 1ns/1ns design.v testbench.v"
3
+ S 15470064 408335 1775589273 781926010 1775535881 0 "unhashed" "/opt/oss-cad-suite/libexec/verilator_bin"
4
+ S 7905 417104 1775589275 228926010 1775535881 0 "vaoJo7Sb62R3p7xvCJKmh57f4Cpmx2GHt7zuj5gO" "/opt/oss-cad-suite/share/verilator/include/verilated_std.sv"
5
+ S 3224 417105 1775589275 228926010 1775535881 0 "Hydzkv9X77JH03JyZeFi7tBFnQaHV7yknXQxBZFr" "/opt/oss-cad-suite/share/verilator/include/verilated_std_waiver.vlt"
6
+ S 3476 2246 1775653914 953249303 1775653914 953249303 "L54YBOTSWlZzA8XUc7Y6yejsxfiSAZUYTjl3XBdK" "design.v"
7
+ T 3092 2251 1775653914 992730269 1775653914 992730269 "unhashed" "obj_dir/Vdesign.cpp"
8
+ T 3431 2250 1775653914 992489978 1775653914 992489978 "unhashed" "obj_dir/Vdesign.h"
9
+ T 1868 2259 1775653914 995424142 1775653914 995424142 "unhashed" "obj_dir/Vdesign.mk"
10
+ T 947 2249 1775653914 992164936 1775653914 992164936 "unhashed" "obj_dir/Vdesign__Syms.h"
11
+ T 869 2248 1775653914 991858062 1775653914 991858062 "unhashed" "obj_dir/Vdesign__Syms__Slow.cpp"
12
+ T 1478 2253 1775653914 993146602 1775653914 993146602 "unhashed" "obj_dir/Vdesign___024root.h"
13
+ T 18016 2256 1775653914 994400351 1775653914 994400351 "unhashed" "obj_dir/Vdesign___024root__0.cpp"
14
+ T 7576 2255 1775653914 993895226 1775653914 993895226 "unhashed" "obj_dir/Vdesign___024root__0__Slow.cpp"
15
+ T 707 2254 1775653914 993471518 1775653914 993471518 "unhashed" "obj_dir/Vdesign___024root__Slow.cpp"
16
+ T 1113 2257 1775653914 994648809 1775653914 994648809 "unhashed" "obj_dir/Vdesign__main.cpp"
17
+ T 760 2252 1775653914 992919769 1775653914 992919769 "unhashed" "obj_dir/Vdesign__pch.h"
18
+ T 583 2260 1775653914 995824225 1775653914 995824225 "unhashed" "obj_dir/Vdesign__ver.d"
19
+ T 0 0 1775653914 995964683 1775653914 995964683 "unhashed" "obj_dir/Vdesign__verFiles.dat"
20
+ T 1672 2258 1775653914 995140267 1775653914 995140267 "unhashed" "obj_dir/Vdesign_classes.mk"
21
+ S 1324 70 1775648367 130973431 1775648367 130973431 "SyGOBpqu1wHLnWY7OyVQCbE3yNLu6Z96GARVmXqC" "testbench.v"
server/tasks/hard/01_priority_encoder_latch/obj_dir/Vdesign_classes.mk ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Verilated -*- Makefile -*-
2
+ # DESCRIPTION: Verilator output: Make include file with class lists
3
+ #
4
+ # This file lists generated Verilated files, for including in higher level makefiles.
5
+ # See Vdesign.mk for the caller.
6
+
7
+ ### Switches...
8
+ # C11 constructs required? 0/1 (always on now)
9
+ VM_C11 = 1
10
+ # Timing enabled? 0/1
11
+ VM_TIMING = 1
12
+ # Coverage output mode? 0/1 (from --coverage)
13
+ VM_COVERAGE = 0
14
+ # Parallel builds? 0/1 (from --output-split)
15
+ VM_PARALLEL_BUILDS = 0
16
+ # Tracing output mode? 0/1 (from --trace-fst/--trace-saif/--trace-vcd)
17
+ VM_TRACE = 0
18
+ # Tracing output mode in FST format? 0/1 (from --trace-fst)
19
+ VM_TRACE_FST = 0
20
+ # Tracing output mode in SAIF format? 0/1 (from --trace-saif)
21
+ VM_TRACE_SAIF = 0
22
+ # Tracing output mode in VCD format? 0/1 (from --trace-vcd)
23
+ VM_TRACE_VCD = 0
24
+
25
+ ### Object file lists...
26
+ # Generated module classes, fast-path, compile with highest optimization
27
+ VM_CLASSES_FAST += \
28
+ Vdesign \
29
+ Vdesign___024root__0 \
30
+ Vdesign__main \
31
+
32
+ # Generated module classes, non-fast-path, compile with low/medium optimization
33
+ VM_CLASSES_SLOW += \
34
+ Vdesign___024root__Slow \
35
+ Vdesign___024root__0__Slow \
36
+
37
+ # Generated support classes, fast-path, compile with highest optimization
38
+ VM_SUPPORT_FAST += \
39
+
40
+ # Generated support classes, non-fast-path, compile with low/medium optimization
41
+ VM_SUPPORT_SLOW += \
42
+ Vdesign__Syms__Slow \
43
+
44
+ # Global classes, need linked once per executable, fast-path, compile with highest optimization
45
+ VM_GLOBAL_FAST += \
46
+ verilated \
47
+ verilated_timing \
48
+ verilated_threads \
49
+
50
+ # Global classes, need linked once per executable, non-fast-path, compile with low/medium optimization
51
+ VM_GLOBAL_SLOW += \
52
+
53
+ # Verilated -*- Makefile -*-
server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated.d ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ verilated.o: /opt/oss-cad-suite/share/verilator/include/verilated.cpp \
2
+ /opt/oss-cad-suite/share/verilator/include/verilated_config.h \
3
+ /opt/oss-cad-suite/share/verilator/include/verilatedos.h \
4
+ /opt/oss-cad-suite/share/verilator/include/verilated.h \
5
+ /opt/oss-cad-suite/share/verilator/include/verilated_types.h \
6
+ /opt/oss-cad-suite/share/verilator/include/verilated_funcs.h \
7
+ /opt/oss-cad-suite/share/verilator/include/verilated_imp.h \
8
+ /opt/oss-cad-suite/share/verilator/include/verilated_syms.h \
9
+ /opt/oss-cad-suite/share/verilator/include/verilated_sym_props.h \
10
+ /opt/oss-cad-suite/share/verilator/include/verilated_threads.h \
11
+ /opt/oss-cad-suite/share/verilator/include/verilated_trace.h \
12
+ /opt/oss-cad-suite/share/verilator/include/verilatedos_c.h
server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated.o ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c15e0086becf59dedb31cd5b4e20cfab3c618ecba86e0aeda2d5e8c2bf9c6177
3
+ size 254520
server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_threads.d ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ verilated_threads.o: \
2
+ /opt/oss-cad-suite/share/verilator/include/verilated_threads.cpp \
3
+ /opt/oss-cad-suite/share/verilator/include/verilatedos.h \
4
+ /opt/oss-cad-suite/share/verilator/include/verilated_threads.h \
5
+ /opt/oss-cad-suite/share/verilator/include/verilated.h \
6
+ /opt/oss-cad-suite/share/verilator/include/verilated_config.h \
7
+ /opt/oss-cad-suite/share/verilator/include/verilated_types.h \
8
+ /opt/oss-cad-suite/share/verilator/include/verilated_funcs.h
server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_threads.o ADDED
Binary file (64 kB). View file
 
server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_timing.d ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ verilated_timing.o: \
2
+ /opt/oss-cad-suite/share/verilator/include/verilated_timing.cpp \
3
+ /opt/oss-cad-suite/share/verilator/include/verilated_timing.h \
4
+ /opt/oss-cad-suite/share/verilator/include/verilated.h \
5
+ /opt/oss-cad-suite/share/verilator/include/verilated_config.h \
6
+ /opt/oss-cad-suite/share/verilator/include/verilatedos.h \
7
+ /opt/oss-cad-suite/share/verilator/include/verilated_types.h \
8
+ /opt/oss-cad-suite/share/verilator/include/verilated_funcs.h
server/tasks/hard/01_priority_encoder_latch/obj_dir/verilated_timing.o ADDED
Binary file (16.2 kB). View file