File Types:
(complete list on page 373 of the dev system reference guide)
prj - list of vhdl source files for input to xst
scr - script for input to xst
VHD - VHDL source file(s) - input to XST "synthesis" step
NGC - unknown acronym - XST netlist - output of XST "synthesis" step, input to "NGDbuild"
UCF - User Constraints File - input to "NGDbuild"
NGC - Native Generic Database - output of "NGDbuild", input to "mapping" step
NCD - Native Circuit Description - output of "mapping" step, input to place and route - also output of place and route
PCF - Physical Constraints File - output of "mapping" step
MRP - Map RePoprt - output of "mapping" step, human readable
ncd - native circuit description - output of "implementation" step
Design flow:
short version:
.vhd
synthesis
.ngc
ngdbuild (.ucf added here)
.ngd
mapping
.ncd .pcf
placing
.ncd
routing
.ncd
bitgen
.bit
project file *.prj contains the names of all vhdl files for the design:
---------
vhdl work somefile.vhd
vhdl work otherfile.vhf
---------
work is a default library, not sure what thats all about
our device is the 2s200pq208-5
first step: synthesis.... uses xst
remember to set enviroment vars:
source ~/xilinx/settings.sh"
xst has its own prompt, but the commands are long and you don't want to type them
use script mode... put the commands in a script file "foo.src", and run it like so:
~/xilinx/bin/lin/xst -ifn foo.scr -ofn log.file.name
that writes results to screen and log.file.name
So what goes in the script file?
----------------------------------------------------
set -tmpdir ./tmp
set -xsthdpdir ./work
run
-ifn foo.prj
-ifmt VHDL
-top some-entity-name
-ofn foo.ngc
-ofmt NGC
-p 2s200pq208-5
----------------------------------------------------
(there can be more - later)
The result of this is "foo.ngc"
Next step - build NGD
ngdbuild -uc constraints.ucf foo.ngc foo.ngd
note: maybe should pass the unplaced .bmm file into ngdbuild? -bm foo-unplaced.bmm
Next step - mapping
map foo.ngd
The biggie - place and route
par -r foo.ncd foo-placed.ncd foo.pcf
par -p foo-placed.ncd foo-routed.ncd foo.pcf
Make a bitfile
bitgen foo-routed.ncd foo.bit foo.pcf
Note: if there was an unplaced .bmmm file passed into ngdbuild, this should produce a placed one for use with data2mem?
Merge ROM/RAM content
see http://home.mnet-online.de/al/BRAM_Bitstreams.html
(this is not correct yet)
to view the contents of a bitfile:
data2mem -bm foo.bmm -bt foo.bit -d > viewable.file
to merde data from a data file into the bitfile"
data2mem -bm foo.bm -bt foo.bit -bd data.mem -o b merged.bit
format of .mem:
@addr data data data
@addr data data data
addresses are only needed where there is a break in the data stream, not on every line
data2mem -bm mapping.bmm -bd data.mem -bt foo.bit