Return to Support Page
 homesearchagentssupportask xilinxmap

Answers Database


M1: Board-level schematic simulation methodology for QuickSim


Record #2560

Product Family:  Software

Product Line:  Mentor

Problem Title:
M1: Board-level schematic simulation methodology for QuickSim


Problem Description:
Keywords: board-level, simulation, QuickSim, viewpoint, DVE

Urgency: hot

General Description:

Simulating board-level designs requires some knowledge of viewpoint
management in Mentor Graphics.	Two simulation viewpoints are created, one
for functional simulation and one for timing simulation.  Each Xilinx
component is then linked into the two simulation viewpoints.  With M1, all
schematic designs are linked to the board-level design in the same manner,
regardless of whether these designs contain LogiBLOX modules or not.

This application brief discusses the creation and management of simulation
viewpoints, as well as the importation of Xilinx-level functional and
timing information into board-level viewpoints.


Solution 1:

FILES YOU WILL NEED FOR XILINX BOARD-LEVEL SIMULATION

Download the following archive from the Xilinx Download Area:

   ftp://ftp.xilinx.com/pub/swhelp/mentor/boardmen_m1.tar.Z

This archive contains the following scripts:

   xbvpt
   regmodel
   unregmodel
   getreg.nawk

A README file is also included.

XBVPT (Xilinx Board-Level Viewpoint) generates or annotates a functional or
timing board-level design viewpoint with information required by Xilinx
simulation models.  The REGMODEL script (along with the GETREG subscript)
register the simulation models for each Xilinx-level portion of the design.
The last utility, UNREGMODEL, lets you quickly unregister schematic or EDDM
models in case of misregistration.  All of these scripts should be placed
in a directory specified in your PATH variable.



Solution 2:

GENERATING BOARD-LEVEL FUNCTIONAL AND TIMING VIEWPOINTS

In this example, assume you have the following board-level schematic:

   $CARD_XYZ/boardeaux

The following viewpoints are generated:

   $CARD_XYZ/boardeaux/functional
		       timing

The XBVPT script simplifies viewpoint generation.  For usage information on
this script, type "xbvpt" by itself on the command line.

1. To create a functional viewpoint, type the following command:

      xbvpt -f $CARD_XYZ/boardeaux

   This creates the viewpoint $CARD_XYZ/boardeaux/functional.  Note
   that "-f" is optional; XBVPT defaults to creating a functional
   viewpoint.  Also note that the component name can be a hard name or
   soft name.

   This script writes Xilinx-specific properties into the board-level
   viewpoint.  In addition, it includes the following setting:

      $add_parameter("xilinx_simtype", "functional", @string);

   The xilinx_simtype parameter allows Xilinx components to be changed
   easily between functional and timing models in QuickSim by simply
   changing which viewpoint is fed into the simulator.

   NOTE: If you have already created a board-level functional simulation
   viewpoint for your design (e.g., my_functional_viewpoint), use the
   following command to annotate information into your viewpoint:

      xbvpt -f $CARD_XYZ/boardeaux my_functional_viewpoint

2. To create a timing viewpoint, type the following command:

      xbvpt -f $CARD_XYZ/boardeaux

   This creates the viewpoint $CARD_XYZ/boardeaux/timing.

   This script writes Xilinx-specific properties into the board-level
   viewpoint, including this $add_parameter setting similar to the one used
   for the functional viewpoint:

      $add_parameter("xilinx_simtype", "timing", @string);

   NOTE: If you have already created a board-level timing simulation
   viewpoint for your design (e.g., my_timing_viewpoint), use the
   following command to annotate information into your viewpoint:

      xbvpt -t $CARD_XYZ/boardeaux my_timing_viewpoint

3. Follow the instructions in the next section to import each Xilinx
   component into the board-level viewpoints for simulation.

4. To run a particular simulation on the design, specify the VIEWPOINT name
   on the QuickSim command line, rather than just the component name.  For
   example, to run a functional simulation:

      pld_quicksim boardeaux/functional -tim unit

   To run a timing simulation:

      pld_quicksim boardeaux/timing -tim typ -cp

Note the cross-probing switch at the end of the timing command.  When using
cross-probing, load the FUNCTIONAL viewpoint boardeaux/functional into DVE;
this allows you to annotate back-end timing results onto your front-end
schematic.

As explained in the next section, the correct Xilinx models (for functional
or timing simulation) are automatically pulled into QuickSim based on the
value of the xilinx_simtype parameter.

Note: There is currently no way to independently reset Xilinx components in
Quicksim.  All XC2000 and XC3000 devices must share a common //globalresetb
signal, all XC4000 devices must share a common //globalsetreset signal, all
XC5200 devices must share a common //globalreset signal, and all XC7000
devices most share a common //prld signal.



Solution 3:

IMPORTING A SCHEMATIC DESIGN INTO THE BOARD-LEVEL SIMULATION MODEL

Assume you have the following Xilinx component:

   $CARD_XYZ/xilinx/ifctl: XC4000E design
      (instance name: BRIDGE)

1. Attach these properties to the FPGA instance in the boardeaux schematic:

      NAME	       VALUE		TYPE
      lca_technology   xc4000e		string
      MODEL	       xilinx_simtype	expression

   (These may also be made body properties on the symbols themselves.)

   Note the MODEL property, which is used to swap between functional and
   timing models.  Setting this property to be of type EXPRESSION (instead
   of STRING) allows this property to be changed dynamically, as seen by
   QuickSim, by simply telling the simulator which viewpoint to use.

TO PREPARE FOR FUNCTIONAL SIMULATION

2. Use the Component Interface Browser to add a "functional" label to the
   original schematic model.  You can do this using the REGEDDM script:

      regmodel -f ifctl ifctrl/schematic

   (You may leave off the "/schematic" if you wish.)

   After you run REGMODEL, you can look at the cib_view.log file and see a
   listing structured like the following:

      ** view
	 COMPONENT  ifctl	   DEFAULT INTERFACE IS:  ifctl

	    INTERFACE:	ifctl
	       PINS:
		  (list of pins)
	       BODY PROPERTIES:  (list)
	       INTERFACE MODEL ENTRIES:
	       Model Entry     Type	Model Info
		  (list)

   Note that there may be more than one INTERFACE line, the interface we
   care about is the one named in the DEFAULT INTERFACE field.

   At the bottom of the interface description, you will see the following:

      0 mgc_symbol     Path: $CARD_XYZ/xilinx/ifctl/ifctl
		       Labels: 'default_sym'
		       Status: Valid for interface; Valid for property

      1 mgc_schematic  Path: $CARD_XYZ/xilinx/ifctl/schematic
		       Labels: '$schematic' 'schematic' 'default' 'functional'
		       Status: NOT valid for interface; NOT valid for property

   REGMODEL has added a "functional" label to the original schematic model.

   The model we have labeled will be accessible by any instantiation of
   this instance which has a MODEL=functional property attached to it.
   When you tell QuickSim to run on the functional viewpoint, the parameter
   xilinx_simtype=functional changes the MODEL=xilinx_simtype(exp) to
   become MODEL=functional as seen by QuickSim.  QuickSim then pulls in the
   original schematic, which now has a label of "functional".

You are now ready to run QuickSim for functional simulation.

TO PREPARE FOR TIMING SIMULATION

Step 3 (and only Step 3) will need to be rerun on the FPGA design whenever
this part of the design is modified.

3. After the design has been implemented by the FPGA tools, run ngd2edif,
   and pld_edif2tim to generate a Mentor EDDM model:

      ngd2edif -w -v mentor ifctl.nga ifctl.edn
      pld_edif2tim -r ifctl.edn

   To set the vendor switch ("-v mentor") in the Xilinx Design Manager/Flow
   Engine, go to the Implementation Options Template.  Under the Interface
   panel, change the Simulation Data Options: Vendor setting to "Mentor".

   This generates a $CARD_XYZ/xilinx/ifctl_lib/ifctl EDDM single-object
   netlist with timing information.

4. Register the EDDM model with the original component in CIB as before,
   but instead of using the -f option in REGMODEL, use the -t option:

      regmodel -t ifctl ifctl_lib/ifctl/view_1

   (You may leave off the "/view_1" if you wish.)

   The cib_view.log file will now show:

      2 Eddm_single_object  Path: $CARD_XYZ/xilinx/ifctl_lib/ifctl/view_1
		       Labels: '$schematic' 'schematic' 'timing'
		       Status: NOT valid for interface; NOT valid for property

   The model you have registered will be accessible by any instantiation of
   this instance which has a MODEL=timing property attached to it.  When
   you tell QuickSim to run on the timing viewpoint, the parameter
   xilinx_simtype=timing changes the MODEL=xilinx_simtype(exp) to become
   MODEL=timing as seen by QuickSim.  QuickSim then pulls in the newly
   registered model whose label is "timing", which is how you labeled the
   model that Timsim8 generated.

You are now ready to run QuickSim for timing simulation.



End of Record #2560

For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals!

© 1998 Xilinx, Inc. All rights reserved
Trademarks and Patents