Iverilogmakefile: Difference between revisions
From HacDC Wiki
Williamgibb (talk | contribs) No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
---- | |||
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;"> | |||
---- | |||
=[http://ipelasuq.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]= | |||
---- | |||
=[http://ipelasuq.co.cc CLICK HERE]= | |||
---- | |||
</div> | |||
This is made for the [[FPGA_Workshop|Digital Design and FPGA workshop]] run in Fall 2009. | This is made for the [[FPGA_Workshop|Digital Design and FPGA workshop]] run in Fall 2009. | ||
<br> | |||
== makefile == | == makefile == | ||
Assumptions: You have iverilog, vvp and gtkwave in your $PATH. iverilog and vvp are the Icarus Verilog package. gtkwave is the GTKWave+ package. | Assumptions: You have iverilog, vvp and gtkwave in your $PATH. iverilog and vvp are the Icarus Verilog package. gtkwave is the GTKWave+ package. | ||
Line 8: | Line 16: | ||
* Change the TESTBENCH macro to include your verilog testbench. | * Change the TESTBENCH macro to include your verilog testbench. | ||
* Change the TBOUTPUT macro to the name of the file your dumping your testbench output too. | * Change the TBOUTPUT macro to the name of the file your dumping your testbench output too. | ||
<br> | |||
The posted makefile shows the TOOL INPUT macros pre-populated for targeting an Arithmetic Logic Unit (alu). | The posted makefile shows the TOOL INPUT macros pre-populated for targeting an Arithmetic Logic Unit (alu). | ||
<pre> | |||
############################################################################### | ############################################################################### | ||
# | # | ||
# ICARUS VERILOG & GTKWAVE MAKEFILE | # ICARUS VERILOG & GTKWAVE MAKEFILE | ||
# MADE BY WILLIAM GIBB FOR HACDC | # MADE BY WILLIAM GIBB FOR HACDC | ||
Line 19: | Line 27: | ||
# USE THE FOLLOWING COMMANDS WITH THIS MAKEFILE | # USE THE FOLLOWING COMMANDS WITH THIS MAKEFILE | ||
# "make check" - compiles your verilog design - good for checking code | # "make check" - compiles your verilog design - good for checking code | ||
# "make simulate" - compiles your design+TB & simulates your design | # "make simulate" - compiles your design+TB & simulates your design | ||
# "make display" - compiles, simulates and displays waveforms | # "make display" - compiles, simulates and displays waveforms | ||
# | # | ||
Line 53: | Line 61: | ||
display: $(TBOUTPUT) | display: $(TBOUTPUT) | ||
$(VIEWER) $(TBOUTPUT) & | $(VIEWER) $(TBOUTPUT) & | ||
#MAKE DEPENDANCIES | #MAKE DEPENDANCIES | ||
$(TBOUTPUT): $(COUTPUT) | $(TBOUTPUT): $(COUTPUT) | ||
Line 60: | Line 68: | ||
$(COUTPUT): $(TESTBENCH) $(SRC) | $(COUTPUT): $(TESTBENCH) $(SRC) | ||
$(COMPILER) $(COFLAGS) $(COUTPUT) $(TESTBENCH) $(SRC) | $(COMPILER) $(COFLAGS) $(COUTPUT) $(TESTBENCH) $(SRC) | ||
</pre> | |||
== convenient file copy script == | == convenient file copy script == | ||
Line 66: | Line 74: | ||
Convenient file to copy the makefile from ~/resources/makefile to your current directory. copy the script into a file, chmod +x the file and place the file in your $PATH. this assumes that ~/resources/makefile does not have write permissions granted to it. | Convenient file to copy the makefile from ~/resources/makefile to your current directory. copy the script into a file, chmod +x the file and place the file in your $PATH. this assumes that ~/resources/makefile does not have write permissions granted to it. | ||
<pre> | |||
#!/bin/bash | #!/bin/bash | ||
# | # | ||
Line 84: | Line 92: | ||
echo "You don't have the makefile at $fileofjustice" | echo "You don't have the makefile at $fileofjustice" | ||
fi | fi | ||
</pre> | |||
[[Category:FPGAWorkshop]] | [[Category:FPGAWorkshop]] |
Revision as of 08:17, 24 November 2010
This is made for the Digital Design and FPGA workshop run in Fall 2009. <br>
makefile
Assumptions: You have iverilog, vvp and gtkwave in your $PATH. iverilog and vvp are the Icarus Verilog package. gtkwave is the GTKWave+ package.
In order to use this makfile, the TOOL INPUT section must be modified to match your needs. This involves the following
- Change the SRC macro to include your verilog source code files.
- Change the TESTBENCH macro to include your verilog testbench.
- Change the TBOUTPUT macro to the name of the file your dumping your testbench output too.
<br> The posted makefile shows the TOOL INPUT macros pre-populated for targeting an Arithmetic Logic Unit (alu). <pre>
- ICARUS VERILOG & GTKWAVE MAKEFILE
- MADE BY WILLIAM GIBB FOR HACDC
- [email protected]
- USE THE FOLLOWING COMMANDS WITH THIS MAKEFILE
- "make check" - compiles your verilog design - good for checking code
- "make simulate" - compiles your design+TB & simulates your design
- "make display" - compiles, simulates and displays waveforms
-
- CHANGE THESE THREE LINES FOR YOUR DESIGN
- TOOL INPUT
SRC = alu.v alu_func.v alu_regn.v dff.v TESTBENCH = alu_tb.v TBOUTPUT = waves.lxt #THIS NEEDS TO MATCH THE OUTPUT FILE #FROM YOUR TESTBENCH
- BE CAREFUL WHEN CHANGING ITEMS BELOW THIS LINE
- TOOLS
COMPILER = iverilog SIMULATOR = vvp VIEWER = gtkwave
- TOOL OPTIONS
COFLAGS = -v -o SFLAGS = -v SOUTPUT = -lxt #SIMULATOR OUTPUT TYPE
- TOOL OUTPUT
COUTPUT = compiler.out #COMPILER OUTPUT
- MAKE DIRECTIVES
check : $(TESTBENCH) $(SRC) $(COMPILER) -v $(SRC)
simulate: $(COUTPUT) $(SIMULATOR) $(SFLAGS) $(COUTPUT) $(SOUTPUT)
display: $(TBOUTPUT) $(VIEWER) $(TBOUTPUT) &
- MAKE DEPENDANCIES
$(TBOUTPUT): $(COUTPUT) $(SIMULATOR) $(SOPTIONS) $(COUTPUT) $(SOUTPUT)
$(COUTPUT): $(TESTBENCH) $(SRC) $(COMPILER) $(COFLAGS) $(COUTPUT) $(TESTBENCH) $(SRC) </pre>
convenient file copy script
Convenient file to copy the makefile from ~/resources/makefile to your current directory. copy the script into a file, chmod +x the file and place the file in your $PATH. this assumes that ~/resources/makefile does not have write permissions granted to it.
<pre>
- !/bin/bash
- William Gibb
- Written for HacDC Digital Design and FPGA workshop
- variables!
fileofjustice=~/resources/makefile
- script it up!
echo "Copying iVerilog makfile" if [ -r $fileofjustice ]; then cp $fileofjustice . chmod u+w ./makefile echo "makefile copied" else echo "You don't have the makefile at $fileofjustice" fi </pre>