- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
KCUART for VIRTEX6
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-07-2011 01:33 AM
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
Solved! Go to Solution.
Re: KCUART for VIRTEX6
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-07-2011 03:58 AM
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
Re: KCUART for VIRTEX6
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-07-2011 07:51 AM
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,
Re: KCUART for VIRTEX6
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-07-2011 04:46 PM
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-Pico
Re: KCUART for VIRTEX6
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-07-2011 11:08 PM
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
Re: KCUART for VIRTEX6
[ Edited ]- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-08-2011 10:32 AM - edited 02-08-2011 10:39 AM
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.
Re: KCUART for VIRTEX6
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-10-2011 07:08 AM
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











