How to specify ISE INST constraint with GENERATE statements?

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.

Reply to
Brandon Jasionowski
Loading thread data ...

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

Reply to
Jim Wu

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.

Reply to
Brandon Jasionowski

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

Reply to
Brian Drummond

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.