Skip to content

Commit 12b9147

Browse files
authored
Merge pull request #7742 from fgaray/scanopt_command
Scanopt command
2 parents 287154f + d8823f2 commit 12b9147

File tree

5 files changed

+39
-0
lines changed

5 files changed

+39
-0
lines changed

src/dft/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,19 @@ a result, this should be run after placement, and after `scan_replace`.
9090
execute_dft_plan
9191
```
9292

93+
### Scan Optimization
94+
95+
**Note: This is currently not implement and this command currently operates as a
96+
nop**
97+
98+
Performs scan optimizations on the design reordering the flops of the scan
99+
chains using the latest placement information.
100+
101+
102+
```tcl
103+
scan_opt
104+
```
105+
93106
## Example scripts
94107

95108
This example will create scan chains with a max length of 10 bits mixing all the
@@ -114,6 +127,7 @@ Simply run the following script:
114127
./test/regression
115128
```
116129

130+
117131
## Limitations
118132

119133
* There are no optimizations for the scan chains. This is a WIP.

src/dft/include/dft/Dft.hh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ class Dft
8686
// Prints to stdout
8787
void reportDftConfig() const;
8888

89+
// Performs scan optimizations on the netlist
90+
void scanOpt();
91+
8992
private:
9093
// If we need to run pre_dft to create the internal state
9194
bool need_to_run_pre_dft_;

src/dft/src/Dft.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,9 @@ std::vector<std::unique_ptr<ScanChain>> Dft::scanArchitect()
177177
return scan_architect->getScanChains();
178178
}
179179

180+
void Dft::scanOpt()
181+
{
182+
logger_->warn(utl::DFT, 14, "Scan Opt is not currently implemented");
183+
}
184+
180185
} // namespace dft

src/dft/src/dft.i

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,9 @@ void report_dft_config() {
119119
getDft()->reportDftConfig();
120120
}
121121

122+
void scan_opt()
123+
{
124+
getDft()->scanOpt();
125+
}
126+
122127
%} // inline

src/dft/src/dft.tcl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,15 @@ proc report_dft_config { args } {
9696
sta::parse_key_args "report_dft_config" args keys {} flags {}
9797
dft::report_dft_config
9898
}
99+
100+
101+
sta::define_cmd_args "scan_opt" { }
102+
proc scan_opt { args } {
103+
sta::parse_key_args "scan_opt" args \
104+
keys {} flags {}
105+
106+
if { [ord::get_db_block] == "NULL" } {
107+
utl::error DFT 13 "No design block found."
108+
}
109+
dft::scan_opt
110+
}

0 commit comments

Comments
 (0)