Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tools:interact:start [2026/03/12 09:44] – [Circuit generation] rajittools:interact:start [2026/03/12 09:46] (current) – [Global routing] rajit
Line 353: Line 353:
  
 ==== Cell mapping ==== ==== Cell mapping ====
 +
 +   ckt:cell-map [-l] - map gates to cell library; -l lists used cells
 +   ckt:cell-save <file> - save cells to file
 +   ckt:cell-addbuf <proc> <inst> <pin> <buf> - add buffer to the pin within the process
 +   ckt:cell-edit <proc> <inst> <newcell> - replace cell for instance within <proc>
 +   ckt:cell-update - take the design back to the clean state
 +   ckt:net->pins <net> - return pins that a net is connected to
 +   ckt:cell->pins <inst> - return pins for a cell
  
 ===== Timing and power analysis ===== ===== Timing and power analysis =====
 +
 +   timer:lib-read <file> - read liberty timing file and return handle
 +   timer:lib-merge <lh> <file> - merge <file> into liberty file handle <lh>
 +   timer:time-units - returns string for time units
 +   timer:build-graph - build timing graph
 +   timer:tick <net1>+/- <net2>+/- - add a tick (iteration boundary) to the timing graph
 +   timer:add-constraint <root>+/- [*]<fast>[+/-] [*]<slow>[+/-] [margin] - add a timing fork constraint
 +   timer:init <l1> <l2> ... - initialize analysis engine with specified liberty handles
 +   timer:spef <file> - read in SPEF parasitics from <file>
 +   timer:phydb-link - link timer to phydb for timing-driven physical design flow
 +   timer:run - run timing analysis, and returns list (p M)
 +   timer:crit - show critical cycle
 +   timer:info <net> - display information about the net
 +   timer:constraint [<net>] - display information about all timing forks that involve <net>
 +   timer:num-constraints - returns the number of constraints in the design
 +   timer:get-violations - returns a list of constraint ids (cids) that have violations
 +   timer:check-constraint cid [ticks] - does a path analysis to check paths for timing fork #<cid> exist
 +   timer:get-slack cid - returns the slack of the violating constraint id #cid
 +   timer:get-witness cid - displays the witness for the violation
 +   timer:get-rise <net> - returns rise time for <net>
 +   timer:get-fall <net> - returns fall time for <net>
 +   timer:rise-violations <time> - returns a list of drivers that have rise time worse than <time> in timer units
 +   timer:fall-violations <time> - returns a list of drivers that have fall time worse than <time> in timer units
 +   timer:save <file> - save abstract timing graph to file in graphviz format
  
 ===== Physical database ===== ===== Physical database =====
 +
 +   phydb:init - initialize physical database
 +   phydb:set-placement-grid <grid_value_x> <grid_value_y> - set placement grid
 +   phydb:read-lef <file> - read LEF and populate database
 +   phydb:get-used-lef - return list of macros used by the design
 +   phydb:read-def <file> - read DEF and populate database
 +   phydb:read-cell <file> - read CELL file and populate database
 +   phydb:read-techconfig <file> - read technology configuration file
 +   phydb:read-cluster <file> - read Cluster file and populate database
 +   phydb:get-columns - return a list of coordinates of columns in grid point coords
 +   phydb:get-gaps - return a list of coordinates of gaps in the minirows
 +   phydb:place-cell <cell-type> <llx> <lly> <N|FS> - add a new cell to a fixed location
 +   phydb:place-inst <inst> <llx> <lly> <N|FS> - place an instance at a fixed location
 +   phydb:add-io <iopin_name> <net_name> <direction> <use> - add a new I/O pin
 +   phydb:place-io <iopin_name> <metal_name> <lx> <ly> <ux> <uy> <placement_status> <x> <y> <orientation> - place an I/O pin at a fixed location
 +   phydb:write-def <file> - write DEF from database
 +   phydb:write-guide <file> - write GUIDE from database
 +   phydb:write-cluster <file> - write CLUSTER from database
 +   phydb:write-aux-rect <file> - write PP/NP cover and well rect files
 +   phydb:close - tear down physical database
  
 ===== Placement ===== ===== Placement =====
  
 ==== Partitioning ==== ==== Partitioning ====
 +
 +   bipart:partition <file> [k] [depth] - compute a k-way partition (default 2)
  
 ==== Dali placer ==== ==== Dali placer ====
 +
 +   dali:init <verbosity_level(0-5)> - initialize Dali placement engine
 +   dali:add-welltap <-cell cell_name -interval max_microns> [-checker_board] - add well-tap cell
 +   dali:place-design <target_density> [number_of_threads] - place design
 +   dali:place-io <metal_name> - place I/O pins
 +   dali:global-place <target_density> [number_of_threads] - global placement
 +   dali:refine-place <engine> - refine placement using an external placer
 +   dali:export-phydb - export placement to phydb
 +   dali:close - close Dali
  
 ===== Routing ===== ===== Routing =====
Line 368: Line 431:
 ==== Power detailed routing ==== ==== Power detailed routing ====
  
-==== Global routing ==== +   pwroute:init <verbose> -initialize pwroute engine <verbose>  
- +   pwroute:set_parameters <reinforcement_width, reinforcement_step, cluster_mesh_width> - run pw route with mesh configuration. Default is <8, 16, 2> 
- +   pwroute:set_reinforcement <bool>, enable/disable reinforcement connection (default: 1)  
- +   pwroute:run run pwroute 
 +   pwroute:export-phydb -export power and ground wires to phydb 
 +   pwroute:close -close pwroute
  
 +==== Global routing ====
  
 +   sproute:init initialize sproute engine
 +   sproute:set-num-threads set num threads, default = 1
 +   sproute:set-algo Det/NonDet, default is NonDet
 +   sproute:set-max-iterations set max iterations of maze routing, default = 30
 +   sproute:run run sproute
 +   sproute:close close sproute