Consulenza cercato per via postale e difetti!

S

sixdegrees

Guest
Ciao,
Sto usando uno FPGA Spartan 3 bordo e mi hanno problemi nel Post Place n Route simulazione utilizzando Xilinx ISE 7.1i Modelsim e XE 6.0aI hanno difetti che provoca inutili rifiuti uscite finalmente uscita la prima regola.Non solo nei grandi disegni (io sono la progettazione di un IP core DSP proc.) Se i istanziare una semplice registrazione, il posto PNR risultati della simulazione mostra difetti.

Di seguito è riportato il codice e testbench per un semplice registro 8bit.

»calendario 1ns / 1PS

alto modulo (in clk, reset, ENB, out);

input [7:0] in;
input clk;
ingresso di reset, ENB;

output [7:0] out;

reg [7:0] out;

sempre @ (posedge clk)
iniziare
if (reset)
out <= 8'b0;
else if (ENB)
out <= in;
altro
out <= out;
fineendmodule

modulo test_top_v;

/ / Ingressi
reg [7:0] in;
reg clk;
reg reset, ENB;

/ / Outputs
filo [7:0] out;

/ / Istanzia l'unità sottoposta a prova (UUT)
top UUT (
. in (a),
. clk (clk),
. azzeramento (reset),
. ENB (ENB),
. out (uscita)
);
# 25 sempre clk clk = ~;
iniziale iniziare
/ / Initialize Ingressi
a = 0;
clk = 0;
ENB = 0;
reset = 1;

/ / Attesa di 100 ns globale reset per terminare
# 100;
# 50 di reset = 0;

/ /
Aggiunge stimolo qui

# 50 ENB = 1;
a = 8'b00000001;
# 50 ENB = 0;

# 180 ENB = 1;
a = 8'b11111111;
# 50 ENB = 0;
# 100 $ stop;
fineendmodule

Ottenere in uscita quando il glitches' in 'valori cambia da 8'h1 a 8'hFF.

Plz qualcuno può darmi qualche consiglio su come aggirare tutti questi problemi e tutti i link / riferimenti a un design robusto e perfetto.Mi sembra di avere l'idea che la codifica FPGA per la realizzazione è piuttosto una diversa ballgame per quanto riguarda la simulazione funzionale

Kool

 
I instradato il tuo disegno con ISE 8.1.03i e ha fatto un percorso post-simulazione in Modelsim 6.2a.Non vedo alcun problema.

Fare attenzione a non provocare una sospensione
a tempo violazione.Il tuo 'in' modifiche alla 255 a pochi nanosecondi dopo l'orologio.Che
di solito
è bene, ma a seconda della configurazione IOB, flop posizione, e l'orologio / instradamento del segnale, potrebbe essere un problema.

Assicurarsi di installare il service pack più recente per 7.1i.Versione 7 iniziato molto buggy.
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
Salve!
Ti ringraziamo per il disturbo.
Sono inerenti la simulazione di forme d'onda che mi got.Please vedi l'allegato file jpg.
Sto usando ISE 7.1i Service Pack 4 e dont KNW se io debba o non uso 8.1i.

Si prega di chiarire
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
Nessun problema!Siete semplicemente vedere i diversi ritardi di propagazione dal 8-bit 'fuori' registrarsi alla produzione dei cuscinetti.Il vostro router probabilmente collocato il registro in ingresso IOBs (fornendo in tal modo prevedibile ingresso setup / tenere i tempi), così le rotte per la produzione dei cuscinetti hanno diverse lunghezze.Usa FPGA Editor per visualizzare il layout fisico.

Per vedere più chiaramente i ritardi nel Modelsim, espandere i singoli bit e zoom in posizione orizzontale.Qui di seguito è il mio monitor con 1ns griglia.

Forse si potrebbe aggiungere un registro di uscita per il modello in questione.Poi tutti i segnali di ingresso e di uscita dovranno forte tempi di instradamento e immunità ritardi.Inoltre,
si veda la IOB vincolo nel tuo Vincoli Guida.

A proposito, se il vostro assetto JPEG o GIF a 800 pixel di larghezza, sarà visualizzato automaticamente.
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
Hi @ echo47

Ho utilizzato un file personalizzato UCF e non credo vi sia alcuna probabilità di immissione del router con OUT IN valori.Presumo che anche lei ha visto il mio allegato forma d'onda, perché posso vedere un problema esiste.

