EmbeddedRelated.com
Forums

EDK speed issue

Started by Fred August 9, 2007
Every time I make a minor change to one of my local pcores I have to do a 
"Clean Netlist" to ensure that the change is carried out.  I find this very 
painful since it then rebuilds all the other IPs.

Is there a way I can just compile the changed file?

Is it more efficient to use a .vhdl file or a .ngd which I can generate with 
ISE.  Would this save much time? 


Fred wrote:
> Every time I make a minor change to one of my local pcores I have to do a > "Clean Netlist" to ensure that the change is carried out. I find this very > painful since it then rebuilds all the other IPs. > > Is there a way I can just compile the changed file? > > Is it more efficient to use a .vhdl file or a .ngd which I can generate with > ISE. Would this save much time? > >
The "OPTION CORE_STATE=DEVELOPMENT", mentioned elsewhere, will cause that particular core to always be recompiled, regardless of whether it has changed (at least last time I tried it). Probably not what you want. Are you still using the GUI? If you have abandoned that, then you can edit the makefiles by hand to do this. EDK uses plain makefiles, so it is puzzling why they don't already handle such a simple task. Anyway, in system_incl.make, immediately after PROGRAMCLEAN_TARGETS = ppc405_1_default_programclean I added entries like: MY_DDR_CLOCKS_IMPLN = implementation/my_ddr_clocks_wrapper.ngc MY_DDR_CLOCKS_FILES = pcores/ddr_clocks_v1_00_a/hdl/vhdl/ddr_clocks.vhd \ pcores/ddr_clocks_v1_00_a/data/ddr_clocks_v2_1_0.mpd \ pcores/ddr_clocks_v1_00_a/data/ddr_clocks_v2_1_0.pao MY_REGS_IMPLN = implementation/my_regs_wrapper.ngc MY_REGS_FILES = pcores/plb_regs_v1_00_a/hdl/vhdl/regs_core.vhd \ pcores/plb_regs_v1_00_a/hdl/vhdl/plb_ipif_ssp1.vhd \ pcores/plb_regs_v1_00_a/hdl/vhdl/plb_regs.vhd \ pcores/plb_regs_v1_00_a/data/plb_regs_v2_1_0.mpd \ pcores/plb_regs_v1_00_a/data/plb_regs_v2_1_0.pao MY_WRAPPER_NGC_FILES = $(MY_DDR_CLOCKS_IMPLN) \ $(MY_BITS_IMPLN) MY_DEVELOPMENT_FILES = $(MY_DDR_CLOCKS_FILES) \ $(MY_REGS_FILES) Then in system.make, I added immediately after: ################################################################# # HARDWARE IMPLEMENTATION FLOW ################################################################# $(MY_DDR_CLOCKS_IMPLN): $(MY_DDR_CLOCKS_FILES) rm -f implementation/my_ddr_clocks_wrapper.ngc rm -f implementation/cache/my_ddr_clocks_wrapper.ngc $(MY_REGS_IMPLN): $(MY_REGS_FILES) rm -f implementation/my_regs_wrapper.ngc rm -f implementation/cache/my_regs_wrapper.ngc Then changed the lines (note the addition of MY_WRAPPER... and MY_DEVELOP...: implementation/$(SYSTEM).bmm \ $(CORE_WRAPPER_NGC_FILES): $(MHSFILE) __xps/platgen.opt \ $(MY_DEVELOPMENT_FILES) @echo "****************************************************" @echo "Creating system netlist for hardware specification.." @echo "****************************************************" platgen $(PLATGEN_OPTIONS) -st xst $(MHSFILE) $(POSTSYN_NETLIST): $(MY_WRAPPER_NGC_FILES) $(CORE_WRAPPER_NGC_FILES) implementation/$(SYSTEM).bmm @echo "Running synthesis..." bash -c "cd synthesis; ./synthesis.sh; cd .."
Hi Fred,

XPS keeps track of the .mhs settings for each core and stores a copy for it 
in implementation/cache

