⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch16.4.htm

📁 介绍asci设计的一本书
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">

<HTML>

<HEAD>

<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">



<TITLE> 16.4&nbsp;Information Formats</TITLE></HEAD><!--#include file="top.html"--><!--#include file="header.html"-->



<DIV>

<P>[&nbsp;<A HREF="CH16.htm">Chapter&nbsp;start</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH16.3.htm">Previous&nbsp;page</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH16.5.htm">Next&nbsp;page</A>&nbsp;]</P><!--#include file="AmazonAsic.html"--><HR></DIV>

<H1 CLASS="Heading1">

<A NAME="pgfId=27094">

 </A>

16.4&nbsp;<A NAME="24725">

 </A>

Information Formats</H1>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=30260">

 </A>

With the increasing importance of interconnect a great deal of information needs to flow between design tools. There are some de facto standards that we shall look at next. Some of the companies involved are working toward releasing these formats as IEEE standards.</P>

<DIV>

<H2 CLASS="Heading2">

<A NAME="pgfId=23573">

 </A>

16.4.1&nbsp;<A NAME="39768">

 </A>

SDF for Floorplanning and Placement</H2>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=30198">

 </A>

In Section&nbsp;13.5.6, &#8220;SDF in Simulation,&#8221; we discussed the structure and use of the <A NAME="marker=30199">

 </A>

standard delay format (<A NAME="marker=30200">

 </A>

SDF) to describe gate delay and interconnect delay. We may also use SDF with floorplanning and synthesis tools to <SPAN CLASS="Definition">

back-annotate</SPAN>

<A NAME="marker=30201">

 </A>

 an interconnect delay. A synthesis tool can use this information to improve the logic structure. Here is a fragment of SDF:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=23923">

 </A>

	(INSTANCE B) (DELAY (ABSOLUTE</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=23925">

 </A>

		(<A NAME="marker=27966">

 </A>

INTERCONNECT A.INV8.OUT B.DFF1.Q (:0.6:) (:0.6:))))</P>

<P CLASS="Body">

<A NAME="pgfId=23968">

 </A>

In this example the rising and falling delay is 60 ps (equal to 0.6 units multiplied by the time scale of 100 ps per unit specified in a <SPAN CLASS="BodyComputer">

TIMESCALE</SPAN>

<A NAME="marker=29246">

 </A>

 construct that is not shown). The delay is specified between the output port of an inverter with instance name <SPAN CLASS="BodyComputer">

A.INV8</SPAN>

 in block A and the Q input port of a D flip-flop (instance name <SPAN CLASS="BodyComputer">

B.DFF1</SPAN>

) in block B. A <SPAN CLASS="BodyComputer">

'.'</SPAN>

 (period or fullstop) is set to be the <A NAME="marker=68158">

 </A>

hierarchy divider in another construct that is not shown.</P>

<P CLASS="Body">

<A NAME="pgfId=28245">

 </A>

There is another way of specifying interconnect delay using <SPAN CLASS="BodyComputer">