L'UCF per Spartan 3 XC3s5000 bordo è basata:

# PACE: Start of PACE I / O dei pin di collegamento
NET "clk" LOC = "AH15";
NET "reset" LOC = "AG26";
NET "in <0>" LOC = "AH29";
NET "in <1>" LOC = "AJ27";
NET "di <2>" LOC = "AJ26";
NET "in <3>" LOC = "AJ25";
NET "in <4>" LOC = "AK24";
NET "in <5>" LOC = "AK23";
NET "in <6>" LOC = "AK22";
NET "in <7>" LOC = "AJ20";
NET "fuori <0>" LOC = "E8";
NET "di <1>" LOC = "E9";
NET "fuori <2>" LOC = "F11";
NET "fuori <3>" LOC = "F12";
NET "fuori <4>" LOC = "F13";
NET "fuori <5>" LOC = "F14";
NET "fuori <6>" LOC = "E15";
NET "fuori <7>" LOC = "F16";<img src="http://images.elektroda.net/30_1166414372.GIF" border="0" alt=""/>
 
(Ho aggiunto un paio di parole per il mio messaggio precedente).

La tua nuova forma d'onda ampliato chiaramente mostra i diversi ritardi di propagazione.Il registro non è definitivamente nella produzione IOBs.E 'sia in ingresso o in IOBs la logica tessuto.Prova FPGA Editor - Trovo estremamente prezioso per la comprensione del luogo e rotta comportamento.Si veda anche il vostro "IOB Proprietà" nel suo "Rapporto File Mapping" - dimostra che IOBs hanno assegnato registri.

Il tuo "LOC" vincoli di specificare solo il numero di pin.Essi non di controllo in cui il router mette registro.

Vedo che hai trovato un altro modo per inserire un immagine nel tuo messaggio!
Ultimo a cura di echo47 il 18 dicembre 2006 6:13, edited 1 volta in totale

 
Quindi, per favore dimmi come faccio a sapere se il mio disegno è corretto o meno, se ho un problema o no e come fare questo vai a registrare valori di output invece o in IOB o logica tessuto come si parla.Inoltre non posso vedere il valore di 87 nel tuo 'out' del segnale che
shouldnt essere sicuramente ci credo.Si prega di chiarire che se si suppone che sia lì.

Anche io sono molto confuso su come aggirare il setup e tenere violazioni che sto ottenendo.Esiste un modo per capire l'esatta registri, che sono quelli che hanno violazioni.Il mio Modelsim sembra dare solo i messaggi del tipo:

Errore: C: / Xilinx / verilog / src / simprims / X_FF.v (52): $ tenere (posedge CLK: 492572 ps, posedge I & & & (in_clk_enable == 1): 492807 ps, 381 ps);
# Time: 492807 ps Iteration: 2 grado: / tb_reg_file_v/uut/Ram_2_38_3110

Ma non riesco a capire cosa che il 52 Errore nel mezzo e di ciò che è presente X_FF.v file, e come posso aggirare questo problema.

E tutti sembrano iniziare da qualche parte, sono stato qui per un paio di giorni in modo da raggiungere gradualmente.Aggiunto dopo 23 minuti:E anche il IOB proprietà sono allegati di seguito:

Sezione 6 - Proprietà IOB
--------------------------