So what I usually do is to go in the implementation directory and deletes 
the files associated with the core.
So when I work with microblaze I delete the microblaze_0_wrapper.ngc in the 
implementation and in implementation/cache
In order to for a new system to be generated, I just touch the system.mhs 
file since this is a file that is used in the makefile.
Now just microblaze will be regenerated when I generated a bitfile.

On other option that I use with MicroBlaze is to change a parameter in the 
.mhs file which don't change the actual implementation.
Ex. if I don't have HW debug enabled, I can freely change the number of 
breakpoints in the .mhs.
XPS will see a difference of the parameter settings in the .mhs file 
compared to the cached version and will regenerate the core

G�ran

They are stored directly under the implementaion directory and in a 
subdirectory called
"Fred" <fred@n0spam.com> wrote in message 
news:46bba494$0$24750$da0feed9@news.zen.co.uk...
> Every time I make a minor change to one of my local pcores I have to do a > "Clean Netlist" to ensure that the change is carried out. I find this > very painful since it then rebuilds all the other IPs. > > Is there a way I can just compile the changed file? > > Is it more efficient to use a .vhdl file or a .ngd which I can generate > with ISE. Would this save much time? >
"G&#4294967295;ran Bilski" <goran.bilski@xilinx.com> wrote in message 
news:f9h3ki$d1v1@cnn.xilinx.com...
> Hi Fred, > > XPS keeps track of the .mhs settings for each core and stores a copy for > it in implementation/cache > > So what I usually do is to go in the implementation directory and deletes > the files associated with the core. > So when I work with microblaze I delete the microblaze_0_wrapper.ngc in > the implementation and in implementation/cache > In order to for a new system to be generated, I just touch the system.mhs > file since this is a file that is used in the makefile. > Now just microblaze will be regenerated when I generated a bitfile. > > On other option that I use with MicroBlaze is to change a parameter in the > .mhs file which don't change the actual implementation. > Ex. if I don't have HW debug enabled, I can freely change the number of > breakpoints in the .mhs. > XPS will see a difference of the parameter settings in the .mhs file > compared to the cached version and will regenerate the core >
I have tried deleting the files and directory in the "implementation" directory and this doesn't update the design. I have since noticed there is a synthesis directory and perhaps I should have deleted the files there as well. Many thanks for your help..
"Duane Clark" <junkmail@junkmail.com> wrote in message 
news:yYOui.38$Oo.33@newssvr17.news.prodigy.net...
> Fred wrote: >> Every time I make a minor change to one of my local pcores I have to do a >> "Clean Netlist" to ensure that the change is carried out. I find this >> very painful since it then rebuilds all the other IPs. >> >> Is there a way I can just compile the changed file? >> >> Is it more efficient to use a .vhdl file or a .ngd which I can generate >> with ISE. Would this save much time? > > The "OPTION CORE_STATE=DEVELOPMENT", mentioned elsewhere, will cause that > particular core to always be recompiled, regardless of whether it has > changed (at least last time I tried it). Probably not what you want. > > Are you still using the GUI? If you have abandoned that, then you can edit > the makefiles by hand to do this. EDK uses plain makefiles, so it is > puzzling why they don't already handle such a simple task. > > Anyway, in system_incl.make, immediately after > PROGRAMCLEAN_TARGETS = ppc405_1_default_programclean > I added entries like: > > MY_DDR_CLOCKS_IMPLN = implementation/my_ddr_clocks_wrapper.ngc > MY_DDR_CLOCKS_FILES = pcores/ddr_clocks_v1_00_a/hdl/vhdl/ddr_clocks.vhd \ > pcores/ddr_clocks_v1_00_a/data/ddr_clocks_v2_1_0.mpd \ > pcores/ddr_clocks_v1_00_a/data/ddr_clocks_v2_1_0.pao > > MY_REGS_IMPLN = implementation/my_regs_wrapper.ngc > MY_REGS_FILES = pcores/plb_regs_v1_00_a/hdl/vhdl/regs_core.vhd \ > pcores/plb_regs_v1_00_a/hdl/vhdl/plb_ipif_ssp1.vhd \ > pcores/plb_regs_v1_00_a/hdl/vhdl/plb_regs.vhd \ > pcores/plb_regs_v1_00_a/data/plb_regs_v2_1_0.mpd \ > pcores/plb_regs_v1_00_a/data/plb_regs_v2_1_0.pao > > MY_WRAPPER_NGC_FILES = $(MY_DDR_CLOCKS_IMPLN) \ > $(MY_BITS_IMPLN) > > MY_DEVELOPMENT_FILES = $(MY_DDR_CLOCKS_FILES) \ > $(MY_REGS_FILES) > > Then in system.make, I added immediately after: > ################################################################# > # HARDWARE IMPLEMENTATION FLOW > ################################################################# > > $(MY_DDR_CLOCKS_IMPLN): $(MY_DDR_CLOCKS_FILES) > rm -f implementation/my_ddr_clocks_wrapper.ngc > rm -f implementation/cache/my_ddr_clocks_wrapper.ngc > > $(MY_REGS_IMPLN): $(MY_REGS_FILES) > rm -f implementation/my_regs_wrapper.ngc > rm -f implementation/cache/my_regs_wrapper.ngc > > Then changed the lines (note the addition of MY_WRAPPER... and > MY_DEVELOP...: > > implementation/$(SYSTEM).bmm \ > $(CORE_WRAPPER_NGC_FILES): $(MHSFILE) __xps/platgen.opt \ > $(MY_DEVELOPMENT_FILES) > > @echo "****************************************************" > @echo "Creating system netlist for hardware specification.." > @echo "****************************************************" > platgen $(PLATGEN_OPTIONS) -st xst $(MHSFILE) > > $(POSTSYN_NETLIST): $(MY_WRAPPER_NGC_FILES) $(CORE_WRAPPER_NGC_FILES) > implementation/$(SYSTEM).bmm > @echo "Running synthesis..." > bash -c "cd synthesis; ./synthesis.sh; cd .."
Many thanks for your reply. I've been aware of these make files but I've always been reluctant to make any changes in fear of the possible consequences. I find the EDK system very fickle and it's not the first time I've had to reload a saved copy! Perhaps this is the time I ought to start! Many thanks again for your trouble and will later digest the contents of your post. Greatly appreciated.
On Aug 10, 2:28 pm, "Fred" <f...@n0spam.com> wrote:
> "G=F6ran Bilski" <goran.bil...@xilinx.com> wrote in message > > news:f9h3ki$d1v1@cnn.xilinx.com... > > > > > Hi Fred, > > > XPS keeps track of the .mhs settings for each core and stores a copy for > > it in implementation/cache > > > So what I usually do is to go in the implementation directory and delet=
es
> > the files associated with the core. > > So when I work with microblaze I delete the microblaze_0_wrapper.ngc in > > the implementation and in implementation/cache > > In order to for a new system to be generated, I just touch the system.m=
hs
> > file since this is a file that is used in the makefile. > > Now just microblaze will be regenerated when I generated a bitfile. > > > On other option that I use with MicroBlaze is to change a parameter in =
the
> > .mhs file which don't change the actual implementation. > > Ex. if I don't have HW debug enabled, I can freely change the number of > > breakpoints in the .mhs. > > XPS will see a difference of the parameter settings in the .mhs file > > compared to the cached version and will regenerate the core > > I have tried deleting the files and directory in the "implementation" > directory and this doesn't update the design. I have since noticed there=
is
> a synthesis directory and perhaps I should have deleted the files there as > well. > > Many thanks for your help..
You do not need to delete anything in the sysnthesis directory. If you want to force the rebuild of a pcore, delete its .ngc in both implementation and implementation/cache, and delete the sub directory in implementation that is named after the pcore. Get rid of those three things, and EDK will remake the core. Regards, John McCaskill www.fastertechnology.com