![]() |
|
![]() |
|
Answers Database
M1.x: EPIC vs. XDE and other useful EPIC Tidbits
Record #4008
Product Family: Software unbutton hilite # Remove the default hilite button. button yellow 'hilite -c yellow' button red 'hilite -c red' button dark_blue 'hilite -c dark_blue' button dark_green 'hilite -c dark_green' button olive 'hilite -c olive' # Epic has a palette of 15 colors. You can replace any of the # above colors with one of these: # black # blue # green # red # yellow # cyan # magenta # white # grey # olive # dark_blue # dark_green # dark_cyan # dark_red ~~~~~~~~~~~~~~~~~~~~end cut ere~~~~~~~~~~~~~~~~~~~~~~~ Emulating the XDE 'Parked-Cursor': ---------------------------------- EPIC does not support the parked-cursor in the same manner as XDE where you could just position the mouse cursor over something and the editor would give you some info in the status window about the underlying object. To emulate this in EPIC, move the mouse cursor over the object in question. Press the 'q' key on the keyboard (q is for query). In the status window the object info will be given. Also if you just click on object to select them, EPIC will give the same sort of info. If you do this on a block pin you can quickly get source to load delays displayed. Getting Delays for Nets: ------------------------ In addition to the 'q' hotkey mentioned above, you can also select a net, press the ATTRIB button and then click on the 'Show Pin List'. This will give source to load delays for all routed load pins on that net. Selecting Entire Nets with the Mouse: ------------------------------------- To select an entire net rather than just a routed segment of a net, hold down the SHIFT key and click the left mouse button. You can also select the net name from the List window to do the same thing. Feed-Throughs (a.k.a. route-throughs): -------------------------------------- EPIC and M1 do not have the concept of split nets that Xact had. In order to perform a feed-through in Xact you needed to have 2 different nets that had the same root name but differed in their suffix such as mynet_1 and mynet_2. In M1 these 2 nets are represented as a single net whose name would be mynet. EPIC will display feed-throughs as a routed connection that lies on top of a block (a comp or a site). To see the possible feed-through paths through a block position the cursor over the pin and press SHIFT+LEFT_MOUSE_CLICK. Available feed-through paths will be highlighted. Making the Status/History Window Bigger: ---------------------------------------- By default, EPIC shows about 3 lines of text at the bottom of the main display. To enlarge this region on a PC, put the cursor over the thick line that divides the status window from the edit window. You will see the cursor change to a double arrow. Hold down the LEFT mouse button and drag upwards. This will show more lines of text. Under UNIX, the operation is about the same but you need to position the cursor over the small rectangle in the border above the scroll bar which is next to the status window on the right hand side. EPIC Command Line: ------------------ EPIC has a command line which can be made visible by clicking on 'Post Cmd...' from the 'View' pulldown menu. See the online manual or online help on what commands are available. Note there is a UNIX style command line history substitution. Enter '!?' at the command line for help on this. Just remember that '!!' repeats the last command. Unlike the DOS prompt window you cannot use the up and down arrow keys to select and edit a previous command. We'll be adding this in the M1.6 version of EPIC. Command Line Tricks with Wildcards: ----------------------------------- The command line is not normally needed. There are some things you can do, however, that are real convenient and only possible from the command line. Say, for instance, you want to select all comps (blocks) that have the root name of $I879/ADDER/* and you'd like to hilite these in red. From the command line enter: select comp $I879/ADDER/* This will select all the comps in this group. You can now press the hilite or red button or from the command line enter: hilite -c red EPIC .epl File: --------------- EPIC records every action you do with the mouse, menu, or command line into a <your_design_name>.epl file where <your_design_name> matches that of the .ncd file. This file lives in the same directory where the associated .ncd file lives. If EPIC terminates successfully then this .EPL file is removed. If EPIC should crash or you turn off the power to your system the .EPL file is not removed. When you run EPIC on your .NCD again and if it finds a matching .EPL file, then EPIC will ask you if you want to recover. It basically plays back the actions recorded in the .EPL. EPIC .scr Script Files: ----------------------- If you ever want to figure out what command an action in EPIC maps to just click on 'Record' in the 'Scripts' pulldown menu. Once you are done recording your actions you can click on 'End Record' in the Scripts pulldown menu and look in the resultant .scr file to see what actions map onto which EPIC commands. Using Script Files to Execute Batch Style Changes: -------------------------------------------------- You can emulate a batch mode of EPIC where you control all EPIC actions through a script and you do not have to interact with the GUI part of the editor. You can put your EPIC commands into an epicuser.ini file. In the epicuser.ini snippet below there are 3 sections: section-1 to turn off most of the graphics to speed up processing, section-2 is where you enter the commands you'd like to execute and section-3 is the 'save' and 'quit!' commands to force the editor to save the changes and exit. Remember to put the epicuser.ini file in either $cwd (UNIX only), $HOME (recommended), or $XILINX/data. ~~~~~~~~~~~~~~~~~~~~~~~~~cut here~~~~~~~~~~ #Batch EPIC scripter. #Turn off all layers. This will speed the draws up. setattr layer sites view OFF setattr layer components view OFF setattr layer routes view OFF setattr layer ratsnests view OFF setattr layer macros view OFF setattr layer pips view OFF setattr layer pinwires view OFF setattr layer long_lines view OFF setattr layer local_lines view OFF setattr layer switch_boxes view OFF setattr main disable_draw TRUE setattr main edit_mode read-write #Do whatever EPIC commands you want to do here. ....your_command1.... ....your_command2.... ....your_command3.... ....your_commandN.... #Exit EPIC save quit! ~~~~~~~~~~~~~~~~~~~~~~~~~end cut here~~~~~~~ To run the above script, from a DOS prompt window or a Unix shell enter: epic <name_of_your_design>.ncd Dumping Your Design in Terms of EPIC Commands: ---------------------------------------------- From the EPIC command line you can enter: record -c -r This will create a file (<design>.scr) that contains a list of EPIC commands that when played back in EPIC will recreate your design. For a large 4085 design, it only takes about 10 seconds to create this script file. There are a few gotchas if you playback this script: - macros and rpms get flattened - tspecs can get lost - playback of this script can be really slow (multiple hours for large designs due to routing taking a long time) If you are not concerned about routing you can speed things up on playback by entering: record -c rather than 'record -c -r'. This tells EPIC not to record any routing info. EPIC will still record CLB programming, placement and what pins are on what nets. In the resulting .scr file you will see info on the programming of all CLBs and other blocks, placement info, and routing info. You will also note that EPIC writes out a backslash character '\' to escape certain things such as white space within config strings and other special characters. This is similar to what is done in Unix C-shells and other type shells. So what the heck is this useful for? - it gives you an ASCII dump of your design - it allows you to inspect and modify certain aspects of your design Panning in EPIC: ---------------- EPIC has lots of different means of navigation. You can simply use the arrow keys on the keyboard to pan left or right, up or down. You can use the SHIFT+arrow_key to pan to the edge of the device. Most people hold down the middle (UNIX) or right (PC) mouse key and drag to pan the display. Most people are not aware you can also grab the small rectangle in the locator area (that world view thingy in the upper right corner of the EPIC window) When zoomed in you can position the mouse cursor over the smaller of these 2 rectangles and hold down the middle (UNIX) or right (PC) mouse button to drag the locator box to the desired location. This will pan the main display. Since selected objects are shown in the locator window you can simply drag the locator box over the selected object to pan to where this lives in the main display. What are those funny things on top of routed pins?: --------------------------------------------------- Pins on routed VCC and GND nets have special symbols. For VCC, a plus sign is placed on top of the pin on the comp. For GND, a standard type ground symbol with 3 dashed line of descending width are used. This is done to make these pins stand out. UNDO Is Glacially Slooooooow: ----------------------------- EPIC has N levels of undo capability. The way it does this is to reload the .ncd and play back all of the commands in the .epl file except for the last one. As you can imagine, the larger the design and the more commands that need to be played back this can take a while. One of the tricks you can do to speed this up is to periodically do a Save of the design. Especially after doing autoplace and autoroute commands. EPIC will only playback commands which occurred after the last save. In the M1.6 version of EPIC we hope to make undo much quicker. Solution 2: ------------------------------------------------------------ BUGS To Be Weary Of: ------------------------------------------------------------ LBE/Route Bug: -------------- In version M1.4.12 of EPIC there is a bug where if you use the Logic Block Editor in conjunction with manual or automatic routing then EPIC will sometimes crash. This seems to happen a lot more on PC rather than UNIX. There is a memory corruption problem which we are trying to track down. Once found and fixed we will be making an M1.4 patch available for this. Until this becomes available I have the following recommendations. Turn off the auto-router option. You can still autoroute nets but this option applies to when you add a net, do a block swap, add pins to a net, etc where EPIC will autoroute those changed or new connections. To disable this select 'Post Main Attrs...' in the Misc pulldown menu then click on 'Automatic Routing' to disable this. To always disable this you can put the following command in your epicuser.ini file: setattr main auto_route false Some people have also had success by clicking on the 'Save' entry in the 'File' pulldown menu between LBE and routing operations. This seems to clean up memory and get things back in sync. TSPEC/LBE Bug: -------------- There is another phenomenon to be leery of. If you use the logic block editor (LBE) to reprogram a block (CLB, IOB, etc) and there are tspecs on BELs (LUTs or Flops) within this block, the tspecs will be lost. Unfortunately this probably cannot be fixed with a patch to M1.4. We do have this fixed in M1.5. If you use LBE to just inspect the contents of a block, make sure you press the CANCEL button to get out of LBE rather than the OK or APPLY buttons otherwise tspecs can be lost. The Shrinking LBE Window Bug: (PC only) ----------------------------- For some PC users, there are certain graphics cards where resizing the LBE window will cause it to completely disappear. Sometimes you don't even have to resize for this to occur. Sometimes you can use LBE until you open another design without leaving EPIC. Then the LBE window will disappear when viewing the next design. Try exiting EPIC and then bring it up on the design in question. This sometimes fixes the problem. Other people have resorted to installing a different brand of graphics card. One we've had great success with is the Matrox Millennium II graphics card. End of Record #4008 - Last Modified: 06/29/99 14:56 |
| For the latest news, design tips, and patch information on the Xilinx design environment, check out the Technical Tips! |