------------------------------------------------- -------------------------------------------------- ---------------------
| IOB Nome | Tipo | Direzione | IO Standard | Drive | Slew |
Reg. (s) | Resistenza | IOB |
| | | | | Forza | Vota | | | Ritardo |
------------------------------------------------- -------------------------------------------------- ---------------------
| Clk | IOB | INGRESSO | LVCMOS25 | | | | | |
| ENB | IOB | INGRESSO | LVCMOS25 | | | | | |
| A <0> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| A <1> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| A <2> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| A <3> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| In <4> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| In <5> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| A <6> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| A <7> | IOB | INGRESSO | LVCMOS25 | | | INFF1 | | IFD |
| I <0> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
| I <1> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
| I <2> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
| I <3> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
| I <4> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
| I <5> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
| I <6> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
| I <7> | IOB | USCITA | LVCMOS25 | 12 | SLOW | | | |
|
Reset | IOB | INGRESSO | LVCMOS25 | | | | | |
------------------------------------------------- -------------------------------------------------- --------------------- Essa indica chiaramente che sono fuori produzione e IOBs né IOB ingresso o logica tessuto come si parla, in effetti sono molto sorpreso per il fatto che chiaramente specificato uscita sarà rimappare come input dopo Mapping, io non sono a conoscenza di alcuna router che non che, può essere sbagliato quindi elaborare la vostra giustificazione un po 'con qualche esempio.

 
Tali disparità di ritardi di propagazione sono chiamati "disallineamento".(A "glitch" è un fenomeno un po 'diversa). Skew si verifica in tutto il mondo reale in una certa misura,
in modo è molto comune vedere strani valori autobus per poche centinaia di picoseconds.Che effettivamente accade
all'interno della FPGA, ed è perfettamente normale.Noi ingegneri evitare mal di testa inclinata connessi con la progettazione sincrono.

Il tuo disegno sembra corretto,
a meno che la destinazione dispositivo richiede skew di controllo più severe.Se è così, allora si può aggiungere un registro per l'output IOBs.

Quando si esegue un percorso post-simulazione.Il tuo netlist viene ampliato in un grande estremamente dettagliate HDL file pieno di basso livello Xilinx primitive.Se vuoi inserire questo file nella vostra cartella di progetto.Può essere molto difficile riconoscere il disegno originale di questo file, ma questo
è quello che è la simulazione di Modelsim.Il tuo messaggio di errore si riferisce ad un problema con un calendario X_FF flip-flop primitivo chiamato / tb_reg_file_v/uut/Ram_2_38_3110.Il "52" si riferisce a un numero di riga in Xilinx Verilog
del modello che descrive flip-flop
del comportamento.

Il tuo rapporto mostra mappatura * * ingresso registri.Questo
è ciò che "INFF1"
si intende nel
Reg. (s) colonna.Il mapper può mettere registri in luoghi che può sembrare sorprendente, ma sono funzionalmente corretto.Questi possono essere indipendenti posto al segnale nomi (come "in" e "out") o il porto Verilog direzioni (come "input" e "uscita").Se si desidera registrare le unghie luogo, è necessario utilizzare i vincoli.

A proposito, ho molto raramente eseguire simulazioni post-rotta.Normalmente io creare un design completamente sincrono, comportamentali ed eseguire simulazioni.Poi ho specificare un vincolo di clock, eseguire luogo e
in rotta, e se soddisfa i tempi ho finito.

 
Echo47 Hi!

Citazione:

Sono veramente grato a voi per questa meravigliosa interazione, I really appreciate your help

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

Synchronous design tollera
il disallineamento dei dati segnali, non ne consegue necessariamente controllare
il disallineamento.E tutti i vostri orologi flops contemporaneamente, in modo che le opere di design affidabile nonostante diversi ritardi di propagazione.(L'orologio rete deve avere una bassa skew).

La vostra seconda simulazione display non mostra il tempo scala.La mia simulazione mostra di circa 800ps skew.Ma non
è molto.E 'davvero causa di un problema?

È possibile ridurre al minimo la produzione inclinata utilizzando l'uscita IOB registri.Questo elimina i ritardi di routing in uscita dal calendario.Probabilmente si desidera mantenere l'ingresso IOB registri perché forniscono piacevole prevedibile ingresso setup / tenere il cronometro.

8-bit registers in the HDL.

Quindi abbiamo bisogno di due
registri a 8-bit nel HDL.Il tuo Xilinx mapper dovrebbe essere abbastanza intelligente automaticamente posto in uno di loro l'ingresso IOBs, e l'altro in uscita IOBs.(Attenzione, che di default mapper comportamento è configurabile.) Naturalmente, il nuovo registro ritardo i dati da un ciclo di clock.
Codice:

alto modulo (in clk, reset, ENB, out);

input [7:0] in;

input clk;

ingresso di reset, ENB;

reg [7:0] a / / il mapper dovrebbe in questo luogo l'ingresso IOBs

uscita reg [7:0] out; / / il mapper dovrebbe in questo luogo l'uscita IOBssempre @ (posedge clk)

iniziare

if (reset)

a <= 8'b0;

else if (ENB)

a <= a;

altro

a <= a;

out <= a;

fine

endmodule
 

Welcome to EDABoard.com

Sponsor

Back
Top