-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTaskfile.yml
More file actions
247 lines (223 loc) · 10.3 KB
/
Copy pathTaskfile.yml
File metadata and controls
247 lines (223 loc) · 10.3 KB
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
# Taskfile for VTX1 project
# https://taskfile.dev
version: "3"
vars:
PROJECT_NAME: "VTX1"
DOCS_DIR: docs
DIAGRAMS_DIR: "{{.DOCS_DIR}}/diagrams"
WAVEFORMS_DIR: "{{.DOCS_DIR}}/waveforms"
RELEASE_DIR: release
OPENROAD_PATH: "D:/tools/OpenROAD"
set:
- pipefail
tasks:
default:
cmds:
- echo ""
- echo "{{.PROJECT_NAME}} Build System"
- echo ""
- echo "Available tasks:"
- echo "Task Name Description"
- echo "---------------------- -------------------------------------------------"
- echo "PRIMARY TESTS:"
- echo " test-consolidated Main comprehensive system test"
- echo " test-optimized I2C-fixed optimized system test"
- echo " test-all Run all test suites"
- echo ""
- echo "SPECIALIZED TESTS:"
- echo " test-microcode Comprehensive microcode validation"
- echo " test-microcode-simple Quick microcode checks"
- echo " test-pipeline CPU pipeline integration tests"
- echo ""
- echo "DEBUG & VALIDATION:"
- echo " test-status Quick system status check"
- echo " test-i2c-fix Validate I2C state machine fix"
- echo ""
- echo "SIMULATION:"
- echo " simulate Interactive system simulation"
- echo ""
- echo "SYNTHESIS & VALIDATION:"
- echo " check Syntax checking"
- echo " synth Synthesize design"
- echo ""
- echo "UTILITIES:"
- echo " clean Clean build artifacts"
- echo " doc Generate documentation"
- echo " install Install development tools"
silent: true
# Primary Test Tasks
test-consolidated:
desc: Test complete VTX1 consolidated system
cmds:
- task: os-mkdir-build
- echo "Testing VTX1 Consolidated System..."
- iverilog -g2012 -I src/common -I src/cpu -I src/memory -I src/system -I src/cache -I src/testbench -o build/vtx1_consolidated_test src/vtx1_top_consolidated.v src/testbench/tb_vtx1_consolidated.v src/common/*.v src/cpu/*.v src/memory/*.v src/system/*.v src/cache/*.v
- vvp build/vtx1_consolidated_test
- echo "VTX1 Consolidated system test completed. View waveforms with gtkwave vtx1_consolidated_test.vcd"
test-optimized:
desc: "Run optimized consolidated system test with I2C state fix"
cmds:
- task: os-clean-build
- task: os-mkdir-build
- echo "Compiling VTX1 system with I2C state machine fixes..."
- task: os-iverilog-optimized
- task: os-run-optimized
test-all:
desc: Run all VTX1 tests
cmds:
- task: test-microcode-simple
- task: test-pipeline
- task: test-optimized
- echo "All VTX1 tests completed successfully"
# Specialized Test Tasks
test-microcode:
desc: Test microcode system with comprehensive validation
cmds:
- task: os-mkdir-build
- echo "Testing microcode system..."
- iverilog -I src/common -I src/cpu -I src/system -I src/testbench -o build/microcode_test src/testbench/tb_microcode_system.v src/cpu/*.v src/common/*.v src/system/*.v
- vvp build/microcode_test
- echo "Microcode system tests completed. View waveforms with gtkwave microcode_test.vcd"
test-microcode-simple:
desc: Quick microcode validation tests
cmds:
- task: os-mkdir-build
- echo "Running simple microcode tests..."
- iverilog -g2012 -I src/common -I src/cpu -I src/testbench -o build/microcode_simple_test src/testbench/tb_microcode_simple.v src/cpu/*.v src/common/*.v
- vvp build/microcode_simple_test
- echo "Simple microcode tests completed. View waveforms with gtkwave microcode_simple_test.vcd"
test-pipeline:
desc: Test CPU pipeline integration and performance
cmds:
- task: os-mkdir-build
- echo "Testing CPU pipeline integration..."
- iverilog -g2012 -I src/common -I src/cpu -I src/testbench -o build/pipeline_test src/testbench/test_integrated_pipeline.v src/cpu/*.v src/common/*.v
- vvp build/pipeline_test
- echo "CPU pipeline tests completed. View waveforms with gtkwave pipeline_test.vcd"
# Debug and Issue Resolution Tasks
test-i2c-fix:
desc: Test I2C controller state machine fix
cmds:
- task: os-mkdir-build
- echo "Testing I2C controller with fixed state constants..."
- iverilog -g2012 -I src/common -o build/i2c_fix_test src/system/i2c_controller.v src/common/vtx1_state_constants.v src/common/vtx1_error_macros.v src/common/ternary_*.v src/common/vtx1_clock_divider.v
- echo "I2C controller compilation successful - state constants fixed"
test-status:
desc: "Quick system status check and Error LED validation"
cmds:
- echo "=== VTX1 System Status Check ==="
- echo "Available testbenches:"
- task: os-list-testbenches
- echo "Running quick consolidated test..."
- task: test-optimized
# Simulation
simulate:
desc: Interactive simulation with GTKWave
cmds:
- task: test-consolidated
- gtkwave vtx1_consolidated_test.vcd
# Synthesis & Validation
check:
desc: Check VTX1 consolidated system syntax
cmds:
- echo "Checking VTX1 Consolidated System syntax..."
- iverilog -g2012 -I src/common -I src/cpu -I src/memory -I src/system -t null src/vtx1_top_consolidated.v src/common/*.v src/cpu/*.v src/memory/*.v src/system/*.v src/cache/*.v
- echo "VTX1 Consolidated syntax check completed"
synth:
desc: Synthesize VTX1 consolidated design with Yosys
cmds:
- task: os-mkdir-build
- echo "Synthesizing VTX1 Consolidated System..."
- yosys -p "read_verilog -I src/common -I src/cpu -I src/memory -I src/system -I src/cache src/vtx1_top_consolidated.v src/common/ternary_arithmetic.v src/common/ternary_constants.v src/common/vtx1_state_constants.v src/common/vtx1_interfaces.v src/common/vtx1_error_macros.v src/common/ternary_logic.v src/common/ternary_encoding.v src/cpu/instruction_decoder.v src/cpu/hazard_detection.v src/cpu/microcode_rom.v src/cpu/forwarding_unit.v src/cpu/microcode_sequencer.v src/cpu/cpu_core.v src/cpu/tcu_enhanced_interface.v src/cpu/register_file.v src/memory/memory_controller.v src/system/uart_controller.v src/system/spi_controller.v src/system/i2c_controller.v src/system/gpio_controller.v src/system/dma_controller.v src/system/debug_controller.v src/system/cpu_adapter.v src/system/bus_matrix.v src/cache/cache_controller.v; synth -top vtx1_top_consolidated; write_verilog build/vtx1_consolidated_synth.v; write_json build/vtx1_consolidated_synth.json"
- echo "VTX1 Consolidated synthesis completed. Output in build/vtx1_consolidated_synth.v"
# Utilities
clean:
desc: Clean build artifacts
cmds:
- task: os-clean-build
- echo "Build artifacts cleaned"
doc:
desc: Generate documentation in PDF
cmds:
- echo "Generating documentation..."
- task: os-doc-arch
- task: os-doc-asm
- echo "Documentation generated in {{.RELEASE_DIR}}"
os-mkdir-build:
desc: Create build directory (OS aware)
cmds:
- |
if [ "${OS}" = "windows" ]; then
powershell -Command "New-Item -ItemType Directory -Force -Path build | Out-Null"
else
mkdir -p build
fi
silent: true
os-clean-build:
desc: Clean build directory and artifacts (OS aware)
cmds:
- |
if [ "${OS}" = "windows" ]; then
powershell -Command "Remove-Item -Recurse -Force -Path build -ErrorAction SilentlyContinue"
powershell -Command "Remove-Item -Force -Path *.vcd -ErrorAction SilentlyContinue"
powershell -Command "Remove-Item -Force -Path *.out -ErrorAction SilentlyContinue"
else
rm -rf build
rm -f *.vcd
rm -f *.out
fi
silent: true
os-list-testbenches:
desc: List testbenches (OS aware)
cmds:
- |
if [ "${OS}" = "windows" ]; then
powershell -Command "Get-ChildItem src\testbench\*.v | Select-Object Name, Length | Format-Table -AutoSize"
else
ls -lh src/testbench/*.v
fi
silent: true
os-iverilog-optimized:
desc: Compile optimized test (OS aware)
cmds:
- |
if [ "${OS}" = "windows" ]; then
powershell -Command "iverilog -I src\common -I src\cache -o build\vtx1_optimized_test src\vtx1_top_consolidated.v src\testbench\tb_vtx1_consolidated.v src\common\*.v src\cpu\*.v src\memory\*.v src\system\*.v src\cache\*.v"
else
iverilog -I src/common -I src/cache -o build/vtx1_optimized_test src/vtx1_top_consolidated.v src/testbench/tb_vtx1_consolidated.v src/common/*.v src/cpu/*.v src/memory/*.v src/system/*.v src/cache/*.v
fi
silent: true
os-run-optimized:
desc: Run optimized test (OS aware)
cmds:
- |
if [ "${OS}" = "windows" ]; then
powershell -Command "if ($LASTEXITCODE -eq 0) { Write-Host 'Running optimized test with I2C fixes...' -ForegroundColor Green; .\build\vtx1_optimized_test } else { Write-Host 'Compilation failed' -ForegroundColor Red }"
else
./build/vtx1_optimized_test || echo "Compilation failed"
fi
silent: true
os-doc-arch:
desc: Generate architecture PDF (OS aware)
cmds:
- |
if [ "${OS}" = "windows" ]; then
asciidoctor-pdf --theme docs/Architecture.yml -r asciidoctor-diagram -o "{{.RELEASE_DIR}}/vtx1-architecture.pdf" docs/Architecture.adoc
else
export GEM_HOME="$HOME/.gem"; export PATH="$GEM_HOME/ruby/$(ruby -e 'print RUBY_VERSION')/bin:$PATH"; \
asciidoctor-pdf --version; \
asciidoctor-pdf --theme docs/Architecture.yml -r asciidoctor-diagram -o "{{.RELEASE_DIR}}/vtx1-architecture.pdf" docs/Architecture.adoc
fi
silent: true
os-doc-asm:
desc: Generate assembler PDF (OS aware)
cmds:
- |
if [ "${OS}" = "windows" ]; then
asciidoctor-pdf --theme src/assembler/docs/assembler.yml -r asciidoctor-diagram -o "{{.RELEASE_DIR}}/vtx1-assembler.pdf" src/assembler/docs/assembler.adoc
else
export GEM_HOME="$HOME/.gem"; export PATH="$GEM_HOME/ruby/$(ruby -e 'print RUBY_VERSION')/bin:$PATH"; \
asciidoctor-pdf --version; \
asciidoctor-pdf --theme src/assembler/docs/assembler.yml -r asciidoctor-diagram -o "{{.RELEASE_DIR}}/vtx1-assembler.pdf" src/assembler/docs/assembler.adoc
fi
silent: true