( ESNUG 366 Item 3 ) --------------------------------------------- [02/23/01]

Subject: ( ESNUG 365 #10 )  Twelve More Synopsys ACS 1999.10/2000.05 Bugs

> In the interests of sharing results, here's a table of ACS/Budgeting
> related STARs Mario and I submitted for ACS:
>
>   STAR Num    Description                               Fixed?
>   113984      budget_shell crashes on my design           N
>   109279      timing exception on a block caused
>               that block to not be compiled due to
>               dont_touch                                  Y
>   105427      budget_shell crashes on my design           N
>   105055      set_dont_touch_network sets dont_touch
>               on all combinatorial fanout of that net     N
>   104882      set_critical_range constraint not
>               propagated further than pass0               N
>
> Thanks a lot guys!
>
>     - Tom Fairbairn
>       3Com Europe Ltd                            Hemel Hempstead, England


From: "Vi Anh Nguyen" <vanguyen@broadcom.com>

Hi John,

I documented a list of ACS problems I encountered while using 1999.10-4 ACS.

I since used 2000.05-2 ACS.  Some problems haven't been fixed.  I list ACS
defects & limitations I found in those versions.

1999.10-4 ACS defects:

 - ACS should have defaulted allocate_budgets' level to the same
   set_compile_partitions' level, if the later existed.  According to
   Design Budgeting UG p.3-9, budgeting all levels of hier can lead
   to a large number of *.con files generated by write_context.  Provide
   a value to limit file generation to the blocks to be syn'ed.

   In the pass1/scripts/top.btcl:

     source scripts/pass1/budget.scr

     set cell_list [get_cell * -hier -filter "is_hierarchical == true"]

     foreach_in_collection instance $cell_list {
       set inst_name [get_attribute -class cell $instance full_name]
       set inst_ref_name [get_attribute -class cell $instance ref_name]
       echo "processing cell $inst_name"
       set out_file_name [format "%s.%s" $inst_ref_name con]
       write_context $instance -format dcsh -output
     pass1/constraints/$out_file_name
     }

   The "is_hierarchical == true" should be changed to "is_partition == true"

   This one was fixed in 2000.05-2

 - If DEPTH < 1, ACS set DEPTH to 1 when generating Makefile.  ACS needs to
   allow DEPTH=0 for top-down compile.

 -   set acs_work_dir ./subdir
     create_pass_directories passdir

   This should put the passdir directory in the ./subdir.  But instead it
   creates it in the cwd.

 - The following infos were not transfered from .synopsys_dc.setup by ACS to
   pass#/scripts/env for dc_shell:

     SS_SC_LIB for "set_min_library SS_SC_LIB -min_version FF_SC_LIB"
     "PROJ = get_unix_variable("PROJ")".   (This one has to be passed via
                                            MAKEFLAGS)
     auto-export to dc_shell.
     set_ultra_optimization
     aliases
     define_design_lib
     set_dont_use
     set_implementation

   Also, the .synopsys_dc.setup for ACS is not readable by dc_shell.  The
   tool should designate separate setup files for ACS (dc_shell-t) and
   dc_shell. 

 - The *.btcl could not open long-named files and Apollo could not handle
   long-named instance.  The hdl_naming_threshold didn't work as this
   variable takes effect only when there is at least one non-integer
   parameter.  I used the followings which limit the design name length:

      template_naming_style = "%s_%p"
      template_parameter_style = "%d"
      template_separator_style = ""

 - I used "operating_parameters" which was defined as

     alias   operating_parameters                                  \
         "                                                         \
         set_operating_conditions  -max_library SS_SC_COMB_NAME    \
                                   -max "WCIND"                    \
                                   -min_library FF_SC_COMB_NAME    \
                                   -min "BCIND";                   \
                                                                   \
         set_max_transition         0.8 current_design;            \
         set_max_transition         0.8 all_outputs();             \
         set_critical_range         0.5  current_design;           \
         "

   Which was later used in the default.compile.  Later I got an error in
   pass1/logs/iline20.btcl.out during the budgeting step:

     Loading db file
     '/projects/bcm4710/work/vanguyen/iline20/synth/acs/acs_dbase/
      pass0/db/post_compile/mult_tc10x8_1.db'
     Error: Cannot find operating condition 'BCIND' in library 'tsmc18'.
     (DES-008)
     Information: Previous messages occurred while trying to do:
       'set_operating_conditions -library
        [get_libs * -filter "full_name == tsmc18_1.db ||
        full_name == tsmc18_1 || extended_name =~ */tsmc18_1.db:*"]
        -min {BCIND} -max {WCIND}'.   (LNK-021)

   Evidently, the tsmc18ff_1.db defined in the FF_SC_COMB_NAME var was not
   used in the full_name above.

   This Error prevented the pass1/Makefile from being generated.

 - The top-level design should be written out both flat and hierarchically.
   Currently the top-level design is written out flat.  This would
   facilitate a final non-ACS compile required in 2-pass syn to perform
   insert_san for scan replacement and routing.

   Since dont_touch was set on all subdesigns and cells in the
   pass1/scripts/top.autoscr when reading in
   pass1/db/post_compile/, before writing out the top-level
   design hierarchically ACS needs to:

      set_dont_touch find(design -hier, "*") false
      set_dont_touch find(cell -hier, "*") false

   Furthermore, pass0/constraints/top.con needs to be reapplied to iline20
   in the final non-ACS compile as DC complains that timing info on clocks
   is lost.

 - pass1/constraints/top.con has invalid commands:

     set_dont_touch find(reference "BRF64X32AR1")

   causing the error:

     Warning: Can't find reference 'BRF64X32AR1' in design 'iline20'.
              (UID-95)
     Error: Design object list required for the '' argument.
            (EQN-19)
     Usage: set_dont_touch
	 (list of objects not to be modified)
	flag          (used to set true or false -- default is true)

   The above cells are either std cells or custom macro cells.

 - Duplicate command lines in pass1/scripts/top.autoscr:

      include pass1/constraints/iline20.con
      /**************Begin error-check***********************/
      check_error -v
      if (dc_shell_status == 1) {
        exit 1
      }
      /**************End error-check***********************/
      /**************Begin error-check***********************/
      check_error -v
      if (dc_shell_status == 1) {
        exit 1
      }
      /**************End error-check***********************/

      /******************************************************
      Created by Tcl procedure acs_write_strategy -partition iline20
      -pass 1 -level incr -format dcsh
      ******************************************************/

 - Redundant subdesigns were read in pass1/scripts/iline20.autoscr resulting
   in:

     Warning: Design 'dpram19x10.db:dpram19x10_DW01_mux_any_190_5_10_0'
     comes before design
     'dpram19x10_DW01_mux_any_190_5_10_0.db:dpram19x10_DW01_mux_any_190_5_10_0'
     in the link_library;
     'dpram19x10_DW01_mux_any_190_5_10_0.db:dpram19x10_DW01_mux_any_190_5_10_0'
     will be ignored.


2000.05 ACS defects:

 - 2000.05 ACS creates pass0 dir in the wrong dir

      set acs_work_dir ./subdir
      create_pass_directories passdir

   (This should put the passdir directory in the acs_work_dir.  But instead
   it creates it in cwd.)

2000.05-2 ACS defect:

 - .compile was used in the generated pass#n/Makefile despite
   the fact that only default.compile was created by users for
   scripts/pas#n.

I hope this list of known bugs helps other ACS users, John.

    - Vi Anh Nguyen
      Broadcom


 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)