<whine mode on> Why is my source buried in the bowels of the project?

I've always found it awkward that when I create a project the various tempo
rary files the tool creates are at the top of the project tree and my files
are down at the end of a branch of the subdirectory tree. This sees so up
side down to me. I should be able to put all my source files in a simple d
irectory in the main project folder with all the tool specific files in a s
eparate directory not below and not above my folder. Then finding source a
nd backing it up is a breeze.
Of course I can always put my files anywhere I want them and just point the
tool to them. The tools tend to make this awkward and when the tool creat
es a boilerplate file where does it want to put it? In with the other tool
related files.
Then there are the various tool specific files that are still technically s
ource such as the pin connection file and the timing constraints. They nee
d to be with the rest of the source files too.
Not really talking about one tool. I mostly use Lattice, but I recall it i
s very similar to the previous Xilinx tools and I don't recall the Altera t
ools being any better in this regard either.
I guess I'm just out of step with the rest of the world. I wonder how the
tools of the various Chinese startups work in this regard?
--
  Rick C. 

  - Get 1,000 miles of free Supercharging 
 Click to see the full signature
Reply to
Rick C
Loading thread data ...
A copy of the files are sent immediately to Xi Jinping and his henchmen :-)
I too have trouble digging files out of the Lattice mire on occasion. Vivado uses a more logical structure (IMO) but there is so much of it that it's no easier to find stuff.
MK
Reply to
Michael Kellett
porary files the tool creates are at the top of the project tree and my fil es are down at the end of a branch of the subdirectory tree. This sees so upside down to me. I should be able to put all my source files in a simple directory in the main project folder with all the tool specific files in a separate directory not below and not above my folder. Then finding source and backing it up is a breeze.
he tool to them. The tools tend to make this awkward and when the tool cre ates a boilerplate file where does it want to put it? In with the other to ol related files.
source such as the pin connection file and the timing constraints. They n eed to be with the rest of the source files too.
is very similar to the previous Xilinx tools and I don't recall the Altera tools being any better in this regard either.
e tools of the various Chinese startups work in this regard?
When using Vivado, I would suggest using "non-project" mode. I use a TCL s cript. It gets the source files from the source directories (and does not make local copies) and writes any files to the work directories I've specif ied. The GUI I use only to look at placement or schematics of failing path s.
Reply to
Kevin Neilson
porary files the tool creates are at the top of the project tree and my fil es are down at the end of a branch of the subdirectory tree. This sees so upside down to me. I should be able to put all my source files in a simple directory in the main project folder with all the tool specific files in a separate directory not below and not above my folder. Then finding source and backing it up is a breeze.
he tool to them. The tools tend to make this awkward and when the tool cre ates a boilerplate file where does it want to put it? In with the other to ol related files.
source such as the pin connection file and the timing constraints. They n eed to be with the rest of the source files too.
is very similar to the previous Xilinx tools and I don't recall the Altera tools being any better in this regard either.
e tools of the various Chinese startups work in this regard?
Lattice, Xilinx, Altera and Microsemi can all be made to build FPGA project s in a way more like software projects are built, i.e. by starting out with the source and constraint files etc stored in the directory structure as y ou would like them, and instructing the tools to build to a programming fil e in a build directory that you specify. Then when you want to commit sourc es to version control you can ignore the build directory. But for this you need to read the manuals and do a bit of Tcl scripting.
I have written some Tcl scripts for my own projects that do this here: http s://
formatting link
with the aim of providing a fairly simple abstra ction over the underlying tools. From the example on the altera quartus pag e, you can see the level of abstraction:
set part 5CSEMA4U23C6
task new {fpga build -exe new} task build {fpga build -exe build} task conv {fpga build -exe conv} task conf {fpga build -exe conf} task prog {fpga build -exe prog} task clean {rmdir build}
project add fpga -type altera-quartus fpga src -lib my_lib -add lib/src/*.vhdl -lib my_fpga -add src/*.vhdl -add impl/* fpga build -buildDir build -part $part -name my_fpga
i.e. specify source files and constraints/settings (stored in impl/), then you can clean build, create project, build to bit file, convert bit file, c onfigure FPGA and program non-volatile configuration memory all from the co mmand line.
What I found is that other tools can more or less be abstracted the same wa y. For example see the Xilinx Vivado page.
Reply to
pault.eg
emporary files the tool creates are at the top of the project tree and my f iles are down at the end of a branch of the subdirectory tree. This sees s o upside down to me. I should be able to put all my source files in a simp le directory in the main project folder with all the tool specific files in a separate directory not below and not above my folder. Then finding sour ce and backing it up is a breeze.
the tool to them. The tools tend to make this awkward and when the tool c reates a boilerplate file where does it want to put it? In with the other tool related files.
ly source such as the pin connection file and the timing constraints. They need to be with the rest of the source files too.
it is very similar to the previous Xilinx tools and I don't recall the Alte ra tools being any better in this regard either.
the tools of the various Chinese startups work in this regard?
cts in a way more like software projects are built, i.e. by starting out wi th the source and constraint files etc stored in the directory structure as you would like them, and instructing the tools to build to a programming f ile in a build directory that you specify. Then when you want to commit sou rces to version control you can ignore the build directory. But for this yo u need to read the manuals and do a bit of Tcl scripting.
It's not just the scripting that needs to be done manually, it is also writ ing the various source files. The tools have appication specific editors w hich don't require you to learn the syntax, etc. They also have coverage t ools for the timing constraints. I am an intermittent user of the various tools and am often frustrated by the many specialized features that are req uired to be learned. Writing my own pin out descriptor files and timing fi les along with scripts is an awkward choice at best.
tps://
formatting link
with the aim of providing a fairly simple abst raction over the underlying tools. From the example on the altera quartus p age, you can see the level of abstraction:
d impl/*
n you can clean build, create project, build to bit file, convert bit file, configure FPGA and program non-volatile configuration memory all from the command line.
way. For example see the Xilinx Vivado page.
Thanks for your comments.
--
  Rick C. 

  + Get 1,000 miles of free Supercharging 
 Click to see the full signature
Reply to
Rick C
I dunno. I've mostly used Intel Quartus in the last few years, don't really know other tools that well currently.
Anyways, with Quartus I have a setup where I have quartus folder, src folder, sim folder. Sometimes also 'tools' or something for various scripts and whatnot. The quartus folder ends up somewhat messy since I put also all IP in there, sometimes under an IP folder but if it's just a single file from the Megawizard (or did they rename that?), then it stays in the quartus folder. Still, all the useless gunk quartus puts in db and incremental_db folders so those don't go in version control. Also, Quartus puts actual output files (binaries and reports) in an output_files folder by default.
I think back in the Xilinx ISE era my directory structure was pretty much like this too.
Reply to
Anssi Saari

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.