ASICs...THE COURSE (1 WEEK)
1
PROGRAMMABLE
ASIC DESIGN
SOFTWARE
8.1 Design Systems
Key concepts: There are five components of a programmable ASIC or FPGA :
(1) the programming technology
(2) the basic logic cell
(3) the I/O cell
(4) the interconnect
(5) the design software that allows you to program the ASIC
The design software is much more closely tied to the FPGA architecture than is the case for
other types of ASICs
Keywords: design kits ? original equipment manufacturer (OEM) ? generic cell library ? hard-
ware description languages (HDLs) ? ABEL (pronounced “able”) ? CUPL (“cupple”) ? PALASM
(“pal-azzam”) ? VHDL ? Verilog ? logic simulator ? back-annotation ? postlayout timing
information ? postlayout netlist (also called a back-annotated netlist) ? postlayout timing simu-
lation ? timing-analysis ? timing constraint ? timing violation ? forward-annotation
8
2 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
8.1.1 Xilinx
The Xilinx FPGA design flow
(The program names and file names change with the newer Xilinx Alliance and Foundation
tools, but the information flow is identical.)
.LCAnetlist
xmake partition logicinto CLBs
.BITfile
makebits createprogrammingfile
.XNFnetlist
ppr/apr place androuteback-annotated
netlist with delays
netlist withoutdelays.XNFnetlist
prelayoutsimulation design entrystart
...toxnf
postlayoutsimulation
1ns
netlistwith unitdelays
Xilinxsoftware
S01
m2_1 Xilinx celllibrary
to FPGA or PROM
10011000...
1.12 ns
14 2 3
9
5 6 7 8
ASICs... THE COURSE 8.1 Design Systems 3
8.1.2 Actel
File types used by Actel design software (an example—these change often)
ADL Main design netlist
IPF Partial or complete pin assignment for the design
CRT Net criticality
VALIDATED Audit information
COB List of macros removed from design
VLD Information, warning, and error messages
PIN Complete pin assignment for the design
DFR Information about routability and I/O assignment quality
LOC Placement of non-I/O macros, pin swapping, and freeway assignment
PLI Feedback from placement step
SEG Assignment of horizontal routing segments
STF Back-annotation timing
RTI Feedback from routing step
FUS Fuse coordinates (column-track, row-track)
DEL Delays for input pins, nets, and I/O modules
AVI Fuse programming times and currents for last chip programmed
4 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
FPGA state-machine language (an example of “third-party” tools)
LOG/iC state-machine language PALASM version
*IDENTIFICATION
sequence detector
LOG/iC code
*X-NAMES
X; !input
*Y-NAMES
D; !output, D = 1 when three 1's
appear on X
*FLOW-TABLE
;State, X input, Y output, next
state
S1, X1, Y0, F2;
S1, X0, Y0, F1;
S2, X1, Y0, F3;
S2, X0, Y0, F1;
S3, X1, Y0, F4;
S3, X0, Y0, F1;
S4, X1, Y1, F4;
S4, X0, Y0, F1;
*STATE-ASSIGNMENT
BINARY;
*RUN-CONTROL
PROGFORMAT = P-EQUATIONS;
*END
TITLE sequence detector
CHIP MEALY USER
CLK Z QQ2 QQ1 X
EQUATIONS
Z = X * QQ2 * QQ1
QQ2 := X * QQ1 + X * QQ2
QQ1 := X * QQ2 + X * /QQ1
ASICs... THE COURSE 8.2 Logic Synthesis 5
8.1.3 Altera
8.2 Logic Synthesis
It is easier to write A = B + C than to draw an FPGA schematic for a 32-bit adder at the gate
level
Altera uses a self-contained design system, MAX+plus (as well as an interface to EDIF for
third-party schematic entry or logic synthesis).
? The interconnect scheme in Altera complex PLDs is nearly deterministic, simplifying the
physical-design software as well as eliminating the need for back-annotation and a postlayout
simulation.
? As Altera FPGAs become larger and more complex, some cases require signals to make
more than one pass through the routing structures or travel large distances across the Altera
FastTrack interconnect. It is possible to tell if this will be the case only by trying to place and
route an Altera device.
Key concepts, facts, and terms: logic synthesis ? logic minimization ? mapping ? fine-grain
architecture ? coarse-grain architecture ? vendor independence ? Synplicity ? Synopsys FPGA
Express ? FPGA Compiler ? Design Compiler ? Exemplar ? X-BLOX ? LPM ? IP cores
6 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
8.2.1 FPGA Synthesis
The VHDL code for a sequence detector
entity detector is port (X, CLK: in BIT; Z : out BIT); end;
architecture behave of detector is
type states is (S1, S2, S3, S4);
signal current, next: states;
begin
combinational: process begin
case current is
when S1 =>
if X = '1' then Z <= '0'; next <= S3; else Z <= '0'; next <=
S1; end if;
when S2 =>
if X = '1' then Z <= '0'; next <= S2; else Z <= '0'; next <=
S1; end if;
when S3 =>
if X = '1' then Z <= '0'; next <= S2; else Z <= '0'; next <=
S1; end if;
when S4 =>
if X = '1' then Z <= '1'; next <= S4; else Z <= '0'; next <=
S1; end if
end case;
end process
sequential: process begin
wait until CLK'event and CLK = '1'; current <= next ;
end process;
end behave;
A Synopsys script
/design checking/
search_path = .
/use the TI cell libraries/
link_library = tpc10.db
target_library = tpc10.db
symbol_library = tpc10.sdb
read -f vhdl detector.vhd
current_design = detector
write -n -f db -hierarchy -0
detector.db
check_design > detector.rpt
report_design > detector.rpt
/optimize for area/
max_area 0.0
compile
write -h -f db -o detector_opt.db
report -area -cell -timing >
detector.rpt
free -all
/write EDIF netlist/
write -h -f edif -0
exit
ASICs... THE COURSE 8.3 The Halfgate ASIC 7
8.3 The Halfgate ASIC
8 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
8.3.1 Xilinx
Design flow for the Xilinx implementation of the halfgate ASIC
Script (using Compass tools as an example) Design flow
# halfgate.xilinx.inp
shell setdef
path working xc4000d xblox cmosch000x
quit
asic
open [v]halfgate
synthesize
save [nls]halfgate_p
quit
fpga
set tag xc4000
set opt area
optimize [nls]halfgate_p
quit
qtv
open [nls]halfgate_p
trace critical
print trace [txt]halfgate_p
quit
shell vuterm
exec xnfmerge -p 4003PC84 halfgate_p >
/dev/null
exec xnfprep halfgate_p > /dev/null
exec ppr halfgate_p > /dev/null
exec makebits -w halfgate_p > /dev/null
exec lca2xnf -g -v halfgate_p
halfgate_b > /dev/null
quit
manager notice
utility netlist
open [xnf]halfgate_b
save [nls]halfgate_b
save [edf]halfgate_b
quit
qtv
open [nls]halfgate_b
trace critical
print trace [txt]halfgate_b
quit
3
4
5
1
2
XSYM2 XSYM1myInput myOutput
_IN_myInput OBUFIBUF 2.8ns 11.6ns
1nsmyInput myOutput
_IN_myInput_IBUF myOutput_OBUFmyInput myOutput
_IN_myInput OBUFIBUF
myInput myOutput
myOutput = ~myInput
4
3
2
1
5
ASICs... THE COURSE 8.3 The Halfgate ASIC 9
The Xilinx files for the halfgate ASIC
Verilog file (halfgate.v)
Preroute XNF file (halfgate_p.xnf)
module halfgate(myInput, myOutput); input myInput; output
myOutput; wire myOutput;
assign myOutput = ~myInput;
endmodule
LCANET, 5
USER, FPGA-Optimizer, 4.1,
Date:960710 , Option: Area
PROG, FPGA-Optimizer, 4.1,
"Lib=4000"
PART, 4010PG191
PWR, 0, GND
PWR, 1, VCC
SYM,_IN_myInput_IBUF,IBUF,LIB
VER=2.0.0
PIN, I, I, myInput,
PIN, O, O, _IN_myInput,
END
EXT, myInput, I,
SYM,
myOutput_obuf,OBUF,LIBVER=
2.0.0,
PIN, I, I, _IN_myInput,,
INV
PIN, O, O, myOutput,
END
EXT, myOutput, O,
EOF
10 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
LCA file (halfgate_p.lca)
Postroute XNF file (halfgate_b.xnf)
;: halfgate_p.lca (4003PC84-
4), makebits 5.2.0, Tue Jul 16
20:09:43 1996
Version 2
Design 4003PC84 4 0
Speed -4
Addnet PAD_myInput PAD61.I2
PAD1.O
Netdelay PAD_myInput PAD1.O
3.1
Program PAD_myInput {65G521}
{65G287} {65G50} {63G50}
{52G50} {45G50}
NProgram PAD_myInput
col.B.long.3:PAD1.O
col.B.long.3:row.G.local.1
col.B.long.3:row.M.local.5-s
MB.
40.1.14 MB.40.1.35
row.M.local.5:PAD61.I2
Editblk PAD61
Base IO
Config INFF: I1: I2:I O:
OUT: PAD: TRI:
Endblk
Editblk PAD1
Base IO
Config INFF: I1: I2: O:
OUT:O:NOT PAD: TRI:
Endblk
Nameblk PAD61 myInput
Nameblk PAD1 myOutput
Intnet myOutput PAD
myOutput
Intnet myInput PAD myInput
System FGG 0 VERS 2 !
System FGG 1 GD0 0 !
LCANET, 4
PROG, LCA2XNF, 5.2.0, "COMMAND
= -g -v halfgate_p halfgate_b
TIME = Tue Jul 16 21:53:31
1996"
PART, 4003PC84-4
SYM, XSYM1, OBUF, SLOW
PIN, O, O, myOutput, 3.0
PIN, I, I, _IN_myInput,
8.6, INV
END
SYM, XSYM2, IBUF
PIN, O, O, _IN_myInput,
2.8
PIN, I, I, myInput
END
EXT, myOutput, O, 10
EXT, myInput, I, 29
EOF
ASICs... THE COURSE 8.3 The Halfgate ASIC 11
8.3.2 Actel
The Actel files for the halfgate ASIC
ADL file STF file
; HEADER
; FILEID ADL ./halfgate_io.adl
85e8053b
; CHECKSUM 85e8053b
; PROGRAM certify
; VERSION 23/1
; ALSMAJORREV 2
; ALSMINORREV 3
; ALSPATCHREV .1
; NODEID 72705192
; VAR FAMILY 1400
; ENDHEADER
DEF halfgate_io; myInput,
myOutput.
USE ADLIB:INBUF; INBUF_2.
USE ADLIB:OUTBUF; OUTBUF_3.
USE ADLIB:INV; u2.
NET DEF_NET_8; u2:A, INBUF_2:Y.
NET DEF_NET_9; myInput,
INBUF_2:PAD.
NET DEF_NET_11; OUTBUF_3:D, u2:Y.
NET DEF_NET_12; myOutput,
OUTBUF_3:PAD.
END.
; HEADER
; FILEID STF ./halfgate_io.stf
c96ef4d8
... lines omitted ... (126 lines
total)
DEF halfgate_io.
USE ; INBUF_2/U0;
TPADH:'11:26:37',
TPADL:'13:30:41',
TPADE:'12:29:41',
TPADD:'20:48:70',
TYH:'8:20:27',
TYL:'12:28:39'.
PIN u2:A;
RDEL:'13:31:42',
FDEL:'11:26:37'.
USE ; OUTBUF_3/U0;
TPADH:'11:26:37',
TPADL:'13:30:41',
TPADE:'12:29:41',
TPADD:'20:48:70',
TYH:'8:20:27',
TYL:'12:28:39'.
PIN OUTBUF_3/U0:D;
RDEL:'14:32:45',
FDEL:'11:26:37'.
END.
12 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
8.3.3 Altera
EDIF netlist in Altera format for the halfgate ASIC
(edif halfgate_p
(edifVersion 2 0 0)
(edifLevel 0)
(keywordMap
(keywordLevel 0))
(status
(written
(timeStamp 1996 7
10 23 55 8)
(program "COMPASS
Design Automation --
EDIF Interface"
(version "v9r1.2
last updated 26-Mar-
96"))
(author
"mikes")))
(library flex8kd
(edifLevel 0)
(technology
(numberDefinition
)
(simulationInfo
(logicValue H)
(logicValue
L)))
(cell not
(cellType
GENERIC)
(view
COMPASS_mde_view
(viewType
NETLIST)
(interface
(port IN
(direction
INPUT))
(port OUT
(direction
OUTPUT))
(designator
"@@Label")))))
(library working
(edifLevel 0)
(technology
(numberDefinition
)
(simulationInfo
(logicValue H)
(logicValue
L)))
(cell halfgate_p
(cellType
GENERIC)
(view
COMPASS_nls_view
(viewType
NETLIST)
(interface
(port myInput
(direction
INPUT))
(port myOutput
(direction
OUTPUT))
(designator
"@@Label"))
(contents
(instance B1_i1
(viewRef
COMPASS_mde_view
(cellRef not
(libraryRef
flex8kd))))
(net myInput
(joined
(portRef
myInput)
(portRef IN
(instanceRef
B1_i1))))
(net myOutput
(joined
(portRef
myOutput)
(portRef OUT
(instanceRef
B1_i1))))
(net VDD
(joined )
(property
global
(string
"vcc")))
(net VSS
(joined )
(property
global
(string
"gnd")))))))
(design halfgate_p
(cellRef halfgate_p
(libraryRef
working))))
ASICs... THE COURSE 8.3 The Halfgate ASIC 13
The structural postlayout files generated by the Altera MAX+plus software:
// halfgate_p (EPM7032LC44) MAX+plus II Version 5.1 RC6 10/03/94
// Wed Jul 17 04:07:10 1996
`timescale 100 ps / 100 ps
module TRI_halfgate_p( IN, OE, OUT ); input IN; input OE; output OUT;
bufif1 ( OUT, IN, OE );
specify
specparam TTRI = 40; specparam TTXZ = 60; specparam TTZX = 60;
(IN => OUT) = (TTRI,TTRI);
(OE => OUT) = (0,0, TTXZ, TTZX, TTXZ, TTZX);
endspecify
endmodule
module halfgate_p (myInput, myOutput);
input myInput; output myOutput; supply0 gnd; supply1 vcc;
wire B1_i1, myInput, myOutput, N_8, N_10, N_11, N_12, N_14;
TRI_halfgate_p tri_2 ( .OUT(myOutput), .IN(N_8), .OE(vcc) );
TRANSPORT transport_3 ( N_8, N_8_A );
defparam transport_3.DELAY = 10;
and delay_3 ( N_8_A, B1_i1 );
Report for the halfgate ASIC fitted to an Altera MAX 7000 complex PLD
** INPUTS **
Shareable
Expanders Fan-In Fan-Out
Pin LC LAB Primitive Code Total Shared n/a INP FBK OUT FBK Name
43 - - INPUT 0 0 0 0 0 0 1 myInput
** OUTPUTS **
Shareable
Expanders Fan-In Fan-Out
Pin LC LAB Primitive Code Total Shared n/a INP FBK OUT FBK Name
41 17 B OUTPUT t 0 0 0 1 0 0 0 myOutput
** LOGIC CELL INTERCONNECTIONS **
Logic Array Block 'B':
+- LC17 myOutput
|
LC | | A B | Name
Pin
43 -> * | - * | myInput
* = The logic cell or pin is an input to the logic cell (or LAB) through the PIA.
- = The logic cell or pin is not an input to the logic cell (or LAB).
14 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
xor xor2_4 ( B1_i1, N_10, N_14 );
or or1_5 ( N_10, N_11 );
TRANSPORT transport_6 ( N_11, N_11_A );
defparam transport_6.DELAY = 60;
and and1_6 ( N_11_A, N_12 );
TRANSPORT transport_7 ( N_12, N_12_A );
defparam transport_7.DELAY = 40;
not not_7 ( N_12_A, myInput );
TRANSPORT transport_8 ( N_14, N_14_A );
defparam transport_8.DELAY = 60;
and and1_8 ( N_14_A, gnd );
endmodule
// MAX+plus II Version 5.1 RC6 10/03/94 Wed Jul 17 04:07:10 1996
`timescale 100 ps / 100 ps
module TRANSPORT( OUT, IN ); input IN; output OUT; reg OUTR;
wire OUT = OUTR; parameter DELAY = 0;
`ifdef ZeroDelaySim
always @IN OUTR <= IN;
`else
always @IN OUTR <= #DELAY IN;
`endif
`ifdef Silos
initial #0 OUTR = IN;
`endif
endmodule
ASICs... THE COURSE 8.3 The Halfgate ASIC 15
The VHDL version of the postlayout Altera MAX 7000 schematic for the halfgate ASIC
macrocell
n_delay_3 n_8
B1_i1
n_10
n_14 n_xor_4
n_or_5n_11n_and_6
'1'
n_12
n_and_8gnd
n_12
LAB B Logic Cell 17
ProgrammableInterconnect Array (PIA)
Pin41I/O pad
OE output enable
I/O ControlBlock (IOC)
Pin43I/O pad
n_tri_halfgate_pvcc
n_not_7
myOutput
myInput
I/O ControlBlock (IOC)
unused
16 SECTION 8 PROGRAMMABLE ASIC DESIGN SOFTWARE ASICS... THE COURSE
8.3.4 Comparison
8.4 Summary
? Xilinx XC4000, a nondeterministic coarse-grained FPGA
? Actel ACT 3, a nondeterministic fine-grained FPGA
? Altera MAX 7000, a deterministic complex PLD
The differences:
1. The Xilinx LCA architecture does not permit an accurate timing analysis until after place and
route. This is because of the coarse-grained nondeterministic architecture.
2. The Actel ACT architecture is nondeterministic, but the fine-grained structure allows fairly
accurate preroute timing prediction.
3. The Altera MAX CPLD requires logic to be fitted to the product steering and programmable
array logic. The Altera MAX 7000 has an almost deterministic architecture, which allows accu-
rate preroute timing.
Key concepts:
? FPGA design flow: design entry, simulation, physical design, and programming
? Schematic entry, hardware design languages, logic synthesis
? PALASM as a common low-level hardware description
? EDIF, Verilog, and VHDL as vendor-independent netlist standards