Sign In

Don't have a Xilinx account yet?

  • Choose to receive important news and product information
  • Gain access to special content
  • Personalize your web experience on Xilinx.com

Create Account

Username

Password

Forgot your password?
XClose Panel
Xilinx Home
Reply
Visitor
msavre
Posts: 3
Registered: ‎02-07-2011
0
Accepted Solution

KCUART for VIRTEX6

Hi,

 

I use the modules KCUART_TX, KCUART_RX, and BBFIFO_16X8 in Spartam3 for test purpose.

I need to use the same function in a Virtex6, and I can't find the corresponding function.

Does it exists somewhere ?

 

Thanks,

 

Marc

 

Expert Contributor
eilert
Posts: 2,085
Registered: ‎08-14-2007
0

Re: KCUART for VIRTEX6

Hi Marc,

please tell us:

Have you actually  tried to use them on a V6?

If so, did you see error messages?

 

Have a nice synthesis

  Eilert

Visitor
msavre
Posts: 3
Registered: ‎02-07-2011
0

Re: KCUART for VIRTEX6

Thanks for reply,

 

Yes, I compile the modules for Virtex6, and I obtain many errors, alls like this one:


ERROR:Xst:3154 - kcuart_tx.vhd". Line 133. Unable to set attribute "INIT" with value "E4FF" on instance <mux1_lut> of block <LUT4>. This property is already defined with value "0000" on the block definition by a VHDL generic or a Verilog parameter. Apply the desired value by overriding the default VHDL generic or Verilog parameter. Using an attribute is not allowed.

 

The line 133 is:

 

  mux1_lut: LUT4
  --synthesis translate_off
    generic map (INIT => X"E4FF")
  --synthesis translate_on
  port map( I0 => bit_select(0),
            I1 => data_in(0),
            I2 => data_in(1),
            I3 => Tx_run,
             O => data_01 );

 

I obtain also message during compilation on Spartan3, but it is only "Warning".

 

There are also errors when I compile KCPSM3 for a Virtex6 (and not with KCPSM6).

 

I understand in error help that the compilator is less tolerant for Virtex6 than for Spartan3.

But , I am not familiar with such instantiation, and I don't know how modifying it for correct compilation.

 

Marc,

 

 

Expert Contributor
joelby
Posts: 1,058
Registered: ‎10-05-2010
0

Re: KCUART for VIRTEX6

Is there any reason why you don't want to use KCPSM6?

 

There's a version of KCPSM3 that works on 12.x without errors - see http://forums.xilinx.com/t5/PicoBlaze/Can-the-PicoBlaze-be-used-on-the-Spartan-6/td-p/52313 .

Expert Contributor
eilert
Posts: 2,085
Registered: ‎08-14-2007

Re: KCUART for VIRTEX6

Hi Marc,

first, you should use the KCPSM6 on your V6 Platform.

Just to be on the safe side with the cpu part.

 

When you compare the LUT4 code snippet to this:

reset_lut: LUT6_2
  generic map (INIT => X"FFFFF55500000EEE")
  port map( I0 => run,
            I1 => internal_reset,
            I2 => stack_pointer_carry(4),
            I3 => t_state(2),
            I4 => reset,
            I5 => '1',
            O5 => run_value,
            O6 => internal_reset_value);

 

You may recognize that there now the  generic is effective for synthesis too.

 

So, you have to eliminate the Block that assign the attributes e.g.:

--attribute INIT : string;  
--attribute INIT of mux1_lut      : label is "E4FF";

-- and all the following ones.

 

And disable the translate pragmas too.

e.g by global replacement of "synthesis_translate " with "no-synthesis translate".

Thus the pragma becomes invisible to the tool, and so the generics can be applied.

 

I hope XST recognizes LUT4 components for V6 targets.

The changes can be done very quickly, so give it a try and report back how it worked. (I'm curious too)

 

Have a nice synthesis

  Eilert

 

Expert Contributor
bassman59
Posts: 4,741
Registered: ‎02-25-2008

Re: KCUART for VIRTEX6

[ Edited ]

 


msavre wrote:

Thanks for reply,

 

Yes, I compile the modules for Virtex6, and I obtain many errors, alls like this one:


ERROR:Xst:3154 - kcuart_tx.vhd". Line 133. Unable to set attribute "INIT" with value "E4FF" on instance <mux1_lut> of block <LUT4>. This property is already defined with value "0000" on the block definition by a VHDL generic or a Verilog parameter. Apply the desired value by overriding the default VHDL generic or Verilog parameter. Using an attribute is not allowed.

 


 

Actually, this isn't a V6-specific issue. It's a VHDL synthesis and primitives-library issue.

 

The KCUART (as well as the PicoBlaze itself) was designed before the synthesis tools were smart enough to properly apply generic maps to instances. So the only way to initialize the LUTs and such in HDL was to use an attribute with the INIT value. At some point, which was indeed awhile ago, XST started to accept generic maps on the various Xilinx primitives (read the libraries guide, they all have INIT generics), so if your code had both the INIT attribute and the INIT generic, the generic would be used.

 

The VHDL parser for non-V6 and S6 devices threw a warning about instantiations that had both the INIT attribute and the generic maps. (Which is why I went through all of that code and deleted all of the attributes.)

 

Xilinx has a new parser for V6 and S6, and the primitive components in the library do not accept the INIT attribute, which is why XST throws that error. This is actually a step in the right direction; the INIT attribute was always a hack, and the right way to do this is through the generic maps.

 


----------------------------------------------------------------
Yes, I do this for a living.
Visitor
msavre
Posts: 3
Registered: ‎02-07-2011
0

Re: KCUART for VIRTEX6

I found time to come back on this problem and try advice of Eilert.( 02-07-2011 11:08 PM )

 

The UART modules work correctly now.

 

I test it on a Spartan6 evaluation kit, because I haven't the target with Virtex6.

I also test it on Spartan3, and it work also.

 

I was surprised that the lines beginning with "--" are used, and not only comments.

 

Thanks a lot for the help; I will have lot of work on target, and it is better to solve the maximum of problem before.

 

Marc