Rådgivning søges Post sted og rute fejl!

S

sixdegrees

Guest
Hej,
Jeg bruger en Spartan 3 FPGA bord og jeg har problemer i Post Sted n Rute simulation bruger Xilinx ISE 7.1i og ModelSim XE 6.0aI har unødvendige fejl der forårsager affaldsjournal udgange før produktionen endeligt afregner.Ikke kun i store design (jeg designe IP centrale for en DSP proc.) Hvis jeg instantiate et enkelt register, stillingen PNR simulation resultater viser fejl.

Nedenfor er den kode og testbench en enkel 8bit register.

«tidshorisont 1ns / 1ps

modul toppen (i, CLK, nulstillet, enb, out);

input [7:0] i;
input CLK;
input nulstillet, enb;

output [7:0] ud;

reg [7:0] ud;

altid @ (posedge CLK)
begynd
if (nulstilling)
ud <= 8'b0;
ellers hvis (enb)
ud <= i;
anden
ud <= out;
endeendmodule

modul test_top_v;

/ / Indgange
reg [7:0] i;
reg CLK;
reg nulstillet, enb;

/ / Outputs
wire [7:0] ud;

/ / Instantiate enheden under Test (UUT)
top UUT (
. in (i),
. CLK (CLK),
. RESET (nulstilling)
. enb (enb),
. ud (out)
);
altid # 25 CLK = ~ CLK;
indledende begynde
/ / Initialiser Indgange
i = 0;
CLK = 0;
enb = 0;
reset = 1;

/ / Vent 100 ns for global reset til slut
# 100;
# 50 reset = 0;

/ / Tilføj stimulus her

# 50 enb = 1;
i = 8'b00000001;
# 50 enb = 0;

# 180 enb = 1;
i = 8'b11111111;
# 50 enb = 0;
# 100 $ stop;
endeendmodule

Jeg får output fejl når 'in' værdier skifter fra 8'h1 til 8'hFF.

Kan nogen plz give mig nogle råd om hvordan man kommer omkring alle disse problemer og eventuelle links / henvisninger for at få et solidt og perfekte design.Jeg synes at få den tanke, at FPGA kodende for gennemførelsen er en ganske anden Boldspil med hensyn til funktionel simulation

Kool

 
Jeg dirigeres dit design med ISE 8.1.03i og gjorde en post-rute simulation i ModelSim 6.2a.Jeg ser ikke noget problem.

Vær omhyggelig med ikke at forårsage en hold-tid krænkelse.Din 'i' ændringer til 255 kun et par nanosekunder efter uret.Det
er som regel fint, men afhængigt af din IOB konfiguration, flop placering og ur / signal routing, det kunne være et problem.

Sørg for at installere den nyeste service pack til 7.1i.Version 7 startede meget buggy.
Beklager, men du skal login for at se denne tilslutningskrav

 
Hej!
Tak, fordi du tog den ulejlighed.
Jeg vedhæfter simuleringen bølgeform som jeg got.Please se vedlagte jpg fil.
Jeg bruger ISE 7.1i Service Pack 4 og dont KNW om jeg skal bruge 8.1i eller ej.

Please clarify

 
Intet problem!Du er simpelthen at se de forskellige formering forsinkelser fra din 8-bit 'out "register til output puder.Din router sandsynligvis placeres registeret i input IOBs (hvilket giver forudsigelige input setup / hold timing), så de ruter til output puder har forskellige længder.Brug FPGA Editor at se de fysiske indretning.

Hvis du vil se de forsinkelser mere klart i ModelSim, udvide de enkelte bits og zoom i vandret.Nedenfor er min skærm med 1ns nettet.

Måske du kunne tilføje et output register til dit design.Så alle dine input og output signaler vil have skarpe timing og immunitet over for routing forsinkelser.Også se IOB constraint i din Begrænsninger Guide.

Af den måde, hvis du trimme dine JPEG eller GIF til 800 pixel i bredden, vil displayet automatisk.
Beklager, men du skal login for at se denne tilslutningskrav

 
Hi @ echo47

Jeg har brugt en brugerdefineret UCF-fil, og jeg tror ikke, at der er nogen sandsynlighed for router placere ud med i værdier.Også jeg går ud fra du har set min vedlagte bølgeform fordi jeg kan absolut se et problem der.

