How to specify ISE INST constraint with GENERATE statements?

Feb 24, 2007 3 Replies

I'm having trouble getting an IBUFDS to use differential termination, DIFF_TERM = "TRUE". I'm specifying the pads with:


-- more code...



-- Generate components for each bit array_gen : for i in din'high downto din'low generate begin



-- Generate differential ended input buffer diffend_gen : if diff_input_g = '1' generate begin ibufds_inst : IBUFDS generic map ( DIFF_TERM => "TRUE", IOSTANDARD => iostandard_g ) port map ( I => din(i), IB => din_n(i), O => ibuf_out(i) ); end generate diffend_gen;


-- more code .....


When I look at the PAR'ed design I'm noticing despite assigning DIFF_TERM = "TRUE", it's not kept. Note that the above is part of a separate entity i'm instantiating a few times in the top entity. It has a generate statement to create IBUFDS, among other ILOGIC parts, for each bit of my signal. Since I can't get the generic attribute to be assigned in the vhdl, I'm hoping that assigning it in the UCF will work. Unfortunately, I have no idea how to do this with generate statements....



I tried the following, among others... INST "my_iface_inst/array_gen(*).diffend_gen.ibufds_inst" DIFF_TERM = TRUE; INST "my_iface_inst/array_gen.diffend_gen.ibufds_inst" DIFF_TERM = TRUE; INST "my_iface_inst/array_gen(0).diffend_gen.ibufds_inst" DIFF_TERM = TRUE; INST "my_iface_inst/array_gen.diffend_gen.ibufds_inst" DIFF_TERM = TRUE; INST "my_iface_inst/array_gen0.diffend_gen.ibufds_inst" DIFF_TERM = TRUE; INST "my_iface_inst/array_gen/diffend_gen/ibufds_inst" DIFF_TERM = TRUE; INST "my_iface_inst/array_gen(0)/diffend_gen/ibufds_inst" DIFF_TERM = TRUE; INST "my_iface_inst/array_gen0/diffend_gen/ibufds_inst" DIFF_TERM = TRUE;


but I can't get it to translate.



Any ideas? It's driving me bonkers...



Thanks.



I am surprised that the compiler doesn't error out with you code. The DIFF_TERM in VHDL should be a boolean instead of a string. Can you try assign it to TRUE without double quotes?

If it still doesn't work, you can run ngdbuild (Translate in GUI) without DIFF_TERM constraints in UCF. You can then open the ngd file in Floorplanner to get the instance names for your IBUFDS instances. Use the names in Floorplanner to assign DIFF_TERM constraints in the UCF.

Cheers, Jim

formatting link

Oops sorry. i mean to write true, not "true". I pasted the code, which had a generic, but to make it more readable I changed the generic to true but accidentally put quotes. I'll try the floorplanner, thanks.

Have you tried an ATTRIBUTE rather than a GENERIC? You don't say which synthesis tool you are using, but it is possible that an attribute can make it through when a generic can't.

Also, be aware that if "diff_input_g" is defined in a package, XST (6.1 and 7.1 anyway) doesn't read constants defined in external packages when parsing the conditions for a generate statement.

I haven't had time to submit a webcase, and since they're on 9.1 now it's probably fixed anyway it's probably been fixed long ago.

- Brian

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required