( ESNUG 309 Item 2 ) ---------------------------------------------- [1/27/99]
From: erikt@bnr.ca (Erik Trounce)
Subject: Any Way To Speed Up This DC Script To Find Clock Domain Crossings ?
I've got an existing design and I need to find all of the clock domain
crossings in order to insert lockup latches for DFT. I could probably read
through the code and find most of them, but I was hoping to automate it
and catch all of them. I've written a dc_shell script that will do this,
however the run time for this script is several days, even on an Ultra-10.
Here is the script I am currently running (for the past 14 hours):
ckList = all_clocks()
foreach (ck, ckList) {
echo "Investigating" ck "registers..." >> clock_xdomain_list
Dplst = {""}
foreach (tock, ckList - ck) {
Dplst = Dplst + all_registers (-clock tock -data_pins -edge_triggered)
}
foreach (Qpin, all_registers (-clock ck -output_pins -edge_triggered)) {
foreach (fanout, all_fanout (-from Qpin -flat -endpoints_only)) {
foreach (Dpin, Dplst) {
if (fanout == Dpin) {
echo "Path:" Qpin "to" Dpin "exists" >> clock_xdomain_list
}
}
}
}
}
Anybody have a faster script that can do the same thing? It can be a
dc_shell script, perl or dc_perl or csh or whatever would be great. It
just needs to be complete and fast(er).
- Erik Trounce
Nortel (Northern Telecom) Ottawa, Ontario, Canada
|
|