Den ucf for Spartan 3 XC3s5000 baseret bord er:

# PACE: Start of PACE I / O-Pin Assignments
NET "CLK" LOC = "AH15";
NET "Reset" LOC = "AG26";
NET "i <0>" LOC = "AH29";
NET "i <1>" LOC = "AJ27";
NET "i <2>" LOC = "AJ26";
NET "i <3>" LOC = "AJ25";
NET "i <4>" LOC = "AK24";
NET "i <5>" LOC = "AK23";
NET "i <6>" LOC = "AK22";
NET "i <7>" LOC = "AJ20";
NET "out <0>" LOC = "E8";
NET "out <1>" LOC = "E9";
NET "out <2>" LOC = "F11";
NET "out <3>" LOC = "F12";
NET "out <4>" LOC = "F13";
NET "out <5>" LOC = "F14";
NET "out <6>" LOC = "E15";
NET "out <7>" LOC = "F16";<img src="http://images.elektroda.net/30_1166414372.GIF" border="0" alt=""/>
 
(Jeg har tilføjet endnu et par ord til mine tidligere indlæg.)

Din nye udvidet bølgeform klart viser de forskellige formering forsinkelser.Registret er bestemt ikke i produktionen IOBs.Det
er enten i indtastningsfeltet IOBs eller logikken stof.Prøv FPGA Editor - Jeg finder det særdeles værdifuldt for forståelsen af sted-og-rute opførsel.Også se din "IOB Egenskaber" i din "Mapping Rapport File" - det viser, hvilke IOBs har tildelt registre.

Din "LOC" begrænsninger specificere kun pin numre.De ikke kontrollere, hvor routeren sætter register.

Jeg kan se du har fundet en anden måde at indsætte et billede i din besked!
Sidst redigeret af echo47 den
18. december 2006 6:13; redigeret 1 gang i den samlede

 
Så vær venlig at fortælle mig, hvordan kan jeg vide, om mit design er korrekt eller ej, om jeg har et problem eller ej, og hvordan man kan gøre dette register værdier gå til output i stedet eller i IOB's eller logik stof som du nævner.Også jeg kan se værdien af 87 i din 'out "signal som definitivt shouldn't være der tror jeg.Please clarify hvis, der formodes at være der.

Også jeg er helt forvirret over, hvordan du kommer rundt om opsætning og hold krænkelser, som jeg får.Er der nogen måde at forstå den nøjagtige registre som har disse krænkelser.Min ModelSim synes at give kun indlæg som:

Error: C: / Xilinx / verilog / src / simprims / X_FF.v (52): $ hold (posedge CLK:
492.572 ps, posedge I & & & (in_clk_enable == 1):
492.807 ps, 381 ps);
# Time: 492807 ps Iteration: 2 Instans: / tb_reg_file_v/uut/Ram_2_38_3110

Men jeg kan ikke forstå, hvad betyder, at 52 i fejlen betyder, og hvad er dette X_FF.v fil, og hvordan kan jeg komme uden om dette problem.

Og alle ser ud til at starte et sted, jeg har været her et par dage, så vil gradvist indhente.Tilføjes efter 23 minutter:Og også IOB egenskaber er knyttet hermed:

Afsnit 6 - IOB Egenskaber
--------------------------

------------------------------------------------- -------------------------------------------------- ---------------------
| IOB Name | Type | Direction | IO Standard | Drive | dræbte | Fo (s) | modstand | IOB |
| | | | | Styrke | Procentsats | | | Delay |
------------------------------------------------- -------------------------------------------------- ---------------------
| CLK | IOB | INPUT | LVCMOS25 | | | | | |
| Enb | IOB | INPUT | LVCMOS25 | | | | | |
| I <0> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| I <1> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| I <2> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| I <3> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| I <4> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| I <5> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| I <6> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| I <7> | IOB | INPUT | LVCMOS25 | | | INFF1 | | IFD |
| Ud <0> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Ud <1> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Ud <2> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Ud <3> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Ud <4> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Ud <5> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Ud <6> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Ud <7> | IOB | OUTPUT | LVCMOS25 | 12 | SLOW | | | |
| Nulstille | IOB | INPUT | LVCMOS25 | | | | | |
------------------------------------------------- -------------------------------------------------- --------------------- Det viser klart, at der udsendes IOBs og hverken input IOB eller logik stof som du nævner, jeg er ganske overrasket over den kendsgerning, at en klart angivet produktion vil blive remapped som input efter Mapping, jeg er ikke bekendt med nogen router, der gør at jeg kan være galt, så kan du uddybe din begrundelse lidt med nogen eksempler.

 
Disse ulige formering forsinkelser kaldes "påvirke".(A "problem" er et noget anderledes fænomen.) Påvirke sker overalt i den virkelige verden til en vis grad, så det
er meget almindeligt at se weird bus værdier for et par hundrede picoseconds.At der faktisk sker inde i FPGA, og det
er helt normalt.Vi ingeniører undgå påvirke-relaterede hovedpine ved hjælp synkrone design.

Dit design synes egentlig, medmindre din destination enhed kræver strammere påvirke kontrol.Hvis det gør, så kan du tilføje et register til output IOBs.

Når du kører en post-rute simulering.Din netlist bliver udvidet til et større ekstremt detaljerede HDL fil fuld af lavaktivt Xilinx primitiver.Kig efter denne fil i dit projekt mappe.Det kan være meget vanskeligt at genkende din oprindelige design i denne fil, men det er, hvad ModelSim er simulering.Din fejlmeddelelse er at henvise til en timing problem med en X_FF flip-flop primitive navngivet / tb_reg_file_v/uut/Ram_2_38_3110.De "52" henviser til en linje nummer i Xilinx's Verilog model, der beskriver, at flip-flop opførsel.

Din kortlægning rapport viser * input * registre.Det er, hvad "INFF1" forstås i Fo (e) kolonne.Den Mapper kan lægge registrene på steder, der kan synes overraskende, men er funktionelt korrekte.Disse sted kan være uden relation til dine signal navne (som "i" og "out") eller din Verilog havn retninger (såsom "input" og "output").Hvis du ønsker at nail down registret placering, skal du bruge begrænsninger.

Af den måde, jeg meget sjældent køre post-ruten simuleringer.Jeg normalt oprette et fuldt synkrone design, og køre adfærdsdata simuleringer.Så jeg angive et ur constraint,
kør sted-og-rute, og hvis det opfylder timing Jeg er færdig.

 
Hi echo47!

Citat:

Jeg er virkelig taknemmelig for denne vidunderlige interaktion, jeg virkelig sætter pris på din hjælp

 
the skew on data signals, it does not necessarily control
the skew.

Synkron design tolererer
påvirke på data signaler, det ikke nødvendigvis kontrollere
påvirke.Det ure alle dine flops samtidigt, så din design arbejder pålideligt trods mange forskellige formering forsinkelser.(Uret netto skal have lav påvirke.)

Deres andet simulation displayet ikke viser tidsskalaen.Min simulation viser ca 800ps af påvirke.Det
er ikke ret meget.Er det virkelig skaber du et problem?

Du kan minimere produktionen påvirke ved hjælp af output IOB registre.Dette eliminerer routing forsinkelser fra output timing.Du sikkert ønsker at fastholde de input IOB registre fordi de giver nice forudsigelig input setup / hold timing.

8-bit registers in the HDL.

Så vi har brug for to
8-bit registre i HDL.Din Xilinx Mapper bør smart nok til automatisk at placere en af dem i den indgående IOBs, og den anden i output IOBs.(Pas på, at standard Mapper opførsel er configurable.) Selvfølgelig er det nye register vil forsinke data ved en taktcyklus.
Code:

modul toppen (i, CLK, nulstillet, enb, out);

input [7:0] i;

input CLK;

input nulstillet, enb;

reg [7:0] a / / den Mapper skal placere denne i input IOBs

output reg [7:0] ud; / / den Mapper bør sætte dette i output IOBsaltid @ (posedge CLK)

begynd

if (nulstilling)

a <= 8'b0;

ellers hvis (enb)

a <= i;

anden

a <= a;

ud <= a;

ende

endmodule
 

Welcome to EDABoard.com

Sponsor

Back
Top