Hi allerseits,
ich habe einen Design mit DCM (input clk=20ns, dcm-clk=10ns), der 'auf
Arbeit' unter ISE10.1+Windows prima simuliert (ModelSim).
Jetzt versuche ich zuhause unter Ubuntu8.04 die Simulation mit 'ghdl'
ans laufen zu bekommen. Dazu habe ich die Xilinx libs und den Design
folgendermassen compiliert und simuliert:
1
Unisim Library
2
--------------
3
mkdir ~/Misc/vhdl/unisim
4
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit unisims/unisim_VCOMP.vhd
5
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit unisims/unisim_VPKG.vhd
6
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit unisims/unisim_VITAL.vhd
7
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit unisims/unisim_SMODEL.vhd
Scheint prinzipiell zu funktionieren, ein BRAM kann ich prima
ansprechen. Nur aus dem DCM kommt keine Clock raus :o(
Hat da jemand einen Tipp fuer mich?
so, nachdem keine Antwort kam...
Ich habe mir einen kleinen Mini-DCM selbst geschrieben, der bedient den
clk-out sowie den locked.
Funzt erstmal prima, aber ich muss natuerlich eine neue entity in dem
Design einbinden, also m.E. nach suboptimal.
Wenn keiner 'ne Idee hat, dann ist das hier halt 'closed'...
Vielleicht ist die Lib irgendwie zu alt. Ich arbeite noch mit 9.2.0.4
unter Win XP, da geht die Simulation des DCM mit Modelsim auch nicht
korrekt (das Locked geht nie auf High).
Hi,
genau das Problem habe ich gerade gelöst.
ISE 11.4
Ausgegangen bin ich von der Anleitung.
http://aoa.vwthunderstorm.de/wiki/FPGA_Linux_Simulation
Leider ist das Simulationsskript in ganz ok. Die DCM ist im
Unterverzeichnis primitive von der Unisim und das muss mit angeben
werden.
PS:
Als Simulationsausgabe nutze das Format ghw das ist für VHDL besser.
Nochmal in plaintext. Bei meinem Webbrowser konnte ich die Shell nicht
online öffnen.
#---------------------------------------------
#remove library directories if they exist
cd ../libs
if [ -e work ]; then
rm -r work
fi
if [ -e unisim ]; then
rm -r unisim
fi
#make new directories
mkdir work
mkdir unisim
cd ..
echo 'compile xilinx unisim libraries'
ghdl -i --work=unisim --workdir=libs/unisim
/opt/Xilinx/11.1/ISE/vhdl/src/unisims/*.vhd
ghdl -i --work=unisim --workdir=libs/unisim
/opt/Xilinx/11.1/ISE/vhdl/src/unisims/primitive/*.vhd
echo 'compile design files'
ghdl -i --workdir=libs/work ../rtl/*.vhd
echo 'make a design'
ghdl -m -g -Plibs/unisim --workdir=libs/work --warn-default-binding
--warn-binding --warn-library --warn-body --warn-specs --warn-unused
--ieee=synopsys $2
echo '=================================='
echo 'design consists of following units:'
echo '----------------------------------'
ghdl -d --work=work --workdir=libs/work
echo '===================================='
echo 'detected following design hierarchy:'
echo '------------------------------------'
echo 'run the testbench'
ghdl -r $2 --disp-tree=inst --stop-time=20000ns --wave=waveform/$1.ghw
Ich habe zu GHDL und Unisim ein Dokument verfasst, um das Problem der
Einbindung der Unisim schneller in griff zu bekommen.
Es baut auf einen VGA Beispiel auf. Hier wird an der der Auflösung
erhöht und dabei kommt man nicht um eine Taktvervielfachung mit der DCM
nicht herum.
http://www.dossmatik.de/ghdl/ghdl_unisim.pdf
Hi,
um den alten Thread nochmal auszugraben...
Ich hatte mir bisher damit geholfen, dass ich einen 'hand-made' DCM
gebaut habe. Dieser wurde als component 'dcm_test' eingebunden, dann
waren in der Instantiierung halt 2 Zeilen, der originale DCM von Xilinx
und mein 'dcm_test' auszuwaehlen (mittels Kommentar).
Jetzt habe ich vor, einen Spartan3 Multiplier zu benutzen. Ich bin
wieder ueber das Problem gestolpert, dass GHDL nix sinnvolles rauswirft.
Ich hab's mal mit den Xilinx 11.1 Libs versucht, genauso wie Rene es 2
Posts weiter oben beschrieben hat. Aber es kommt nix raus....
Also Preisfrage: Wer hat GHDL mit den Xilinx Libs (DCM, Multiplier, ...)
am laufen und wie hat er das hingekriegt?
Ich vermute, es liegt an den Pikosekunden, die in den Libs immer wieder
verwendet werden. Und ich habe bisher noch nix gefunden, wie ich GHDL
diese Pikosek. Aufloesung beibringen kann.
Hat da jemand den Durchblick?
Gruss,
- berndl
so, ich habe jetzt mal den VHDL code aus der Xilinx Lib (bei mir 10.3)
fuer den Multiplier in eine eigene entity/component reinkopiert und die
eine Stelle an der was mit 'ps' stand durch '1 ns' ersetzt. Und: Nix
geht!
Ich kriege aus dem Multiplier MULT18X18S nur 'xxx' raus!
Also ich bin mit meinem Latein jetzt am Ende.......
Hallo Bernd,
hast du ein Screenshot von gtkwave?
oder eine Fehlermeldung
1. Also die DCM zumindest habe ich mit GHDL zum Laufen bekommen. Das
habe ich auch in dem Beispielcode genutzt.
2. Ich habe auch bereits Multiplikationen mit GHDL simuliert. Das war
z.B. in einem 2D Cosinustransformator für einen jpeg Decoder.
VHDL stellt mit der Numeric lib eine Multiplikation bereit, die auch
synthetisiert werden kann.
use IEEE.numeric_std.all;
Hi,
ich verwende ISIM statt GHDL. Damit gelingt die Simulation aller
Xilinx-Komponenten (habe auch GTX,TEMAC/EMAC,DSP48(E)...ausgiebigst
probiert) ohne Probleme.
EINZIGE VORAUSSETZUNG: die Auflösung muss immer auf 1PS gesetzt
werden (vieleicht klappen auch ein paar PS). Stellt man die Auflösung
wesentlich gröber, dann kriegt man nur noch XXXX.
Versuch also einfach mal, GHDL 1PS als Auflösung beizubringen.
Gruss
René D. schrieb:> 1. Also die DCM zumindest habe ich mit GHDL zum Laufen bekommen. Das> habe ich auch in dem Beispielcode genutzt.
DCM habe ich jetzt mit der 11.1 Lib noch nicht probiert, versuche ich
nochmal
>> 2. Ich habe auch bereits Multiplikationen mit GHDL simuliert. Das war> z.B. in einem 2D Cosinustransformator für einen jpeg Decoder.> VHDL stellt mit der Numeric lib eine Multiplikation bereit, die auch> synthetisiert werden kann.
Ja, das funktioniert, aber ich wollte die Komponente instantiieren.
Ich spiel heute nochmal ein bisschen rum...
@hobbie: Auf dem Rechner ist gar kein ISE drauf, ich habe nur die Libs
vom Windowsrechner gezogen. Und wie ich bei GHDL 1ps Aufloesung
einstelle koennte eines der Probleme sein. Ich habe dazu noch nix
gefunden...
Ich habe selbst noch kein GHDL benutzt, kenne uA aber
mehrere Anleitungen wie diese:
http://www.dossmatik.de/ghdl/ghdl_unisim_eng.pdf
Hier wird (angeblich erfolgreich) eine DCM simuliert.
Viel Spass
So, habe jetzt nochmal rumgespielt. Ich habe ein Ubuntu 8.04 (will
demnaechst auf 10.04 umsteigen). Die Xilinx Webpack Libraries von 11.1
liegen unter ~/Misc/vhdl/unisims. Da gibt es 'unisim_VCOMP.vhd' und
'unisim_VPKG.vhd'. Dazu noch ein Subdirectory 'primitive' mit den ganzen
Files (1043 Objekte).
Jetzt ein Directory '~/Misc/vhdl/unisim' angelegt, dann 'cd ~/Misc/vhdl'
und
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit
unisims/*.vhd
sowie
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit
unisims/primitive/*.vhd
Das funktionierte nur, nachdem ich in
'~/Misc/vhdl/unisims/primitive/RAM16BWE.vhd' die 6 Zeilen
-- variable Write_A_Write_B : memory_collision_type :=
Write_A_Write_B;
-- variable Read_A_Write_B : memory_collision_type :=
Read_A_Write_B;
-- variable Write_A_Read_B : memory_collision_type :=
Write_A_Read_B;
-- variable Write_B_Write_A : memory_collision_type :=
Write_B_Write_A;
-- variable Read_B_Write_A : memory_collision_type :=
Read_B_Write_A;
-- variable Write_B_Read_A : memory_collision_type :=
Write_B_Read_A;
auskommentiert habe. Das hatte ich auch schon mit den Libs von 10.3 so.
Der ganze Krempel liegt also kompliert unter '~/Misc/vhdl/unisim' sowie
im Source unter '~/Misc/vhdl/unisims'.
Flugs einen Design, der mit meinem 'hand-made' DCM funktioniert (und
auch in der echten HW sowie mit ModelSim XE und PE mit dem 'echten' DCM)
kompiliert und: => NIX. Keine Clock 2x aus dem DCM!
Also ich versteh's nicht. Meinen Design starte ich (ein subdirectory von
~/Misc/vhdl/ mit
* ghdl -i --workdir=work *.vhd
* ghdl -m --workdir=work -P../unisim --ieee=synopsys -fexplicit
<design_tb>
* ghdl -r <design_tb> --vcd=<design_tb>.vcd
Also, hat jemand mal einen Beispieldesign mit DCM (oder wahlweise auch
Multiplier), der mit den Xilinx Libraries und GHDL funktioniert? Ich
krieg's nicht hin...
Gruss+schoenen Sonntag noch,
- berndl
Um mehreres auszuschließen, habe es gerade mit der aktuellen Version
12.3 ausprobiert. Ich nutze Linux und habe ein Makefile für den Vorgang
DCM erstellt. Besser kann ich es nicht erkären.
Im makefile muss der Path zur ISE stimmen. Der sollte entsprechend
angepasst werden. Ich habe hier den Standard verwendet.
Das Makefile lädt die Testbench und ein VGA VHDL Beispiel, in der eine
DCM enthalten ist,von meiner Homepage herunter.
Dann wird GHDL angeschoben und die Simulation erstellt eine ghw Datei.
ghw ist für VHDL besser geeignet.
also
make
make view
und dann in gtkwave die entscheidenden Signal auswählen und darstellten.
Bernd du schaffst das noch.
Ich kenne jetzt auch nicht alle Optionen von GHDL. Ich glaube du musst
die unisim auch mit ghdl -i .... explizit auch einbinden.
Sodele,
hab' mal Renes Vorschlag befolgt und bin wie oben beschrieben
vorgegangen. Und: Funktioniert!
Jetzt faellt mir auf, dass ich die Xilinx Lib mit dem ghdl Schalter -a
kompiliert habe, bei Rene steht da -i.
Komisch nur, dass zumindest das BRAM auch mit meiner Methode
funktioniert, nicht hingegen DCM und Multiplier.
Also: Ich sehe ein, es geht. Danke fuer die Hilfen!
Gruss,
- berndl
So, nachdem Renes Design auch bei mir tut habe ich mal einen meiner
Designs nach gleichem Schema getestet: Tut nix! Und das obwohl die HW
damit schon 1-1/2 Jahre laeuft...
Hier mal mein Code zur DCM Instantiierung (clk ist die 50MHz Input
Clock, clk100 meine 2x FPGA Clock):
1
IBUFG_inst:IBUFG
2
genericmap(
3
IOSTANDARD=>"DEFAULT")
4
portmap(
5
O=>clkbuf,-- Clock buffer output
6
I=>clk-- Clock buffer input (connect directly to top-level port)
Super Bernd,
vieleicht kannst du mir auch mal helfen.
eigentlich müsste es auch mit -a gehen. Es scheint ein Problem in der
unisim zu sein. Xilinx ist hier nicht ganz sauber mit dem VHDL Standard.
René D. schrieb:> Super Bernd,
nee, nicht wirklich. Bei mir tut der DCM ja immer noch nicht...
Bisher habe ich nur gesehen, dass dein DCM funktioniert (50MHz ->
75MHz). Meiner (50 -> 100) haelt sich immer noch vornehm zurueck......
Klar, ich stripp den Code mal runter bis aufs Minimum und poste das mal
hier. Kann aber 1-2 Tage dauern bis ich dazu Zeit habe. Wuerde mich echt
interessieren was da schief laeuft...
Gruss+danke,
- berndl
Hi Duke,
hab' mich erstmal nicht getraut zu antworten, bevor ich die Simulation
angeschmissen habe :o)
Hier mal ein Spieldesign (dcm_test_tb) mit 3 Variationen des Xilinx DCM.
Die 3 Variationen sind:
* Renes DCM von weiter oben
* Mein DCM auch von weiter oben
* Ein am Freitag mit ISE10.3 und dem Wizard generierter DCM 2x Design
Das ganze mit den Xilinx 10.3 Libraries (liegen bei mir hier in einem
'Parallelverzeichnis' zum Design), die Library wie auch weiter oben
beschrieben compiliert.
Jetzt in meinem Target Verzeichnis (wo die .vhd Files liegen) folgendes
gemacht:
* mkdir work
* ghdl -i --workdir=work *.vhd
* ghdl -m --workdir=work -P../unisim --ieee=synopsys -fexplicit
dcm_test_tb
* ghdl -r dcm_test_tb --vcd=dcm_test_tb.vcd
* gtkwave dcm_test_tb.vcd &
Der Eingang ist clk50_in, die Ausgaenge sind clk75_rene_out,
clk100_berndl_out und xil_wiz_clk2x_out.
Renes clk75 funktioniert. Meine und auch die Xilinx-Wizard generierte 2x
Clock funktionieren nicht! In Modelsim funktioniert meine Clock, auch in
der echten HW seit 1-1/2 Jahren.
Hat da irgend jemand eine Idee?
Gruss,
- berndl
>> Hab ich was übersehen?>> Duke
Berndl hat drei DCM-Varianten.
Du must die Testbench nehmen und eine DCM. Du hast gleich alle drei in
das Projekt importiert. Ich hatte noch keine Zeit es mir genauer von
Berndl anzuschauen. Will die Woche es mir auch mal reinziehen.
Hey danke fuer eure Bemuehungen...
@duke: Die Xilinx Libs wie oben (post vom 29.5.2009, der Eingangspost)
compiliert (vorher die angemeckerten Zeilen in den Libs auskommentiert),
dann den Design wie im post vom 24.10.2010 compiliert (in dem Post steht
auch nochmal wie die Lib compiliert wurde). Tut bei mir syntaktisch
fehlerfrei. Das ganze mit den Libs von ISE 10
@all: Wenn ich Renes DCM nehme, den Teiler/Multiplier auf 2/4 setze,
dann kommt auch eine schoene 100MHz Clock raus.
Es muss also irgendwie an dem Clock2x Output des DCM liegen, da ist
naemlich Funkstille... Weil ja auch aus dem Xilinx erzeugten Teil (mit
dem Wizard) nix rauskommt... Unter Modelsim XE und PE auf Arbeit
funktioniert alles...
Gruss,
- berndl
ISIM habe ich noch nie probiert. Ich nehme aber mal an, dass das dort
funktioniert. Ist ja schliesslich die komplette Xilinx Toolchain. Die
Bloesse, dass da was nicht tut, werden sie sich sicher nicht geben.
Ich denke halt, dass sich GHDL mit der Beschreibung des DCM 2x (also der
'einfache' Taktverdoppler) da irgendwie verhaut. Aber ich habe leider
noch keinen Plan, was da schief geht...
Ich muss mir nochmal das Datenblatt nehmen und gucken, was an deiner und
meiner Implementierung des DCM unterschiedlich ist. Bei mir ist es ja
der clock2x, bei dir der eigentlich kompliziertere Teil mit
clock*mult/div...
Gruss,
- berndl
Hi Duke,
was ich erwartet habe. Mit ISIM geht es. Und, danke, meine
Implementierung verhaelt sich genauso wie die des Xilinx Wizards.
Also bezueglich GHDL: Irgendwas mit dem CLK2x output funktioniert da
nicht richtig. Ob's nun GHDL oder Xilinx ist, weiss ich nicht...
PS: Wenn du bei Renes DCM mal den Divisor auf 2 laesst und den
Multiplikator auf 4 setzt, dann wirst du eine wunderschoene 100MHz clock
(=2x) am Ausgang sehen...
Also ich hab's mal an die ghdl mailing list geschrieben, mit Verweis auf
den Thread hier. Evtl. schreibe ich das auch mal an Xilinx.
Danke fuer euer Interesse Jungs!
Gruss,
- berndl
Ok, also nochmal im Stenogramm:
ich habe hier ein Directory ~/Misc/vhdl
Darunter habe ich die Xilinx ISE 10 Library in einem Subdirectory
./unisims liegen. Dann mache ich:
mkdir ~/Misc/vhdl/unisim
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit
unisims/unisim_VCOMP.vhd
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit
unisims/unisim_VPKG.vhd
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit
unisims/unisim_VITAL.vhd
ghdl -a --work=unisim --workdir=unisim --ieee=synopsys -fexplicit
unisims/unisim_SMODEL.vhd
Also alles nach ./unisim compiliert. Bei den 10 und 11 Libraries musste
ich noch
(Achtung: in unisim_VITAL.vhd muessen die Zeilen
> - variable Read_A_Write_B : memory_collision_type := Read_A_Write_B;> - variable Write_A_Read_B : memory_collision_type := Write_A_Read_B;> - variable Write_B_Write_A : memory_collision_type := Write_B_Write_A;> - variable Read_B_Write_A : memory_collision_type := Read_B_Write_A;> - variable Write_B_Read_A : memory_collision_type := Write_B_Read_A;> +-- variable Write_A_Write_B : memory_collision_type := Write_A_Write_B;> +-- variable Read_A_Write_B : memory_collision_type := Read_A_Write_B;> +-- variable Write_A_Read_B : memory_collision_type := Write_A_Read_B;> +-- variable Write_B_Write_A : memory_collision_type := Write_B_Write_A;> +-- variable Read_B_Write_A : memory_collision_type := Read_B_Write_A;> +-- variable Write_B_Read_A : memory_collision_type := Write_B_Read_A;
auskommentieren.
Mein Design liegt in ~/Misc/hugo
Darin mache ich ein
mkdir ~/Misc/vhdl/hugo/work
Dann gehe ich nach 'hugo' und lege los:
ghdl -i --workdir=work *.vhd
ghdl -m --workdir=work -P../unisim --ieee=synopsys -fexplicit
<design_tb>
ghdl -r <design_tb> --vcd=<design_tb>.vcd
gtkwave <design_tb>.vcd &
(<design_tb> halt entsprechend der Testbench ersetzen...
Und dann arbeite ich damit. Also damit solltest du die Libs compilieren
koennen und auch den Design.
Wo hakt's denn bei dir?
Gruss,
- berndl
berndl schrieb:> Wo hakt's denn bei dir?
Das mit den verschiedenen Verzeichnissen/Laufwerken scheint unter cygwin
nicht so recht zu funktionieren. Daher hab ich alles von unisims in
einen lokalen Unterordner gesteckt.
Außerdem scheint Xilinx etwas aufgeräumt zu haben:
Dann hat er wegen den bindings rumgemosert. Das habe ich mit
--syn-binding in den Griff bekommen.
Jetzt scheitert es nur noch am Ausführen der Simulation (siehe Fehler
oben). Möglicherweise kommt er mit meinen 64 Bit nicht klar.
Duke
hmmm,
bei ISE 10 waren die Libs ja noch folgendermassen:
-> unisims
unisim_SECUREIP.vhd
unisim_SMODEL.vhd
unisim_VCOMP.vhd
unisim_virtex5_SMODEL.vhd
unisim_VITAL.vhd
unisim_VPKG.vhd
bei ISE 11 wars dann:
unisim_VCOMP.vhd
unisim_VPKG.vhd
primitive/*
(mit den ganzen primitives drin...)
Ich hab' das ganze sowohl mit den 11ern als auch mit den 10ern probiert,
und es hat, bis auf die bekannten Fehler in den Libs, problemlos
compiliert.
Gruss,
- berndl
Ich vermute es fehlt ein Eintrag in der Sensitve list in der DCM.
Hier ein Beispiel aus der DCM. In diesem Process müsste der Clock in die
sensitive list.
Die anderen Simulatoren vervollständigen die sensitve List automatisch
und GHDL triggert nicht, weil es nicht durch den Code "informiert" ist,
auf einen Flankenwechsel zu warten. Das wäre eine mögliche Erklärung.
gen_reset : process
begin
if (rising_edge(clock)) then
rst_reg(0) <= rst;
rst_reg(1) <= rst_reg(0) and rst;
rst_reg(2) <= rst_reg(1) and rst_reg(0) and rst;
end if;
wait on clock;
end process gen_reset;
René D. schrieb:> Ich vermute es fehlt ein Eintrag in der Sensitve list in der DCM
Nein, daran liegt es nicht. Die Prozesse im DCM-Modell haben alle ein
"wait on ...". Damit entfällt die sensitivity-list.
Bei Ergänzung hagelt es sonst diesen Fehler:
1
unisims/primitive/DCM.vhd:68:5: wait statement not allowed in a sensitized process
> unisims/primitive/DCM.vhd:68:5: wait statement not allowed in a
2
> sensitized process
3
>
>> Duke
Das geht leider nicht. Der Prozess ist sonst beidseitig terminiert. GHDL
kann es nicht und ob so etwas in VHDL erlaubt ist, wäre die Frage.
Ich habe das Problem auf die GHDL mailing list gesetzt. Mal sehen ob,
jemand noch ein paar Tricks hat.
Hallo zusammen,
ich hab' mich jetzt auch mal auf die GHDL mailing list setzen lassen.
Bin mal gespannt, was von der Seite kommt. Man koennte das ganze ja auch
mal Xilinx zukommen lassen, es riecht doch schon etwas danach, dass die
mit ihren Libraries ganz fies tricksen. Und da sie ja Bausteine
verkaufen wollen, sollte eine gute Simulatorunterstuetzung auch in ihrem
Interesse sein...
Gruss,
- berndl
berndl schrieb:> Hallo zusammen,>> ich hab' mich jetzt auch mal auf die GHDL mailing list setzen lassen.> Bin mal gespannt, was von der Seite kommt. Man koennte das ganze ja auch> mal Xilinx zukommen lassen, es riecht doch schon etwas danach, dass die> mit ihren Libraries ganz fies tricksen. Und da sie ja Bausteine> verkaufen wollen, sollte eine gute Simulatorunterstuetzung auch in ihrem> Interesse sein...>> Gruss,> - berndl
Ich sehe deine Eintrag nicht in der GHDL Mailing list.
Ich hatte das Thema bereit drauf gesetzt und bis jetzt keine Rückmeldung
erhalten.
ich war da noch nicht angemeldet, meine mail wurde also nur mal bei den
Leuten zur Diskussion gestellt. Aber da du es ja 'offiziel' eingekippt
hast ist's ja ok.
in der Mailing List habe ich gelesen, dass ein illegaler VHDL Construct
in der DCM beseitigt wurde. Ich hatte noch keine Zeit zu testen ob die
DCM jetzt besser läut. Es wäre sehr interessant, da die DCM häufig
benutzt wird.
Das wäre sehr interessant.
______________________________________________________________________
Between ISE 11.2 and 13.2 the module
DCM_CLKGEN
failed to compile for unisim as well as simprim. This is finally fixed
in ISE 13.3. The reason was an illegal VHDL construct (arithmetic
with mixed types, which is not allowed in VHDL) which is apparently
tolerated by most commercial VHDL simulators, but not accepted by
ghdl.
- Simulations of DCM's
This is known to be unstable at best. Between November 2009 and
November
2010 several postings on ghdl-discuss touched in this, look for the
threads
Xilinx Unisim DCM is not working.in GHDL
DCM from Xilinx unisim
My experience as of ISE 13.1 is that in general no output clock is
generated and that models with DCM's fail to work, and as far as I
know the issue was never resolved.