Built-in Primitives
   
      
      
     
   
   Formal Definition
  
   The built-in primitives provide a means of gate and switch modeling. 
  
   Simplified Syntax
  
   For and, nand,
    or, nor,
    xor, xnor,
    buf, not 
  
     gate (drive_strength) #(2delays) instance_name[range] (list_of_ports); 
  
   For bufif0, bufif1,
    notif0, notif1 
  
     gate (drive_strength) #(3delays) instance_name[range] (list_of_ports); 
  
   For nmos, pmos,
    rnmos, rpmos,
    cmos, rcmos,
    rtranif0, rtranif1,
    tranif0, tranif1 
  
     gate #(3delays) instance_name[range] (list_of_ports); 
  
   For tran, rtran 
  
     gate instance_name[range] (list_of_ports); 
  
     pullup 
   (pullup_strength) instance_name[range] (list_of_ports); 
  
     pulldown 
   (pulldown_strength) instance_name[range] (list_of_ports); 
  
   Description
  
   Gate or switch declaration begins with a keyword that determines the 
   type of a gate or switch followed by a strength and delay 
   declaration, name of the instance, range, and a list of connections 
   to the gate or switch ports. The strength and the delay declarations 
   are optional. The name of an instance and a range are also optional. 
   Instantiations of individual gate types are not identical. 
  
   and, nand, or, nor, xor, xnor gates
  
   The instantiation of these logic gates (Example 1) can contain zero, 
   one, or two delays. The strength declaration should contain two 
   specified strengths - strength1 
   and strength0 (see Strengths 
   for more explanations). 
  
   These gates have one output and one or more inputs. 
   The first port on the port list is output port. 
    
  
    
    
     | 
       
        
        
         | 
           
           and  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           0  | 
         
           
           0  | 
         
           
           0  | 
         
           
           0  | 
         
           
           0  | 
         
        
         | 
           
           1  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           x  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
       
        
        
         | 
           
           or  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           0  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           1  | 
         
           
           1  | 
         
           
           1  | 
         
           
           1  | 
         
           
           1  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           x  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
       
        
        
         | 
           
           xor  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           0  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           1  | 
         
           
           1  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
    
  
    
    
     | 
       
        
        
         | 
           
           nand  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           0  | 
         
           
           1  | 
         
           
           1  | 
         
           
           1  | 
         
           
           1  | 
         
        
         | 
           
           1  | 
         
           
           1  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           x  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
       
        
        
         | 
           
           nor  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           0  | 
         
           
           1  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           1  | 
         
           
           0  | 
         
           
           0  | 
         
           
           0  | 
         
           
           0  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           x  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
       
        
        
         | 
           
           xnor  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           0  | 
         
           
           1  | 
         
           
           0  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           1  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
    
  
   Table 1 Truth tables for logic gates 
  
   buf and not gates
  
   The instantiation of these logic gates (Example 2) can contain zero, 
   one, or two delays. The strength declaration should contain two 
   specified strengths - strength1 
   and strength0 (see 
   Strengths for more explanations). 
  
   These gates have one input and one or more outputs. The last port on 
   the port list is an input port. 
  
    
    
     | 
       
        
        
         | 
           
           buf  | 
         
        
         | 
           
           input  | 
         
           
           output  | 
         
        
         | 
           
           0  | 
         
           
           0  | 
         
        
         | 
           
           1  | 
         
           
           1  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           x  | 
         
         | 
     
       
        
        
         | 
           
           not  | 
         
        
         | 
           
           input  | 
         
           
           output  | 
         
        
         | 
           
           0  | 
         
           
           1  | 
         
        
         | 
           
           1  | 
         
           
           0  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           x  | 
         
         | 
     
    
  
   Table 2 Truth tables for logic gates 
  
   bufif1, bufif0, notif1, notif0 gates
  
   The instantiation of these tri-state gates (Example 3) can contain 
   zero, one, two, or three delays. The strength declaration should 
   contain two specified strengths - strength1 
   and strength0 (see 
   Strengths for more explanations). 
  
   These gates have three ports: the first is an output port, the second 
   is a data port, and the third is a control port. The control port is 
   used to set gates in high-impedance state. 
  
    
    
     | 
       
        
        
         | 
           
           bufif0  | 
         
           
           control input  | 
         
        
         | 
           
              | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           data input  | 
         
           
           0  | 
         
           
           0  | 
         
           
           z  | 
         
           
           L  | 
         
           
           L  | 
         
        
         | 
           
           1  | 
         
           
           1  | 
         
           
           z  | 
         
           
           H  | 
         
           
           H  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           x  | 
         
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
       
        
        
         | 
           
           bufif1  | 
         
           
           control input  | 
         
        
         | 
           
              | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           data input  | 
         
           
           0  | 
         
           
           z  | 
         
           
           0  | 
         
           
           L  | 
         
           
           L  | 
         
        
         | 
           
           1  | 
         
           
           z  | 
         
           
           1  | 
         
           
           H  | 
         
           
           H  | 
         
        
         | 
           
           x  | 
         
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
         | 
     
    
  
   Table 3 Truth table for tri-state 
   logic gates 
  
   The L and H symbols have a special meaning. The L symbol means that 
   the output has 0 or z value. The H symbol means that the output has 1 
   or z value. Any transition to H or L is treated as a transition to x. 
  
   nmos, pmos, rnmos, rpmos, cmos, and 
   rcmos switches
  
   The nmos switch is used to 
   model N-type MOS (Metal-Oxide Semiconductor) transistor and the pmos 
   switch is used to model P-type MOS (Metal-Oxide Semiconductor) 
   transistor. The rnmos switch 
   is used to model resistive nmos 
   transistor and the rpmos 
   switch is used to model resistive pmos 
   transistor. The cmos switch 
   should be treated as combination of a pmos 
   switch and an nmos switch, 
   which have common data input and data output. The rcmos 
   switch should be treated as combination of an rpmos 
   switch and an rnmos switch, 
   which have common data input and data output. 
  
   The instantiation of these MOS switches (Example 4) can contain zero, 
   one, two, or three delays. 
  
   The strength declaration is illegal. The nmos, pmos 
   and cmos switches reduce supply 
   strength of the signals to strong 
   strength. Signals with others strengths are passed from input to 
   output without a strength reduction. The rnmos, rpmos 
   and rcmos switches reduce supply 
   and strong strength of 
   signals to pull strength. 
   The pull strength of 
   signals is reduced to weak. 
   The large and weak 
   strength of signals are reduced to medium.
    The medium strength of 
   signals is reduced to small.
    Signals with other strengths are passed from input to output without 
   strength reduction. 
  
   The nmos, pmos, rnmos, rpmos 
   switches have three ports: the first is an output port, the second is 
   a data port, and the third is a control port. 
  
   The cmos and rcmos 
   switches have four ports: the first is an output port, the second is 
   a data port, the third is a n-control port, and the fourth a is 
   p-control port. 
  
    
    
     | 
       
        
        
         | 
           
           pmos  | 
         
           
           control input  | 
         
        
         | 
           
           rpmos  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           data input  | 
         
           
           0  | 
         
           
           0  | 
         
           
           z  | 
         
           
           L  | 
         
           
           L  | 
         
        
         | 
           
           1  | 
         
           
           1  | 
         
           
           z  | 
         
           
           H  | 
         
           
           H  | 
         
        
         | 
           
           x  | 
         
           
           x  | 
         
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           z  | 
         
           
           z  | 
         
           
           z  | 
         
           
           z  | 
         
         | 
     
       
        
        
         | 
           
           nmos  | 
         
           
           control input  | 
         
        
         | 
           
           rmos  | 
         
           
           0  | 
         
           
           1  | 
         
           
           x  | 
         
           
           z  | 
         
        
         | 
           
           data input  | 
         
           
           0  | 
         
           
           z  | 
         
           
           0  | 
         
           
           L  | 
         
           
           L  | 
         
        
         | 
           
           1  | 
         
           
           z  | 
         
           
           1  | 
         
           
           H  | 
         
           
           H  | 
         
        
         | 
           
           x  | 
         
           
           z  | 
         
           
           x  | 
         
           
           x  | 
         
           
           x  | 
         
        
         | 
           
           z  | 
         
           
           z  | 
         
           
           z  | 
         
           
           z  | 
         
           
           z  | 
         
         | 
     
    
  
     
  
    
    
     | 
       
       cmos  | 
     
       
       N control  | 
     
    
     | 
       
       rmos  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
     | 
       
          | 
     
       
       P control  | 
     
    
     | 
       
          | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
     | 
       
       Data  | 
     
       
       0  | 
     
       
       0  | 
     
       
       z  | 
     
       
       L  | 
     
       
       L  | 
     
       
       0  | 
     
       
       0  | 
     
       
       0  | 
     
       
       0  | 
     
       
       0  | 
     
       
       L  | 
     
       
       L  | 
     
       
       L  | 
     
       
       0  | 
     
       
       L  | 
     
       
       L  | 
     
       
       L  | 
     
    
     | 
       
       1  | 
     
       
       1  | 
     
       
       z  | 
     
       
       H  | 
     
       
       H  | 
     
       
       1  | 
     
       
       1  | 
     
       
       1  | 
     
       
       1  | 
     
       
       1  | 
     
       
       H  | 
     
       
       H  | 
     
       
       H  | 
     
       
       1  | 
     
       
       H  | 
     
       
       H  | 
     
       
       H  | 
     
    
     | 
       
       x  | 
     
       
       x  | 
     
       
       z  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
    
     | 
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
       
       z  | 
     
    
  
   Table 4 Truth tables for MOS switches 
  
   Symbols L and H have a special meaning. The symbol L means that the 
   output has 0 or z value. The symbol H means that the output has 1 or 
   z value. Any transition to H or L is treated as a transition to x. 
  
   rtranif0, rtranif1,
    tranif0 and tranif1 switches
  
   The instantiation of these bi-directional pass switches (Example 5) 
   can contain zero, one, two, or three delays. 
  
   The strength declaration is illegal. The tranif0 
   and tranif1 switches reduce supply 
   strength of signals to strong.
    Signals with others strengths are passed from input to output 
   without strength reduction. The rtranif0 
   and rtranif1 switches reduce supply 
   and strong strength of 
   signals to pull. The pull 
   strength of signals is reduced to weak.
    The large and weak 
   strength of signals are reduced to medium.
    The medium strength of 
   signals is reduced to small.
    Signals with other strengths are passed from input to output without 
   strength reduction. 
  
   The rtranif0, rtranif1,
    tranif0 and tranif1 
   switches have three ports: two bidirectional data ports and one 
   control port (third position on port list). 
  
   tran and rtran switches
  
   The instance of these bidirectional switches cannot contain delay and 
   strength declaration. 
  
   The tran switches reduce supply 
   strength of signals to strong 
   strength. Signals with others strengths are passed from input to 
   output without strength reduction. The rtran 
   switches reduce supply and strong 
   strength of signals to pull.
    The pull strength of 
   signals is reduced to weak. 
   The large and weak 
   strength of signals are reduced to medium.
    The medium strength of 
   signals is reduced to small.
    Signals with other strengths are passed from input to output without 
   strength reduction. 
  
   The tran and rtran 
   switches have two bidirectional data ports. 
  
   pullup and pulldown sources 
  
   The instantiation pullup and pulldown sources cannot contain delay 
   declaration. The pullup can contain only strength1 
   specification (the strength0 
   declaration is optional). The pulldown can contain only strength0 
   specification (the strength1 
   declaration is optional). 
  
   The pullup source places a logic value 1 on connected signals. The 
   pulldown source places a logic value 0 on connected signals. 
  
   Examples
  
   Example 1 
  
   and (strong1, weak0) (y, i1, 
   i2, i3); 
  
   This is a three-input and 
   gate instance with strengths specified. There is no instance name and 
   no delays declaration. 
  
   nand #(1,2) gate1 (y, i1, i2); 
  
   This is a two-input nand 
   gate instance with two delays specified. The instance name is gate1 
   and there is no strength specified. 
  
   or #1 b[1:0] (y, i1, i2, i3, i4); 
  
   This is two instances of two four-input or 
   gates with one delay specified. Names for the instances are b[1] and 
   b[0]. There are no strengths specified. 
  
   Example 2 
  
   buf (o1, o2, o3, o4, i); 
  
   This is the instance of buf 
   gate, which has four outputs and one input. 
  
   Example 3 
  
   bufif0 (weak1, pull0) 
   #(4,5,3) (data_out, data_in, ctrl); 
  
   The bufif0 gate instance 
   with strength and delays is specified. There is no instance name, 
   which is optional. 
  
   Example 4 
  
   pmos (data_out, data_in, ctrl); 
   cmos (data_out, data_in, 
   n_ctrl, p_ctrl); 
  
   The pmos and cmos 
   switches are instantiated with no delays, strength and instance name declarations. 
  
   Important Notes
  
  
    
 
    |