Løsning: CLK net

tors apr 16, 2009 (Anders Enggaard)

Inden du kommer for langt: Se først opgaven!!!

Brainer - billede

Der var kun en rigtig løsning sidst – Peter fra Protelevision klap dig selv på skulderen! Det var stærkt set.

Opgaven gik ud på at spotte hvad der var galt – samt forklare hvad der skal gøres – i noget FPGA kode, når synteseværktøjet (her ISE fra Xilinx) kommer med den her fejl:

”WARNING:Route - CLK Net:gclk_IBUFG
may have excessive skew because 76 CLK pins and 5 NON_CLK pins
failed to route using a CLK template.”

Anders forklarer hvordan man kan gå frem i den situation:

1) Du undersøger om der er blevet indsat en clock-buffer på dit clock net, f.eks. ved gennemsyn af log filer og konstaterer at der indsat BUFG på clock net – hvad så…..

2) Du undersøger, hvordan clock signal kommer ind fra pin eller PLL til en/flere FF f.eks. gennem FPGA editor GUI. Her får du øje på, at det clock net, du forventer at se, pludselig er 2 forskellige net, og du finder hurtigt frem til fejlkilden – en simpel stavefejl i RTL source ?

Der er i VHDL indsat en BUFG således:

BUFG_inst : BUFG port map (
  O => gclk_int,
  I => gclk);

Fejlkilden er en fejl i port map for en FIFO

Der stod:

async_fifo : afifo_16kx16
port map (
  ..
  wr_clk       => gclk
  ..
);

Det skulle have været:

async_fifo : afifo_16kx16
port map (
  ..
  wr_clk       => gclk_int
  ..
);

Så lille en fejl – så meget ballade…

Hvad mener du?