Skip to content

Latest commit

 

History

History
51 lines (44 loc) · 1.4 KB

README.md

File metadata and controls

51 lines (44 loc) · 1.4 KB

slang-netlist

Warning

slang-netlist is a work in progress and may not work as expected. Check TODO.md for a list of some new features and fixes that are planned. If you encounter a problem, please submit a bug report via Issues.

slang-netlist is a library and tool for analysing the source-level static connectivity of a design. This capability can be useful, for example, to develop structural checks or to investigate timing paths, rather than having to use synthesis to obtain a gate-level netlist.

Using the example of a simple adder:

module adder
  #(parameter p_width = 32)(
    input  logic [p_width-1:0] i_a,
    input  logic [p_width-1:0] i_b,
    output logic [p_width-1:0] o_sum,
    output logic               o_co
  );
  logic [p_width-1:0] sum;
  logic co;
  assign {co, sum} = i_a + i_b;
  assign o_sum = sum;
  assign o_co = co;
endmodule

The slang-netlist command-line tool can be used to trace paths through the design, such as:

➜  slang-netlist adder.sv --from adder.i_a --to adder.o_sum -q
adder.sv:10:22: note: variable i_a read from
  assign {co, sum} = i_a + i_b;
                     ^~~

adder.sv:10:15: note: variable sum assigned to
  assign {co, sum} = i_a + i_b;
              ^~~

adder.sv:11:18: note: variable sum read from
  assign o_sum = sum;
                 ^~~

adder.sv:11:10: note: variable o_sum assigned to
  assign o_sum = sum;
         ^~~~~