ADMIN NOTE: Post 72 may be coming to some of you twice due to a reset
 on my local network sometime last night.      - John

( Post 72 Item 1) ---------------------------------------------------------

From: epakch@epa.ericsson.se (Kenny Chow)
Subject: Post 71  Item 1

Lee, Your question misses some details and I would like to ask more and 
give some conditional comments. 

If you are using CASE statement (VERILOG) to build the combinational part
of the state machine, be sure to use comment '//Synopsys full_case 
parallel_case'.  One possibility is you have 'default' definition, or you
don't have the 'full' and 'parallel' Synopsys directive and it will generate
circuit to take care of the undefined encoding state.  These redundant 
circuits may provide propagation path for unknowns.

A side question is do you see the unknown propagate through the gate level
circuit or through the model ? I suppose only the gate level circuit.

- Kenny Chow, Ericsson Australia. (OK to use name and company).

( Post 72 Item 2) ---------------------------------------------------------

From: brucel@zulu.sps.mot.com (Bruce A. Loyer-Highend Comm)
Subject: Post 71 Item 2

To:	John Spillane, Data General

I have worked out a method to transfer schematics from synopsys to Cadence
Analog Artist.  I suspect it will also work for you.  First of all, you must 
set the edifout switches in synopsys.  The ones that I use are:

edifout_power_and_ground_representation = "cell" 
edifout_ground_pin_name = "P1" 
edifout_ground_name = "GNDTIE" 
edifout_power_name  = "VDDTIE" 
edifout_power_pin_name  = "P1" 
edifout_external = "true" 
edifout_netlist_only = "false";
edifout_pin_direction_in_value = "in"; 
edifout_pin_direction_inout_value = "inout"; 
edifout_pin_direction_out_value = "out"; 
edifout_pin_direction_property_name = "";
edifout_skip_port_implementations = "false";
edifout_instantiate_ports = "true"	

In addition, the default settings (which are overwritten by the ones above) are:

edifout_dc_script_flag = "";
edifout_design_name = "";
edifout_match_vhdl_names = "false";
edifout_top_level_symbol = "true";
edifout_unused_property_value = "";
edifout_write_attributes = "false";
edifout_write_constraints = "false";
edifout_write_properties_list = {};

Then, I had to modify my symbol library to match Cadence requirements for 
set_route_grid and set_meter_scale.  Below is an example.  Synopsys would fail 
if one of the libraries had a different meter_scale or route_grid from the 
other.  I don't remember if the error message was exactly as you have but it 
sounds familar.  This was a problem because I was also using the generic library
for off sheet connectors, etc.  I had to create a special symbol library for 
this also.  We use a symbol library from Valid which allows us (somewhat) to go
back and forth between synopsys and valid schematic capture.  This must be 
modified to tell synopsys which symbol to use for a bus ripper.  To that symbol,
add the following lines:

	ripped_pin : B;    /* capalization counts!! */
	ripped_bits_property : BN;

Then you need to add some general lines to tell synopsys to use this library.
These go outside of the symbols but within the library definition.

  /* special symbol name declarations */
  logic_1_symbol : VDD;
  logic_0_symbol : GND;
  in_port_symbol : SYNOPINPORT;
  out_port_symbol : SYNOPOUTPORT;
  inout_port_symbol : SYNOPINOUT;
  in_osc_symbol : SYNOPINOSC;
  out_osc_symbol : SYNOPOUTOSC;
  inout_osc_symbol : SYNOPINOUTOSC;
 
} /* end of library "SYNOP.LIB" */

Here is the start of my special library.  Please note:  Even though I got 
everything to work using just my special libraries, synopsys still will give
you the message that it is loading the generic library.  This is all right
as long as it does not use it.  

library("special") {
  SCALE = 1.0 / 60.0;
  ROUTE_GRID = 10;
  set_route_grid(ROUTE_GRID);
  set_meter_scale(0.0254 / (480 * SCALE * ROUTE_GRID));
  symbol("AND2") {
    set_minimum_boundary(-180 * SCALE, -240 * SCALE, 384 * SCALE, 204 * SCALE);
    line(60 * SCALE, 156 * SCALE, 216 * SCALE, 156 * SCALE);
    line(216 * SCALE, -36 * SCALE, 60 * SCALE, -36 * SCALE);
    line(60 * SCALE, -36 * SCALE, 60 * SCALE, 156 * SCALE);
    line(0 * SCALE, 120 * SCALE, 60 * SCALE, 120 * SCALE);
    line(0 * SCALE, 0 * SCALE, 60 * SCALE, 0 * SCALE);
    line(300 * SCALE, 60 * SCALE, 360 * SCALE, 60 * SCALE);
    line(48 * SCALE, 132 * SCALE, 48 * SCALE, 108 * SCALE);
    arc(216 * SCALE, 156 * SCALE, 216 * SCALE, -36 * SCALE,\
        203.143 * SCALE, 60 * SCALE);
    pin("X", 360 * SCALE, 60 * SCALE, ANY_ROTATION);
    pin("B", 0 * SCALE, 0 * SCALE, ANY_ROTATION);
    pin("A", 0 * SCALE, 120 * SCALE, ANY_ROTATION);
  } /* end of symbol "AND2" */
} /* end of library "special" */

I hope this helps.  Obviously, in order to use this solution, you need the 
library compiler.  

Bruce A. Loyer
Motorola


 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)