UP       PREV       NEXT (Basic RTL Synthesis Algorithm)  

Toy implementation of RTL Synthesiser

How do we compile synthesisable RTL to gates?

Example input:

module TC(clk, cen);
  input clk, cen;
  reg [1:0] count; 
  always @(posedge clk) if (cen) count<=count+1;
endmodule// User=djg11 

Output:

module TC(clk, cen);
  wire u10022, u10021, u10020, u10019;
  wire [1:0] count;
  input cen;   input clk;
  CVINV  i10021(u10021, count[0]);
  CVMUX2  i10022(u10022, cen, u10021, count[0]);
  CVDFF  u10023(count[0], u10022, clk, 1'b1, 1'b0, 1'b0);
  CVXOR2  i10019(u10019, count[0], count[1]);
  CVMUX2  i10020(u10020, cen, u10019, count[1]);
  CVDFF  u10024(count[1], u10020, clk, 1'b1, 1'b0, 1'b0);
endmodule

(C) 2008-10, DJ Greaves, University of Cambridge, Computer Laboratory.