ch08.3.htm
来自「介绍asci设计的一本书」· HTM 代码 · 共 1,318 行 · 第 1/3 页
HTM
1,318 行
<P CLASS="Computer">
<A NAME="pgfId=74591">
</A>
; ALSPATCHREV .1</P>
<P CLASS="Computer">
<A NAME="pgfId=74592">
</A>
; NODEID 72705192</P>
<P CLASS="Computer">
<A NAME="pgfId=74593">
</A>
; VAR FAMILY 1400</P>
<P CLASS="Computer">
<A NAME="pgfId=74594">
</A>
; ENDHEADER</P>
<P CLASS="Computer">
<A NAME="pgfId=74595">
</A>
DEF halfgate_io; myInput, myOutput.</P>
<P CLASS="Computer">
<A NAME="pgfId=74596">
</A>
USE ADLIB:INBUF; INBUF_2.</P>
<P CLASS="Computer">
<A NAME="pgfId=74597">
</A>
USE ADLIB:OUTBUF; OUTBUF_3.</P>
<P CLASS="Computer">
<A NAME="pgfId=74598">
</A>
USE ADLIB:INV; u2.</P>
<P CLASS="Computer">
<A NAME="pgfId=74599">
</A>
NET DEF_NET_8; u2:A, INBUF_2:Y.</P>
<P CLASS="Computer">
<A NAME="pgfId=74600">
</A>
NET DEF_NET_9; myInput, INBUF_2:PAD.</P>
<P CLASS="Computer">
<A NAME="pgfId=74601">
</A>
NET DEF_NET_11; OUTBUF_3:D, u2:Y.</P>
<P CLASS="Computer">
<A NAME="pgfId=74602">
</A>
NET DEF_NET_12; myOutput, OUTBUF_3:PAD.</P>
<P CLASS="Computer">
<A NAME="pgfId=74603">
</A>
END.</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Computer">
<A NAME="pgfId=74605">
</A>
; HEADER</P>
<P CLASS="Computer">
<A NAME="pgfId=74606">
</A>
; FILEID STF ./halfgate_io.stf c96ef4d8</P>
<P CLASS="Computer">
<A NAME="pgfId=74607">
</A>
</P>
<P CLASS="Computer">
<A NAME="pgfId=74608">
</A>
... lines omitted ... (126 lines total)</P>
<P CLASS="Computer">
<A NAME="pgfId=74609">
</A>
</P>
<P CLASS="Computer">
<A NAME="pgfId=74610">
</A>
DEF halfgate_io.</P>
<P CLASS="Computer">
<A NAME="pgfId=74611">
</A>
USE ; INBUF_2/U0;</P>
<P CLASS="Computer">
<A NAME="pgfId=74612">
</A>
TPADH:'11:26:37',</P>
<P CLASS="Computer">
<A NAME="pgfId=74613">
</A>
TPADL:'13:30:41',</P>
<P CLASS="Computer">
<A NAME="pgfId=74614">
</A>
TPADE:'12:29:41',</P>
<P CLASS="Computer">
<A NAME="pgfId=74615">
</A>
TPADD:'20:48:70',</P>
<P CLASS="Computer">
<A NAME="pgfId=74616">
</A>
TYH:'8:20:27',</P>
<P CLASS="Computer">
<A NAME="pgfId=74617">
</A>
TYL:'12:28:39'.</P>
<P CLASS="Computer">
<A NAME="pgfId=74618">
</A>
PIN u2:A;</P>
<P CLASS="Computer">
<A NAME="pgfId=74619">
</A>
RDEL:'13:31:42',</P>
<P CLASS="Computer">
<A NAME="pgfId=74620">
</A>
FDEL:'11:26:37'.</P>
<P CLASS="Computer">
<A NAME="pgfId=74621">
</A>
USE ; OUTBUF_3/U0;</P>
<P CLASS="Computer">
<A NAME="pgfId=74622">
</A>
TPADH:'11:26:37',</P>
<P CLASS="Computer">
<A NAME="pgfId=74623">
</A>
TPADL:'13:30:41',</P>
<P CLASS="Computer">
<A NAME="pgfId=74624">
</A>
TPADE:'12:29:41',</P>
<P CLASS="Computer">
<A NAME="pgfId=74625">
</A>
TPADD:'20:48:70',</P>
<P CLASS="Computer">
<A NAME="pgfId=74626">
</A>
TYH:'8:20:27',</P>
<P CLASS="Computer">
<A NAME="pgfId=74627">
</A>
TYL:'12:28:39'.</P>
<P CLASS="Computer">
<A NAME="pgfId=74628">
</A>
PIN OUTBUF_3/U0:D;</P>
<P CLASS="Computer">
<A NAME="pgfId=74629">
</A>
RDEL:'14:32:45',</P>
<P CLASS="Computer">
<A NAME="pgfId=74630">
</A>
FDEL:'11:26:37'.</P>
<P CLASS="Computer">
<A NAME="pgfId=74631">
</A>
END.</P>
</TD>
</TR>
</TABLE>
</DIV>
<DIV>
<H2 CLASS="Heading2">
<A NAME="pgfId=68188">
</A>
8.3.3 Altera</H2>
<P CLASS="BodyAfterHead">
<A NAME="pgfId=68203">
</A>
Because Altera complex PLDs use a deterministic routing structure, they can be designed more easily using a self-contained software package—an “all-in-one” software package using a single interface. We shall assume that we can generate a netlist that the Altera software can accept using Cadence, Mentor, or Compass software with an Altera design kit (the most convenient format is EDIF).</P>
<P CLASS="Body">
<A NAME="pgfId=76506">
</A>
<A HREF="CH08.3.htm#22211" CLASS="XRef">
Table 8.8</A>
shows the EDIF preroute netlist in a format that the Altera software can accept. This netlist file describes a single inverter (the line 'cellRef not'). The majority of the EDIF code in <A HREF="CH08.3.htm#22211" CLASS="XRef">
Table 8.8</A>
is a standard template to pass information about how the VDD and VSS nodes are named, which libraries are used, the name of the design, and so on. We shall cover EDIF in Chapter <A HREF="/Humuhumu/from Antibes/Prof.htm#26147" CLASS="XRef">
9</A>
. </P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="TableTitle">
<A NAME="pgfId=76514">
</A>
TABLE 8.8 <A NAME="22211">
</A>
EDIF netlist in Altera format for the halfgate ASIC.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Table">
<A NAME="pgfId=76592">
</A>
</P>
<DIV>
<MAP NAME="CH08-7">
</MAP>
<IMG SRC="CH08-7.gif" USEMAP="#CH08-7">
</DIV>
</TD>
</TR>
</TABLE>
<P CLASS="Body">
<A NAME="pgfId=93076">
</A>
<A HREF="CH08.3.htm#35532" CLASS="XRef">
Table 8.9</A>
shows a small part of the reports generated by the Altera software after completion of the place-and-route step. This report tells us how the software has used the basic logic cells, interconnect, and I/O cells to implement our design. With practice it is possible to read the information from reports such as <A HREF="CH08.3.htm#35532" CLASS="XRef">
Table 8.9</A>
directly, but it is a little easier if we also look at the netlist. The EDIF version of postroute netlist for this example is large. Fortunately, the Altera software can also generate a Verilog version of the postroute netlist. Here is the generated Verilog postroute netlist, halfgate_p.vo (not <SPAN CLASS="BodyComputer">
'.v'</SPAN>
), for the halfgate design:</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="2">
<P CLASS="TableTitle">
<A NAME="pgfId=93080">
</A>
TABLE 8.9 <A NAME="35532">
</A>
Report for the halfgate ASIC fitted to an Altera MAX 7000 complex PLD.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="2">
<P CLASS="Computer">
<A NAME="pgfId=93084">
</A>
** INPUTS ** </P>
<P CLASS="Computer">
<A NAME="pgfId=93085">
</A>
Shareable</P>
<P CLASS="Computer">
<A NAME="pgfId=93086">
</A>
Expanders Fan-In Fan-Out</P>
<P CLASS="Computer">
<A NAME="pgfId=93087">
</A>
Pin LC LAB Primitive Code Total Shared n/a INP FBK OUT FBK Name</P>
<P CLASS="Computer">
<A NAME="pgfId=93088">
</A>
43 - - INPUT 0 0 0 0 0 0 1 myInput</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="2">
<P CLASS="Computer">
<A NAME="pgfId=93092">
</A>
** OUTPUTS ** </P>
<P CLASS="Computer">
<A NAME="pgfId=93093">
</A>
Shareable</P>
<P CLASS="Computer">
<A NAME="pgfId=93094">
</A>
Expanders Fan-In Fan-Out</P>
<P CLASS="Computer">
<A NAME="pgfId=93095">
</A>
Pin LC LAB Primitive Code Total Shared n/a INP FBK OUT FBK Name</P>
<P CLASS="Computer">
<A NAME="pgfId=93096">
</A>
41 17 B OUTPUT t 0 0 0 1 0 0 0 myOutput</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="2">
<P CLASS="Computer">
<A NAME="pgfId=93100">
</A>
** LOGIC CELL INTERCONNECTIONS **</P>
<P CLASS="Computer">
<A NAME="pgfId=93101">
</A>
Logic Array Block 'B': </P>
<P CLASS="Computer">
<A NAME="pgfId=93102">
</A>
+- LC17 myOutput</P>
<P CLASS="Computer">
<A NAME="pgfId=93103">
</A>
|</P>
<P CLASS="Computer">
<A NAME="pgfId=93104">
</A>
LC | | A B | Name</P>
<P CLASS="Computer">
<A NAME="pgfId=93105">
</A>
</P>
<P CLASS="Computer">
<A NAME="pgfId=93106">
</A>
Pin</P>
<P CLASS="Computer">
<A NAME="pgfId=93107">
</A>
43 -> * | - * | myInput</P>
<P CLASS="Computer">
<A NAME="pgfId=93108">
</A>
</P>
<P CLASS="Computer">
<A NAME="pgfId=93109">
</A>
* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA.</P>
<P CLASS="Computer">
<A NAME="pgfId=93110">
</A>
- = The logic cell or pin is not an input to the logic cell (or LAB).</P>
</TD>
</TR>
</TABLE>
<P CLASS="ComputerFirst">
<A NAME="pgfId=93117">
</A>
// halfgate_p (EPM7032LC44) MAX+plus II Version 5.1 RC6 10/03/94 </P>
<P CLASS="Computer">
<A NAME="pgfId=68411">
</A>
// Wed Jul 17 04:07:10 1996</P>
<P CLASS="Computer">
<A NAME="pgfId=68412">
</A>
`timescale 100 ps / 100 ps</P>
<P CLASS="ComputerFirst">
<A NAME="pgfId=68413">
</A>
<B CLASS="Keyword">
module</B>
TRI_halfgate_p( IN, OE, OUT ); <B CLASS="Keyword">
input</B>
IN; <B CLASS="Keyword">
input</B>
OE; <B CLASS="Keyword">
output</B>
OUT;</P>
<P CLASS="Computer">
<A NAME="pgfId=68414">
</A>
bufif1 ( OUT, IN, OE );</P>
<P CLASS="Computer">
<A NAME="pgfId=68415">
</A>
<B CLASS="Keyword">
specify</B>
</P>
<P CLASS="Computer">
<A NAME="pgfId=68416">
</A>
<B CLASS="Keyword">
specparam</B>
TTRI = 40; <B CLASS="Keyword">
specparam</B>
TTXZ = 60; <B CLASS="Keyword">
specparam</B>
TTZX = 60;</P>
<P CLASS="Computer">
<A NAME="pgfId=68417">
</A>
(IN => OUT) = (TTRI,TTRI);</P>
<P CLASS="Computer">
<A NAME="pgfId=68418">
</A>
(OE => OUT) = (0,0, TTXZ, TTZX, TTXZ, TTZX);</P>
<P CLASS="Computer">
<A NAME="pgfId=68419">
</A>
<B CLASS="Keyword">
endspecify</B>
</P>
<P CLASS="Computer">
<A NAME="pgfId=68420">
</A>
<B CLASS="Keyword">
endmodule</B>
</P>
<P CLASS="ComputerFirst">
<A NAME="pgfId=68421">
</A>
<B CLASS="Keyword">
module</B>
halfgate_p (myInput, myOutput);</P>
<P CLASS="Computer">
<A NAME="pgfId=68422">
</A>
<SPAN CLASS="Bold">
input</SPAN>
myInput; <SPAN CLASS="Bold">
output</SPAN>
myOutput; supply0 gnd; supply1 vcc;</P>
<P CLASS="Computer">
<A NAME="pgfId=68423">
</A>
<SPAN CLASS="Bold">
wire</SPAN>
B1_i1, myInput, myOutput, N_8, N_10, N_11, N_12, N_14;</P>
<P CLASS="Computer">
<A NAME="pgfId=68424">
</A>
TRI_halfgate_p tri_2 ( .OUT(myOutput), .IN(N_8), .OE(vcc) );</P>
<P CLASS="Computer">
<A NAME="pgfId=68425">
</A>
TRANSPORT transport_3 ( N_8, N_8_A );</P>
<P CLASS="Computer">
<A NAME="pgfId=68426">
</A>
<SPAN CLASS="Bold">
defparam</SPAN>
transport_3.DELAY = 10;</P>
<P CLASS="Computer">
<A NAME="pgfId=68427">
</A>
<SPAN CLASS="Bold">
and</SPAN>
delay_3 ( N_8_A, B1_i1 );</P>
<P CLASS="Computer">
<A NAME="pgfId=68428">
</A>
<SPAN CLASS="Bold">
xor</SPAN>
xor2_4 ( B1_i1, N_10, N_14 );</P>
<P CLASS="Computer">
<A NAME="pgfId=68429">
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?