第二章ASIC设计中的重要部分是计算进位模块。对于进位模块在逻辑门级别的设计,可以这样说明:


module carry (co, a, b, c, input a, b, c; output co; wire x, y, z; and g1 (x, a, b); and g2 (y, a, c); and g3 (z, b, c); or g4 (co, x, y, z); end module

以上的结构说明与工艺无关,因为采用的是通用的门电路,没有涉及具体的参数。正如图2.4所示,输出与输入之间满足Co=ab+ac+bc的逻辑关系。这种逻辑设计在CMOS工艺中也能很方便地实现。

那么,如何在CMOS工艺中实现呢?如果你对CMOS工艺的细节感兴趣,可以参考以下资源:

我们看看一位加法器的晶体管级实现,它涉及到具体的流片工艺。如果采用CMOS工艺,可以描述为:


module carry (co, a, b, c, input a, b, c; output co; wire i1, i2, i3, i4, i5, i6; nmos n1 (i3, i4, a); nmos n2 (i4, vss, b); nmos n3 (i3, i5, b); nmos n4 (i5, vss, c); nmos n5 (i3, i6, a); nmos n6 (i6, vss, c); nmos n7 (co, vss, i3); pmos p1 (i1, vdd, a); pmos p2 (i2, i1, b); pmos p3 (i3, i2, c); pmos p4 (i1, vdd, b); pmos p5 (i2, i1, a); pmos p6 (i3, i2, a); pmos p7 (co, vdd, i3); end module

如果你对这种晶体管级别的设计有更深入的兴趣,以下几篇资源或许对你有帮助: