AR# 4008


M1.x - EPIC vs. XDE and other useful EPIC tips


Keywords: EPIC, XDE, manual routing

Urgency: Standard

General Description:
This is a collection of power user tips for EPIC. It also contains advice regarding items that tend to cause problems for XDE users when they begin using EPIC.

All of the following information is documented in the EPIC users guide in the Xilinx M1.4 online documentation. If you need more information on a particular EPIC topic, the online documents are a good source of info and examples. If you plan on using EPIC regularly, you are highly encouraged to read the documentation.




Noun-Verb Interface:
EPIC has a Macintosh-style noun-verb interface. This means that you first need to select one or more objects, then apply an action to them.

Also note that EPIC is a mode-less editor. This means that you do not need to be in "route-mode" in order to manually route connections.

EPIC vs. XDE Functionality:
A common complaint from first-time EPIC users is that they think it has less functionality than XDE. EPIC does offer more overall functionality than XDE. However, there are a few things XDE offeres that are not available in EPIC (such as printing). The mechanics of tasks in EPIC is different than comparable functions in XDE. The actual number of keystrokes needed for these taks, however, is about this same.

Manual Routing differs from XDE:
In XDE, in order to manually route connections, you select the PIPs to make the routing connections. This is not the case in EPIC. Instead, select the wires rather than PIPs to make the routes. Select the wires in a contiguous
fashion and try to select these in the order that the electrons will flow from source to driver. Press the ROUTE button to route these connections. (Be careful to press the ROUTE as opposed to the AUTOROUTE button.) EPIC will run DRC as each routing segment is added to ensure you have nets that are correct by construction.

Adding Blocks (comps) differs from XDE:
To program a CLB, select the site (unprogrammed CLB location) and press the ADD button. Once you've done this, you can then select the blue comp and press the EDITBLOCK button to program the CLB (or IOB or any other type block). This will bring up the Logic Block Editor (LBE) window.

Other LBE tricks:

You can place the cursor over the comp on which you'd like to run the logic block editor (LBE), hold down the SHIFT key, and click the left mouse button. This is the quick way to invoke LBE.

For unplaced comps, you can select the comp name from the List Window and press the "editblock" button. Unlike XDE, you can edit the comp even if it is not placed.

Currently, you can only bring up one LBE window at a time. When you do this, it will disable actions in the main EPIC window until you close LBE.

Highlighting differs from XDE:
Be default, EPIC has a single HILITE button that highlights the selected object(s) in yellow. You can highlite in a variety of colors, by doing the following:
Clip the following lines and put them into a file called 'epicuser.ini'. Put this file either in the
directory where your .ncd lives (UNIX only), your $HOME directory (recommended), or in the
$XILINX/data directory. EPIC will search for epicuser.ini in the directory order specified here. Note that the epicuser.ini can be used for many things other than just adding buttons for highlighting.

~~~~~~~~~~~~~~~~~~~~cut here~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# epicuser.ini file
# This is an initialization file to customize EPIC.
# Note the pound (#) character is the comment character. It can be placed in any column and will comment to the end of line. (Same style as in the Unix C-Shell.
# The commands below create user-defined buttons that appear on the right-hand side of the EPIC window, to highlite selected objects in the desired color.

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 information about it in the status window).

To emulate this in EPIC, move the mouse cursor over the object in question. Press the "q" key on the keyboard (for "query:). The object info will be given in the status window. If you also simply click on objects 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" hot-key mentioned above, you can also select a net, press the ATTRIB button and 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 suffixes (such as mynet_1 and mynet_2).

In M1, these two 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 three 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.
In UNIX, the operation is the same, but you need to position the cursor over the small rectangle in the border above the scroll bar that is next to the status window on the right-hand side.

EPIC Command Line:
EPIC has a command line that can be made visible
by clicking on "Post Cmd..." from the "View" pull-down menu. See the online manual or online help for the available commands.

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. (This will be added 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 very convenient and only possible from the command line.

Suppose you want to select all comps (blocks)
that have the root name of $I879/ADDER/* and highlight them 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 as the associated .ncd file.

If EPIC terminates successfully, this .EPL file is
removed. If EPIC should crash, or you turn off the power to your system, the .EPL file is not removed. If you run EPIC on your .NCD again and it finds a matching .EPL file, EPIC will ask you if you want to recover. (It 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, click on "Record" in the "Scripts" pull-down menu. Once you are done recording your actions, click "End Record" in the Scripts pull-down menu, and look in the resultant .scr file to see which actions map to what 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 without having to interact with the GUI part of the editor.

You can put your EPIC commands into an epicuser.ini file. There are three sections in the epicuser.ini snippet below:
- Section 1 turns off most of the graphics to
speed up processing;
- Section 2 is where you enter the commands you'd like to execute;
- Section 3 is the "save" and "quit!" commands that 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 up the draws.
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.

#Exit EPIC
~~~~~~~~~~~~~~~~~~~~~~~~~end cut here~~~~~~~

To run the above script, enter the following from a DOS prompt window or Unix shell:

epic <name_of_your_design>.ncd

Dumping Your Design using of EPIC Commands:
From the EPIC command line, enter:

record -c -r

This creates 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 risks if you play back this script:

- Macros and RPMs get flattened;
- Tspecs can get lost;
- Playback of this script can be very slow (multiple hours for large designs, due to long routing time).

If you are not concerned about routing, you can speed the play back up 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 avoid 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.

What is the purpose of this?

- 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.

You can also grab the small rectangle in the locator area (that "world view" icon 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 the symbols 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
widths are used. This is done to highlight these pins.

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. Therefore, the larger the design and the more commands that need to be played back, the longer this process takes.

A trick you can do to speed this up is to Save the design periodically, especially after doing autoplace and autoroute commands. EPIC will
only play back commands that occurred after the last save. In the M1.6 version of EPIC, we hope to make the undo process much quicker.


BUGS To Be Aware Of:

LBE/Route Bug:
In EPIC version M1.4.12, a bug exists if you use the Logic Block Editor in conjunction with manual or automatic routing (EPIC will crash). This seems to happen on PCs rather than UNIX machines. This is due to a memory corruption problem; once it is found fixed, an M1.4 patch will be made available.

Until the patch is available, you can work around this problem by turning off the auto-router option. You can still autoroute nets but this option applies to adding a net, doing a block swap, adding pins to a net, etc., where EPIC
will autoroute those changed or new connections.
To disable this, select "Post Main Attrs..." in the Misc pull-down menu. Then, click on "Automatic Routing" and disable it.

To have this always disabled, put the following command in your epicuser.ini file:

setattr main auto_route false

Also, clicking on the "Save" entry in the "File" pulldown menu between LBE and routing operations seems to clean up the memory and get things back in sync.

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 for M1.4, although it is fixed in M1.5.

If you use LBE simply to 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, certain graphics cards cause the LBE window to completely disappear if you try to resize it. (Sometimes you don't even have to resize for this to occur.)

Other times, you can use LBE until you open another design without leaving EPIC. Then, the LBE window will disappear when you view the next design.

Try exiting EPIC, then bring it up on the design in question. This can fix the problem.

Others have had success wit installing a different
brand of graphics card. The Matrox Millennium II graphics card has proven to work very well.
AR# 4008
日付 07/09/2001
ステータス アーカイブ
種類 一般
People Also Viewed