( Post 115  Item 1 ) --------------------------------------------------------

From: "Bradshaw, Lee" <LBradshaw@engineer.clemsonsc.NCR.COM>
Subject: (Re: Post 114 Item 4) "Multi-Cycle State Machine Synthesis"

> after REQ is asserted, the hazard in the combinatorial circuitry while REQ
> going from 0 -> 1 may cause ACK and ACK* to temporarily not have opposite
> values;  this would clobber the next-state logic.
>
> I have a couple of questions for Synopsys users.  Is this scenario even
> possible?  If so, are there ways to detect it and correct it?

Yes, this is a problem.  We have seen generated circuits which could fail on 
real parts.  Synopsys seems intent on ignoring it -- we haven't gotten a 
good response in two years.  One way to fix the problem is to instantiate an 
and gate to block the changing signal.  One input is ACK (the changing 
signal), the other is a decode from your state machine which guarantees ACK 
is stable.  We generally use "dt_" as a prefix to the gate name and have 
"dont_touch dt_*" in our script file.  This does create a problem of having 
vendor parts in what should be portable code.

With 3.0, you can modify the method slightly.  You can instantiate an "and" 
gate (GTECH_AND2) from the generic library (gtech.db), and use the map_only 
attribute.  Use the prefix "smo_" and the command "set_map_only smo_*".  The 
map_only attribute tells compile to attempt to find a one-to-one match for 
the generic part functionality in the target library.  The cell which is 
instantiated will not be modified by logic optimization.  This will let you 
compile to any vendor library without changing your source code or translating.

The problem with this new method is that you must create a Verilog module to 
describe the functionality of any generic parts you instantiate.  Of course, 
for GTECH_AND2 you only have to map the pins to a Verilog primitive and.  
But if everyone who wants to write more vendor independent code uses this 
method, there will be many people writing multiple versions of the same 
model.  There would be far fewer hours spent if Synopsys would provide 
models with their generic libraries.  Someone should mention this at SNUG.  
One of the main advantages of the Synopsys tools is vendor independence.  
They may be happy to provide these libraries.

lee.bradshaw@clemsonsc.ncr.com


( Post 115  Item 2 ) --------------------------------------------------------

From: sgolson@trilobyte.com (Steve Golson)
Subject: Library Compiler 3.0a: sub_symbol Doesn't Rotate as Described

I'm using Synopsys 3.0a on SPARC under SunOS 4.1.3.

Page 4-18 of the Library Compiler Reference Manual gives the syntax of
sub_symbol as follows:

      sub_symbol ( symbol_name, x, y, r ) ;

where "The r value is the angle of rotation, from 0 to 360 degrees."

Actually, an r value of "1" gives you a rotation of  90 degrees,
          an r value of "2" gives you a rotation of 180 degrees,
          an r value of "3" gives you a rotation of 270 degrees, etc.

It's not clear whether this is a software bug or a documentation bug.

Steve Golson -- Trilobyte Systems -- Carlisle MA -- sgolson@trilobyte.com


( Post 115  Item 3 ) --------------------------------------------------------

From: knight@acuson.com (Jon Knight)
Subject: Can't Get Synopsys to Use Wider Gates

We are trying to implement a synthesized look-up table, but the results from
Synopsys contain an extremely high percentage of 2-input gates.  Our vendor
has found this to be unroutable.  Is there a way to force Synopsys to use wide
input gates (a PLA-like structure) without a 'don't use' on the 2-input gates?

  J. Knight, Acuson


( Post 115  Item 4 ) --------------------------------------------------------

From: jim@deming.b11.ingr.com (James Deming)
Subject: Semi-Static Register Values

	One of my modules produce combinational outputs based on the
value of some mode registers, some data path registers, and the current
state of the machine.  The mode registers do not change value for many
clocks before the module outputs are needed.  The data path registers
may change value on the same clock the output must be valid, or they
may be valid any number of clocks before hand.  The current state
changes every clock.

	For example:

		o1 = f(m,d);
		o2 = g(m,d) & (s == 2);

	where:
		m = mode register values
		d = data path register values
		s = current state
		f(m,d) = some arbitrary function of m and d
		g(m,d) = some arbitrary function of m and d
	and
		o1 must be valid on every clock
		o2 must be valid only in state 2.

	If I specify the arrival times of all the inputs based on the
clock-to-out of the registers that drive them, Synopsys can not
synthesize the circuit within the constraints.  It assumes that the mode
inputs create the worst case path, even though the mode registers are
valid long before the outputs need to be valid.  (If I specify negative
arrival times for these inputs, Synopsys adds delay to fix bogus hold
time violations.)

	I have used "disable_timing" on the mode inputs, but this fixes
only half the problem.  In the case of output o2, Synopsys can not meet
the constraints due to the data path inputs.  But o2 is only valid when
the machine is in state 2, and the data path inputs have been valid for
at least two clocks.  If I "disable_timing" on the data path inputs,
then output o1 may not be optimized to meet its contsraints.

	What is the best way to tell Synopsys how these inputs function
when the module is compiled alone, and when it is instantiated in the
complete circuit?

	Jim Deming
	Intergraph Corporation, Huntsville Alabama


( Post 115 Networking Section ) ---------------------------------------------

AMD, Austin TX, Logic Synthesis Apps. Eng. to participate in designs applying
Synopsys tools. Design experience required. Email: rajiv@dvorak.amd.com.


 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)