Technical
Tips
Send your tips on Verilog, Synthesis, EDA
etc for this page to Rajesh Bawankule
  
 Formatting
existing Verilog code
 Printing
Bold letters
  
Formatting
existing Verilog code :by  Rajesh
Bawankule
 Many a times one need to work on a code
which is poorly formatted. Here are some tips to make life easier.
 Take a look at this poorly formatted code.
Lets take this extreme example where code for flip-flop is written in just
one line.
 module flip_flop(clock, din, dout,
set, reset); input clock, din, set, reset; output dout; reg   
dout; always@(posedge clock or set or reset) begin if (!reset) dout <=
1'b0; else if (!set) dout <= 1'b1; else dout <= din; end endmodule
// flip_flop
 Verilog-XL provides a switch to see decompiled
code. Run as
 Verilog -d filename.v
 In verilog.log file you will see this code. 
 module flip_flop(clock, din, dout,
set, reset);
     input
        
clock,
        
din,
        
set,
        
reset;
     output
        
dout;
     reg
        
dout;
     always
        
@(posedge clock or set or reset)
            
begin
                
if(!reset)
                    
dout <= #(0) 1'b0;
                
else
                    
if(!set)
                        
dout <= #(0) 1'b1;
                    
else
                        
dout <= #(0) din;
            
end
 endmodule
 // End of decompilation
 Note that 
 - This is tested only with Cadence Verilog-XL
2.6.38 and may not work with other simulators.
 - All the user comments are lost.
 I think in real life not many people face
this extreme case. One definitely faces a code where though it is not in
just one line but is poorly formatted. Take following case where there
is no indentation.
 module flip_flop(clock, din, dout,
set, reset);
 input clock,din,set,reset;
 output dout;
 reg dout;
 always @(posedge clock or set or reset)
 begin
 if(!reset)
 dout <= #(0) 1'b0;
 else
 if(!set)
 dout <= #(0) 1'b1;
 else
 dout <= #(0) din;
 end
 endmodule
 Use Emacs with Verilog mode installed.
If you have not done so read the procedure at http://www.surefirev.com/verilog-mode.html
 Open this file in Verilog mode. Select
all the code and press MC\. This means Press  Meta_key, Control and
\ keys simultaneously. And voila, code is now properly indented.
 module flip_flop(clock, din, dout,
set, reset);
    input clock,  din, 
set,  reset;
    output dout;
    reg   
dout;
    always @(posedge clock
or set or reset)
      begin
  if(!reset)
    dout <= #(0) 1'b0;
  else
    if(!set)
      dout <=
#(0) 1'b1;
    else
      dout <=
#(0) din;
      end
 endmodule
 
  
 Printing
Bold letters : by Rajesh Bawankule
 Sometimes one need to print messages on
screen with bold or inverted background to emphasis the importance. Following
code snippet shows how to do it. 
 Note that
 - This is tested only with Cadence Verilog-XL
2.6.38 on UNIX and may not work with other simulators on other platforms.
module bold;
  initial begin
    $display ("Normal Text");
    $display ("\033[1mBold
Text");
    $display ("\033[mSwitch
back to Normal Text.....");
    $display ("\033[7mInverse
Text.");
    $display ("\033[mSwitch
back to Normal Text.....");
    $display ("\033[1mBold
Text \033[mfollowed by \033[7mInverse text \033[m");
  end
 endmodule
  
  |