( 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
|
|