Net Data Types
  
    
    
     
   
   Formal Definition
  
   Nets are data types that can be used to model physical connections. 
  
   Simplified Syntax
  
   Net declaration: 
  
   wire 
   range delays list_of_identifiers; 
  
   wand range delays list_of_identifiers; 
  
   wor range delays list_of_identifiers; 
  
   tri range delays list_of_identifiers; 
  
   triand range delays list_of_identifiers; 
  
   trior range delays list_of_identifiers; 
  
   tri0 range delays list_of_identifiers; 
  
   tri1 range delays list_of_identifiers; 
  
   supply0 range delays list_of_identifiers; 
  
   supply1 range delays list_of_identifiers; 
  
   trireg strength range delays list_of_identifiers; 
  
   Net declaration assignment: 
  
   wire strength range delays 
   list_of_identifiers = expression; 
  
   wand strength range delays 
   list_of_identifiers = expression; 
  
   wor strength range delays 
   list_of_identifiers = expression; 
  
   tri strength range delays 
   list_of_identifiers = expression; 
  
   triand strength range delays 
   list_of_identifiers = expression; 
  
   trior strength range delays 
   list_of_identifiers = expression; 
  
   tri0 strength range delays 
   list_of_identifiers = expression; 
  
   tri1 strength range delays 
   list_of_identifiers = expression; 
  
   supply0 strength range 
   delays list_of_identifiers = expression; 
  
   supply1 strength range 
   delays list_of_identifiers = expression; 
  
   trireg strength range delays 
   list_of_identifiers = expression; 
  
   Description
  
   Net data types are used to model physical connections. They do not 
   store values (there is only one exception - trireg,
    which stores a previously assigned value). The net data types have 
   the value of their drivers. If a net variable has no driver, then it 
   has a high-impedance value (z). 
  
   Nets can be declared in a net declaration statement (Example 1) or in 
   a net declaration assignment (Example 2). 
  
   Net declarations can contain strength declarations, which specifies 
   the strength of the logic values driven by the net (see Strengths for 
   more details). The range declaration is used to specify multi-bit 
   nets (vectors). The delays are used to specify propagation delays 
   through the nets. The strength, delay and range declarations are optional. 
  
   Wire and tri nets.
  
   Both wire net and tri 
   net are identical. Two different names are used for more readability. 
   Preferably wire nets may be 
   used if a net has only one driver. If a net has more than one driver, 
   then tri net may be used instead. 
  
    
    
     | 
       
          | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
     | 
       
       0  | 
     
       
       0  | 
     
       
       x  | 
     
       
       x  | 
     
       
       0  | 
     
    
     | 
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
    
     | 
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
    
     | 
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
  
   Table 8: Truth table for wire and 
   tri nets 
  
   This table applies only to wire 
   and tri nets driven by 
   multiple drivers that have no strength declaration or their strengths 
   are equal. 
  
   Wand and triand nets.
  
   These net types are wired and 
   nets. It means that if one of their drivers is 0 then the result 
   value will also be 0. 
  
    
    
     | 
       
          | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
     | 
       
       0  | 
     
       
       0  | 
     
       
       0  | 
     
       
       0  | 
     
       
       0  | 
     
    
     | 
       
       1  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
    
     | 
       
       x  | 
     
       
       0  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
    
     | 
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
  
   Table 9: Truth table for wand and 
   triand nets 
  
   This table applies only to wand 
   and triand nets driven by 
   multiple drivers that have no strength declaration, or their 
   strengths are equal. 
  
   Wor and trior nets.
  
   These net types are wired or 
   nets. It means that if one of their drivers has a value of 1, then 
   the result value will also be 1. 
  
    
    
     | 
       
          | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
     | 
       
       0  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       0  | 
     
    
     | 
       
       1  | 
     
       
       1  | 
     
       
       1  | 
     
       
       1  | 
     
       
       1  | 
     
    
     | 
       
       x  | 
     
       
       x  | 
     
       
       1  | 
     
       
       x  | 
     
       
       x  | 
     
    
     | 
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
  
   Table 10: Truth table for wor and 
   trior nets 
  
   This table applies only to wor 
   and trior nets driven by 
   multiple drivers that have no strength declaration, or their 
   strengths are equal. 
  
   Tri0 and tri1 nets.
  
   These nets are used to model resistive pulldown and pullup devices. 
   If a tri0 net has no driver 
   its value is 0. If a tri1 
   net has no driver, then its value is 1. These values have pull strength. 
  
    
    
     | 
       
          | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
     | 
       
       0  | 
     
       
       0  | 
     
       
       x  | 
     
       
       x  | 
     
       
       0  | 
     
    
     | 
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
    
     | 
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
    
     | 
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       0  | 
     
    
  
   Table 11: Truth table for tri0 net 
  
    
    
     | 
       
          | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       z  | 
     
    
     | 
       
       0  | 
     
       
       0  | 
     
       
       x  | 
     
       
       x  | 
     
       
       0  | 
     
    
     | 
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
    
     | 
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
       
       x  | 
     
    
     | 
       
       z  | 
     
       
       0  | 
     
       
       1  | 
     
       
       x  | 
     
       
       1  | 
     
    
  
   Table 12: Truth table for tri1 nets 
  
   Supply0 and supply1 nets.
  
   These nets are used to model power supplies in the circuit. They 
   should have supply strength. 
  
   Trireg nets.
  
   The trireg nets are used to 
   model net capacity. If the trireg 
   net driver has 0, 1, or x value, then it becomes a trireg 
   net value and its strength can be one of the drive strengths, 
   depending on the driver strength. If the driver has a z value, then 
   the trireg net keeps the 
   previously driven value and the strength can be one of the charge 
   strengths, depending on the strength specified during net declaration. 
  
   Examples
  Example 1 
  
   wire [7:0] a; 
   tri tristate_buffer; 
   wand #5 sig_1; 
   trireg (small)
    t; 
  
   The 'a' variable is a 8-bit wire net. 
  
   The 'tristate_buffer' is 1-bit tri 
   net type variable. 
  
   The 'sig_1' variable is 1-bit wand 
   net type variable, which propagates driven value to its output in 5 
   time units. 
  
   The 't' variable is trireg 
   net variable with small charge strength. 
  Example 2 
  
   reg a; 
   wire [3:0] b; 
   wor (strong1,
    weak0) wired_or = a; 
   trior (pull1,
    weak0) [3:0] #(5:3:4) vect 
   = b; 
  
   The 'wired_or' variable is a 1-bit wor 
   net type variable that has specified strengths (strong1 when its 
   value is 1 and weak0 when its value is 0). 
  
   The 'vect' variable is a 4-bit trior 
   net type variable that has pull and weak strengths and 3 delay parameters. 
  
   Important Notes
  
   - 
   
    Nets cannot be used as left-hand value of procedural assignments. 
    - 
   
    If the trireg net is not 
    driven, then it has charge strength. Otherwise it has the strength of 
    its driver. 
     
  
     
  
     
  
    
 
    |