Forum Discussion
Altera_Forum
Honored Contributor
12 years agoYou will need to identify the specific LUT or register path first. When you have the path name, you can use TCL or modify your QSF file to add something like this:
set_location_assignment FF_X1_Y48_N37 -to "entity_name:instance_name|specific_register" You cannot just add signal names, the path must map exactly how Quartus format's it, AND what it named the register/LUT. It may have created duplicates or merged several registers into one. An assignment to a node that doesnt exist will just generate a warning in quatus, not an error. The best thing to do is use the nodefinder and copy the path of the nodes you want to lock. You can also restrict placement to specific regions within the device. something like the following: set_global_assignment -name LL_ENABLED ON -section_id some_region# You can turn it on and off set_global_assignment -name LL_AUTO_SIZE OFF -section_id some_region# You can let the fitter try and auto size the region to fit the logic in for you (usually want this off unless exploring options set_global_assignment -name LL_STATE LOCKED -section_id some_region# Locked in a specific X,Y location, otherwise set to "FLOATING" set_global_assignment -name LL_WIDTH 3 -section_id some_region set_global_assignment -name LL_HEIGHT 2 -section_id some_region set_global_assignment -name LL_ORIGIN X38_Y63 -section_id some_region set_instance_assignment -name LL_MEMBER_OF some_region -to "entity_name:instance_name|sub_entity_name:sub_instance_name|*" -section_id some_region All these assignments accept wildcards * and ?. * replaces unlimited characters and ? replaces a single character. All this can be added/modified from the floorplanner. Is there any particular reason you want to lock specific registers and LUTs? Its a tedious process and unless you have a design thats having difficulty meeting difficult timing because its spreading entities all over the chip - it is usually not worth bothering. The fitter will usually do a better job than you.