NETDELAY</SPAN>

 (a short form of the <SPAN CLASS="BodyComputer">

INTERCONNECT</SPAN>

 construct) as follows:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=28311">

 </A>

	(TIMESCALE 100ps) (INSTANCE B) (DELAY (ABSOLUTE</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=28249">

 </A>

	(<A NAME="marker=28248">

 </A>

NETDELAY net1 (0.6)))</P>

<P CLASS="Body">

<A NAME="pgfId=28250">

 </A>

In this case all delays from an output port to, possibly multiple, input ports have the same value (we can also specify the output port name instead of the net name to identify the net). Alternatively we can lump interconnect delay at an input port:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=28234">

 </A>

	(TIMESCALE 100ps) (INSTANCE B.DFF1) (DELAY (ABSOLUTE</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=28239">

 </A>

		(<A NAME="marker=28238">

 </A>

PORT CLR (16:18:22) (17:20:25))))</P>

<P CLASS="Body">

<A NAME="pgfId=27984">

 </A>

This <SPAN CLASS="BodyComputer">

PORT</SPAN>

 construct specifies an interconnect delay placed at the input port of a logic cell (in this case the <SPAN CLASS="BodyComputer">

CLR</SPAN>

 pin of a flip-flop). We do not need to specify the start of a path (as we do for <SPAN CLASS="BodyComputer">

INTERCONNECT</SPAN>

). </P>

<P CLASS="Body">

<A NAME="pgfId=28285">

 </A>

We can also use SDF to <SPAN CLASS="Definition">

forward-annotate</SPAN>

<A NAME="marker=28293">

 </A>

 path delays using <SPAN CLASS="Definition">

timing constraints</SPAN>

<A NAME="marker=28298">

 </A>

 (there may be hundreds or thousands of these in a file). A synthesis tool can pass this information to the floorplanning and placement steps to allow them to create better layout. SDF describes timing checks using a range of <SPAN CLASS="BodyComputer">

TIMINGCHECK</SPAN>

 constructs. Here is an example of a single path constraint:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=24483">

 </A>

(TIMESCALE 100ps) (INSTANCE B) (<A NAME="marker=24664">

 </A>

TIMINGCHECK</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=23974">

 </A>

	(<A NAME="marker=24510">

 </A>

PATHCONSTRAINT A.AOI22_1.O B.ND02_34.O (0.8) (0.8)))</P>

<P CLASS="Body">

<A NAME="pgfId=23999">

 </A>

This describes a constraint (keyword <SPAN CLASS="BodyComputer">

PATHCONSTRAINT</SPAN>

<A NAME="marker=27997">

 </A>

) for the rising and falling delays between two ports at each end of a path (which may consist of several nets) to be less than 80 ps. Using the <SPAN CLASS="BodyComputer">

SUM</SPAN>

<A NAME="marker=28083">

 </A>

 construct we can constrain the sum of path delays to be less than a specific value as follows:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=28068">

 </A>

(TIMESCALE 100ps) (INSTANCE B) (<A NAME="marker=28067">

 </A>

TIMINGCHECK</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=28070">

 </A>

	(SUM (AOI22_1.O ND02_34.I1) (ND02_34.O ND02_35.I1) (0.8)))</P>

<P CLASS="Body">

<A NAME="pgfId=28061">

 </A>

We can also constrain skew between two paths (in this case to be less than 10 ps) using the <SPAN CLASS="BodyComputer">

DIFF</SPAN>

<A NAME="marker=28042">

 </A>

 construct:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=24487">

 </A>

(TIMESCALE 100ps) (INSTANCE B) (TIMINGCHECK</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=24003">

 </A>

	(<A NAME="marker=24509">

 </A>

DIFF (A.I_1.O B.ND02_1.I1) (A.I_1.O.O B.ND02_2.I1) (0.1)))</P>

<P CLASS="Body">

<A NAME="pgfId=24019">

 </A>

In addition we can constrain the <A NAME="marker=24528">

 </A>

skew between a reference signal (normally the clock) and all other ports in an instance (again in this case to be less than 10 ps) using the <SPAN CLASS="BodyComputer">

SKEWCONSTRAINT</SPAN>

<A NAME="marker=28043">

 </A>

 construct:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=24504">

 </A>

(TIMESCALE 100ps) (INSTANCE B) (TIMINGCHECK</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=24021">

 </A>

	(<A NAME="marker=24511">

 </A>

SKEWCONSTRAINT (posedge clk) (0.1)))</P>

<P CLASS="Body">

<A NAME="pgfId=24608">

 </A>

At present there is no easy way in SDF to constrain the skew between a reference signal and other signals to be greater than a specified amount.</P>

</DIV>

<DIV>

<H2 CLASS="Heading2">

<A NAME="pgfId=24044">

 </A>

16.4.2&nbsp;PDEF</H2>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=23574">

 </A>

The <A NAME="marker=23869">

 </A>

<SPAN CLASS="Definition">

physical design exchange format</SPAN>

 (<SPAN CLASS="Definition">

PDEF</SPAN>

<A NAME="marker=23871">

 </A>

<A NAME="marker=67925">

 </A>

) is a proprietary file format used by Synopsys to describe placement information and the <A NAME="marker=24533">

 </A>

clustering of logic cells. Here is a simple, but complete PDEF file:</P>

<P CLASS="ComputerFirst">

<A NAME="pgfId=23632">

 </A>

(CLUSTERFILE</P>

<P CLASS="Computer">

<A NAME="pgfId=23633">

 </A>

	(PDEFVERSION &quot;1.0&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23636">

 </A>

	(DESIGN &quot;myDesign&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23640">

 </A>

	(DATE &quot;THU AUG 6 12:00 1995&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23641">

 </A>

	(VENDOR &quot;ASICS_R_US&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23642">

 </A>

	(PROGRAM &quot;PDEF_GEN&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23645">

 </A>

	(VERSION &quot;V2.2&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23648">

 </A>

	(DIVIDER .)</P>

<P CLASS="Computer">

<A NAME="pgfId=23651">

 </A>

	(<A NAME="marker=24512">

 </A>

CLUSTER (NAME &quot;ROOT&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23652">

 </A>

		(WIRE_LOAD &quot;10mm x 10mm&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23653">

 </A>

		(UTILIZATION 50.0)</P>

<P CLASS="Computer">

<A NAME="pgfId=23654">

 </A>

		(MAX_UTILIZATION 60.0)</P>

<P CLASS="Computer">

<A NAME="pgfId=23655">

 </A>

		(X_BOUNDS 100 1000)</P>

<P CLASS="Computer">

<A NAME="pgfId=23661">

 </A>

		(Y_BOUNDS 100 1000)</P>

<P CLASS="Computer">

<A NAME="pgfId=23662">

 </A>

			(CLUSTER (NAME &quot;LEAF_1&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23665">

 </A>

				(WIRE_LOAD &quot;50k gates&quot;)</P>

<P CLASS="Computer">

<A NAME="pgfId=23666">

 </A>

				(UTILIZATION 50.0)</P>

<P CLASS="Computer">

<A NAME="pgfId=23667">

 </A>

				(MAX_UTILIZATION 60.0)</P>

<P CLASS="Computer">

<A NAME="pgfId=23668">

 </A>

				(X_BOUNDS 100 500)</P>

<P CLASS="Computer">

<A NAME="pgfId=23669">

 </A>

				(Y_BOUNDS 100 200)</P>

<P CLASS="Computer">

<A NAME="pgfId=23672">

 </A>

				(CELL (NAME L1.RAM01)</P>

<P CLASS="Computer">

<A NAME="pgfId=23675">

 </A>

				(CELL (NAME L1.ALU01)</P>

<P CLASS="Computer">

<A NAME="pgfId=23676">

 </A>

				)</P>

<P CLASS="Computer">

<A NAME="pgfId=23677">

 </A>

		)</P>

<P CLASS="ComputerLast">

<A NAME="pgfId=23678">

 </A>

)</P>

<P CLASS="Body">

<A NAME="pgfId=26528">

 </A>

This file describes two clusters:</P>

<UL>

<LI CLASS="BulletFirst">

<A NAME="pgfId=26529">

 </A>

<SPAN CLASS="BodyComputer">

ROOT</SPAN>

, which is the top-level (the whole chip). The file describes the size (<SPAN CLASS="Emphasis">

x</SPAN>

- and <SPAN CLASS="Emphasis">

y</SPAN>

-bounds), current and maximum area utilization (i.e., leaving space for interconnect), and the name of the wire-load table, '<SPAN CLASS="BodyComputer">

10mm&nbsp;x&nbsp;10mm</SPAN>

', to use for this block, chosen because the chip is expected to be about 10 mm on a side.</LI>

<LI CLASS="BulletLast">

<A NAME="pgfId=26532">

 </A>

<SPAN CLASS="BodyComputer">

LEAF_1</SPAN>

, a block below the top level in the hierarchy. This block is to use predicted capacitances from a wire-load table named <SPAN CLASS="BodyComputer">

'50k gates'</SPAN>

 (chosen because we know there are roughly 50 k-gate in this block). The <SPAN CLASS="BodyComputer">

LEAF_1</SPAN>

 block contains two logic cells: <SPAN CLASS="BodyComputer">

L1.RAM01</SPAN>

 and <SPAN CLASS="BodyComputer">

L1.ALU01</SPAN>

.</LI>

</UL>

</DIV>

<DIV>

<H2 CLASS="Heading2">

<A NAME="pgfId=24448">

 </A>

16.4.3&nbsp;<A NAME="35783">

 </A>

LEF and DEF</H2>

<P CLASS="BodyAfterHead">

<A NAME="pgfId=24453">

 </A>

The <SPAN CLASS="Definition">

library exchange format</SPAN>

<A NAME="marker=24449">

 </A>

 (<SPAN CLASS="Definition">

LEF</SPAN>

<A NAME="marker=24450">

 </A>

<A NAME="marker=67926">

 </A>

) and <SPAN CLASS="Definition">

design exchange format</SPAN>

<A NAME="marker=24451">

 </A>

 (<SPAN CLASS="Definition">

DEF</SPAN>

<A NAME="marker=24452">

 </A>

<A NAME="marker=67927">

 </A>

) are both proprietary formats originated by Tangent in the <A NAME="marker=67930">

 </A>

TanCell and <A NAME="marker=67931">

 </A>

TanGate place-and-route tools which were bought by Cadence and now known as <A NAME="marker=67928">

 </A>

Cell3 Ensemble and <A NAME="marker=67929">

 </A>

Gate Ensemble respectively. These tools, and their derivatives, are so widely used that these formats have become a de facto standard. LEF is used to define an IC process and a logic cell library. For example, you would use LEF to describe a gate array: the base cells, the legal sites for base cells, the logic macros with their size and connectivity information, the interconnect layers and other information to set up the database that the physical design tools need. You would use DEF to describe all the physical aspects of a particular chip design including the netlist and physical location of cells on the chip. For example, if you had a complete placement from a floorplanning tool and wanted to exchange this information with Cadence Gate Ensemble or Cell3 Ensemble, you would use DEF.</P>

</DIV>

<HR><P>[&nbsp;<A HREF="CH16.htm">Chapter&nbsp;start</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH16.3.htm">Previous&nbsp;page</A>&nbsp;]&nbsp;[&nbsp;<A HREF="CH16.5.htm">Next&nbsp;page</A>&nbsp;]</P></BODY>



<!--#include file="Copyright.html"--><!--#include file="footer.html"-->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -