⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 descript.txt

📁 VPR布局布线源码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
- Changed the base cost of an rr_node to be looked up through an cost_index.
  Now every wire of a given type (e.g. x-directed, segment type #3) has the 
  same cost_index, so to change the cost of all segments of this type during
  routing you just change rr_base_cost[cost_index].  This will make dynamic
  resource cost changes efficient.

- Deleted the rr_node_cost_inf structure, and moved its members into the
  rr_node (for info needed outside the router) and rr_node_route_inf (for stuff
  needed only within the router).


Version 4.00, Beta #6, Nov. 5, 1997

- Added code to build a timing graph of the circuit and do path analysis.  
  Both the critical path and all the net slacks are determined.

- Split the code that checks the netlist for validity off into a separate 
  module, check_netlist.  Beefed up the error checking so that all the 
  connections between subblocks and clbs and amongst subblocks are checked 
  for errors.

- Changed the net_pin_class data structure to the net_block_pin_num data 
  structure -- it now stores the pin number to which the netlist says each net 
  should connect at a certain block.  For routing I really just have to connect
  to a pin of this *class* on the specified block, but for timing analysis I 
  really need to know the actual pin specified to build the timing graph 
  correctly.  For the places where I want to check the class of what I have
  to connect to, I just have to take clb_pin_class[pnum], where pnum comes from
  this new structure.

- Changed the timing analysis parameters specified in the architecture file
  to make them easier to understand and more flexible.  Each subblock can 
  now have its own delays (different from that of other subblocks).

- Changed the input netlist format slightly so that subblock outputs that 
  are routed within a subblock to the inputs of other subblocks don't have 
  to connect to any clb output pin.


Version 4.00, Beta #5, Sept. 19, 1997:

- Made an Elmore-delay based net delay calculator (in net_delay.c).

- Restructured routing_stats (in stats.c) slightly to make the control routine
  simpler.

- Sept. 19, 1997:  Incorporated Zoom Fit code of Haneef Mohammed at Cypress.  
  Makes it easy to zoom to a full view of the graphics. 


Version 4.00, Beta #4, Sept. 12, 1997:

- Added a Congestion button to the graphics display.  It shows all the 
  overused routing resources in red.  This required some changes to 
  graphics.c to allow buttons to be created and deleted on the fly.

- Made the coordinates (e.g, 4,3) of the block you click on appear in the
  text area of the graphics display.  Requested by Jordan and Yaska.


Version 4.00, Beta #3, August 28, 1997:

- Added code to make VPR suitable as a CPU benchmark for the SPEC consortium.
  Add the line -DSPEC in the makefile to turn on the SPEC code.  Normal 
  users of VPR should never define SPEC, so you can ignore all the code
  after an #ifdef SPEC line.

  The SPEC specific stuff doesn't do much -- it just rips out the
  graphics and makes sure different roundoff behaviour on different
  machines doesn't lead to different routings.

- Added a "NO_GRAPHICS" define.  If you define NO_GRAPHICS in pr.h, all the 
  X11 code is ripped out allowing VPR to be compiled on machines without X11 
  graphics.

- Wrote my own random number generation routine, based on rand.  It's tuned
  for speed, not spectral quality.  This lets me get rid of the ARCH_TYPE
  flag, and makes the code more portable across architectures.

- Added a segment usage statistics routine.  This routine needs to know
  what the type and length of each track of an FPGA is.  The rr_graph
  builder saves that information once it has built the graph.  If you don't
  want to generate this extra information (because you're building your
  own graph), just don't call the segment usage routine after routing.

- Moved around some of the rr_graph data elements.  rr_node_draw_inf is 
  now gone -- .type and .ptc_num are now part of rr_node.  rr_node gives all
  the physical information about a node except its capacity (which is still
  in rr_node_cost_inf).  I also moved .prev_node, .prev_edge, .cost, 
  .target_flag, and .path_cost to a new structure, rr_node_route_inf.  This
  structure is local to the router, and is allocated, initialized and freed
  by the router, so you don't have to worry about it.  Just load up 
  rr_node and rr_node_cost_inf in the rr_graph.c routines.

- Added a transistor based area model.  It goes through the rr_graph and
  figures out how many minimum width transistor areas are needed to build the
  FPGA routing.

- Changed rr_graph generator so that pass transistors always create two edges 
  in the graph.  This makes the area model etc. a lot easier.


Version 4.00, Beta #2, July 15, 1997:

- Changed rr_graph so that IO pads now have all the switches necessary to
  be both an input pad and an output pad built.  The EMPTY_PAD rr_type has
  been eliminated.  This change doesn't make any difference to the router,
  but it will give more accurate transistor counts.

- Changed the rr_graph to allow each switch coming off a node to be a 
  different type.  Changed the architecture definition file format so that
  each .segment line specifies the type of switch used by a wire to drive 
  that segment, and the type of switch used by an output pin to drive that
  segment.


Version 4.00, Beta #1, July 3, 1997:

- Removed router limitation that it couldn't route more than 1 pin of a net
  to the same sink (same pin class on a logic block).  For the LUT-based
  logic blocks I look at there should never be more than one pin from a net
  to any sink, but for other logic blocks this could occur.  I still warn
  the user about this though, since most logic blocks shouldn't have this
  feature.  I sped up the check for multiple connections to a sink (in
  read_netlist) as well.

- Added ability to graphically see which switches are buffers and which are
  pass transistors.

- Added some of the hooks for timing analysis (capacitance loader, timing
  parameter parser, etc.)

- Added routing graph sanity checker.

- Added segmentated architecture for routing.

- Fixed the read_netlist bug where the parser would complain if a subblock
  line started with white space (noticed by Kevin Skahill at Cypress).

Version 3.99a

- Added -fast option, and -route_chan_width option.  -route_chan_width
  option allows only one routing to be done, rather than a binary search.

- Fixed fact that bounding box clipping of the routing region was too
  aggressive (noticed by Russ Tessier).

Version 3.99

- Added D. F. Wong's Universal switch block as one of the switch blocks
  supported.

- Code cleanup.  Put the placer options in a placer_opts structure, and 
  moved the input and output code from place.c to read_place.c.

- Added the ability to read in the location of the IO pads and force the
  placer to keep them there.

- Changed the placement output format slightly.  Block numbers are now
  only in comments.  The placement input parser was completely rewritten.
  Comments and line continuation are now allowed in placement files.  More
  importantly, the order of the blocks is now irrelevant; the file can list
  the blocks in any order.  This should be a lot more convenient for people
  using VPR to route placements generated by other tools.  The error 
  checking has been beefed up too -- I think every possible error in a 
  placement file will be caught now and the user will get an informative
  error message.  In particular, the "non-consecutive subblock" error that
  tripped up Russ and Ivan will be caught right away.

- Moved all hash table logic out of read_netlist.c and into a new module,
  hash.c.  I can use this general hash table stuff all over now.

- Changed defaults to be 30 routing iterations and detailed routing.

- Changed VPR to use a graph-based model of the routing resources available.
  This allows VPR to perform either global or detailed routing now.  Also
  added new graphics options to view the routing resources available.
  Took the routing checker out of route.c and put it in check_route.c.
  Also moved some code from route.c to stats.c.

- Converted some defined constants to enumerated types so I can see the
  symbolic names in gdb.

- Cleaned up some of the placer code.  Centralized allocation of the temporary
  placement data structures.  Changed the standard deviation computation
  so that the old_costs array wasn't needed anymore.

Version 3.98a

- Made a minor change to the graphics package.  Descenders (e.g. "g")
  are now considered in the vertical text centering routines.

- Changed the placer inner loop so that the frequency with which recompute
  cost is called is variable.  Recomputing the cost from time to time
  from scratch stops round offs from accumulating.  The change didn't make
  VPR significantly faster.

- Made -inner_num a float to allow small inner nums to be tried.

- Code cleanup.  Converted the annealing schedule parameters from 
  global variables to a structure that is passed around.  Converted the
  graphics state from global variables to static variables in draw.c set
  via a call to set_graphics_state.

- Added -verify_binary_search option.  Makes the router try routings
  with channel widths of best-2 and best-3 (in addition to the best-1
  tried by the binary search).  If one of these additional routings
  succeeds, the router keeps trying routings until two in a row (e.g.
  width = 9 and width = 8) fail.  The binary search usually finds the
  min. channel width, but due to router flukiness it will occassionally
  happen that a width = 19 routing fails, but width = 18 succeeds and
  so on.
 
Version 3.98

- Changed initial routing channel width guess to clb_size (# of pins
  on a clb).  Should give slightly faster run times for big clbs.

- Fixed a bug where VPR would wrongly think it had an error and 
  terminate itself if two outputs were made logically equivalent.
  Bug noticed by George Varghese of UC Berkeley.

- Altered VPR to use the new netlist format of blifmap (cluster-based).
  In this process I fixed a minor netlist parsing bug where VPR would
  refuse to accept a netlist with a comment between a .clb and a .pinlist
  line.  The new information on what's in a cluster is in the .subblock
  lines following each .clb line (after the .pinlist line).

Version 3.23

NB:  May want to add check in read_place for subblock numbers that have
  gaps (not consecutive starting at zero).  Russ Tessier's suggestion.
  (I did this on March 22, 1997 -- Version 3.99).

- Updated graphics again -- made all internal functions static so that
  graphics.c is a true component without name space conflicts with user
  programs.  Also moved the toggle_nets function to draw.c, as this 
  cleaned up the code dependencies a bit.

- Corrected RISA reference in the source code to point to ICCAD (pointed
  out by Russ Tessier of MIT).

- Rewrote large parts of graphics package.  It should now be faster for
  zoomed in graphics, as it preclips them based on their bounding box. 
  This will also make zoomed-in postscript much smaller.  The PostScript
  driver has been rewritten; output file sizes are about 50% smaller now
  if all graphics are on-screen.  When zoomed-in the clipping makes an
  even bigger difference.  Also added the ability to specify the font size
  for text and the line width for geometry (I demand-load the fonts
  for maximum efficiency while hiding details like font loading from the
  calling program).  Finally, I removed the global drawscreen function
  and replaced it with a callback function to clean up the code a bit.
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -