Guest
Hi Raid,
Thank you for your help, the loop work great! However, I still have a
minor model path problem in the loop, my spice models are as
following:
"/data/........./Spectre/L35_33.scs" "tt" ;(for MOS)
"/data/ ........./Spectre/Res.scs" "typ" ;(for resistor)
"/data/ ........./Spectre/...... ;(for caps)
I follow you code, then I write:
mySpiceMoelsPath="/data/........./Spectre/L35_33.scs"
myCornersList=list("typ" "FF" "SS" "FS" "SF")
.....
foreach( myCorner myCornersList
sprintf( myModel "%s%s" mySpiceMoelsPath myCorner )
path(myModel)
after that, the MOS model library cannot be found during simulation.
What's wong is it ? Thank you again!
On Mar 1, 12:56 am, Riad KACED <riad.ka...@gmail.com> wrote:
Thank you for your help, the loop work great! However, I still have a
minor model path problem in the loop, my spice models are as
following:
"/data/........./Spectre/L35_33.scs" "tt" ;(for MOS)
"/data/ ........./Spectre/Res.scs" "typ" ;(for resistor)
"/data/ ........./Spectre/...... ;(for caps)
I follow you code, then I write:
mySpiceMoelsPath="/data/........./Spectre/L35_33.scs"
myCornersList=list("typ" "FF" "SS" "FS" "SF")
.....
foreach( myCorner myCornersList
sprintf( myModel "%s%s" mySpiceMoelsPath myCorner )
path(myModel)
after that, the MOS model library cannot be found during simulation.
What's wong is it ? Thank you again!
On Mar 1, 12:56 am, Riad KACED <riad.ka...@gmail.com> wrote:
Hi Eric,
I'm pretty sure there is a clever way to do this job.
I'm proposing a solution here but I can't guarantee it is the best
one.
The idea is to create lists for each thing you want to sweep and the
run it within nested foreach instructions.
Skill works very well with lists.
these are bits of codes you can use in your script.
You can find lots of examples about ocean scripting in your Cadence
install dir :
your_install_dir/tools/dfII/samples/artist/OCEAN
mySpiceMoelsPath="YOUR_PATH/"
myCornersList=list("typ" "FF" "SS" "FS" "SF")
myVinList=list(2.7 3 3.6)
myTempList=(105 27 -25)
and then run your design with netsed foreach loops, something like
; 1st loop for temprature sweep
foreach( myTemp myTempList
temp( myTemp )
;; Add what you want to add
; 2nd loop for corner sweep
foreach( myCorner myCornersList
sprintf( myModel "%s%s" mySpiceMoelsPath myCorner ) ; This is an
example
path(mymodel) ; This is an example
;; Add what you want to add
; 3rd loop for voltage sweep
foreach( myVin myVinList
desVar("vin" myVin) ; This is an example
;; Your core functions
run() ; This is an example
;; Other stuffs if needed
); myTemp
); myCorner
); myVin
Good luck and enjoy your Week End !
Riad.