support cadence15

This commit is contained in:
Xinming Wei 2022-01-05 13:42:35 +08:00
parent a907fd3607
commit e14cd5a5f4
6 changed files with 47 additions and 7 deletions

View File

@ -65,6 +65,8 @@ class Config:
flow.dreamplace_bin_path = sec.get('dreamplace_bin_path') flow.dreamplace_bin_path = sec.get('dreamplace_bin_path')
if sec.get('yosys_bin_path'): if sec.get('yosys_bin_path'):
flow.yosys_bin_path = sec.get('yosys_bin_path') flow.yosys_bin_path = sec.get('yosys_bin_path')
if sec.get('cadence_version'):
flow.cadence_version = sec.get('cadence_version')
flow.config() flow.config()
return flow return flow

View File

@ -33,6 +33,7 @@
; liberty_input str Path to the input .lib file ; liberty_input str Path to the input .lib file
; # External toolkit settings ; # External toolkit settings
; cadence_version str 15/19
; dreamplace_bin_path str Path/to/DREAMPlace/.../Placer.py ; dreamplace_bin_path str Path/to/DREAMPlace/.../Placer.py
; yosys_bin_path str Path/to/Yosys/build_dir/, which contains yosys and yosys-abc binaries ; yosys_bin_path str Path/to/Yosys/build_dir/, which contains yosys and yosys-abc binaries
@ -58,21 +59,22 @@ lef_input = /home/wxm/cocoon/demo/lib/gscl45nm.lef
liberty_input = /home/wxm/cocoon/demo/lib/gscl45nm.lib liberty_input = /home/wxm/cocoon/demo/lib/gscl45nm.lib
# External toolkit settings # External toolkit settings
cadence_version = 15
dreamplace_bin_path = /home/wxm/DREAMPlace/install/dreamplace/Placer.py dreamplace_bin_path = /home/wxm/DREAMPlace/install/dreamplace/Placer.py
yosys_bin_path = /home/wxm/yosys/build yosys_bin_path = /home/wxm/yosys/build
# Flow settings # Flow settings
flow = {'synth':'genus', 'placement':'innovus', 'routing':'innovus'} flow = {'synth':'genus', 'placement':'innovus', 'routing':'innovus'}
n_iter_IFT = 1 n_iter_IFT = 0
verbose = False verbose = False
[ALU(Chisel)] [gcd-test]
# Design settings # Design settings
design_name = AluTop design_name = gcd
is_Chisel_design = True is_Chisel_design = False
rtl_input = /home/wxm/cocoon/demo/gcd/gcd.v rtl_input = /home/wxm/cocoon/demo/gcd/gcd.v
Chisel_input = /home/wxm/cocoon/demo/alu-chisel/ Chisel_input = /home/wxm/cocoon/demo/alu-chisel/
result_dir = /home/wxm/cocoon/results/ result_dir = /home/wxm/cocoon/results/test/
clk_name = clk clk_name = clk
delay = 1000 delay = 1000
@ -82,12 +84,38 @@ lef_input = /home/wxm/cocoon/demo/lib/gscl45nm.lef
liberty_input = /home/wxm/cocoon/demo/lib/gscl45nm.lib liberty_input = /home/wxm/cocoon/demo/lib/gscl45nm.lib
# External toolkit settings # External toolkit settings
cadence_version = 15
dreamplace_bin_path = /home/wxm/DREAMPlace/install/dreamplace/Placer.py dreamplace_bin_path = /home/wxm/DREAMPlace/install/dreamplace/Placer.py
yosys_bin_path = /home/wxm/yosys/build yosys_bin_path = /home/wxm/yosys/build
# Flow settings # Flow settings
flow = {'synth':'yosys', 'placement':'dreamplace', 'routing':'innovus'} flow = {'synth':'genus', 'placement':'innovus', 'routing':'innovus'}
n_iter_IFT = 0 n_iter_IFT = 0
verbose = False verbose = False
; [ALU(Chisel)]
; # Design settings
; design_name = AluTop
; is_Chisel_design = True
; rtl_input = /home/wxm/cocoon/demo/gcd/gcd.v
; Chisel_input = /home/wxm/cocoon/demo/alu-chisel/
; result_dir = /home/wxm/cocoon/results/
; clk_name = clk
; delay = 1000
; # Library settings
; lib_name = gscl45nm
; lef_input = /home/wxm/cocoon/demo/lib/gscl45nm.lef
; liberty_input = /home/wxm/cocoon/demo/lib/gscl45nm.lib
; # External toolkit settings
; dreamplace_bin_path = /home/wxm/DREAMPlace/install/dreamplace/Placer.py
; yosys_bin_path = /home/wxm/yosys/build
; # Flow settings
; flow = {'synth':'genus', 'placement':'innovus', 'routing':'innovus'}
; n_iter_IFT = 0
; verbose = False

View File

@ -63,6 +63,7 @@ def run(design, flow, flow_name):
if x[0] == "InnovusPlace": if x[0] == "InnovusPlace":
tmp_op_pdn = place.InnovusPlace(design) tmp_op_pdn = place.InnovusPlace(design)
tmp_op_pdn.params['cadence_version'] = flow.cadence_version
tmp_op_pdn.config(design, design_name + "_" + x[1]) tmp_op_pdn.config(design, design_name + "_" + x[1])
overall_tcl.write('source %s%s_to_place.tcl\n'%(tcl_path, design_name)) overall_tcl.write('source %s%s_to_place.tcl\n'%(tcl_path, design_name))

View File

@ -13,6 +13,7 @@ class MyFlow(object):
self.params_drc = [] self.params_drc = []
self.n_iter_IFT = 0 self.n_iter_IFT = 0
self.verbose = True self.verbose = True
self.cadence_version = '19'
self.dreamplace_bin_path = " " self.dreamplace_bin_path = " "
self.yosys_bin_path = " " self.yosys_bin_path = " "

View File

@ -18,7 +18,7 @@ class InnovusDRC():
def config(self, design, tcl_file): def config(self, design, tcl_file):
tcl_path = util.getScriptPath(self.design) tcl_path = util.getScriptPath(self.design)
ret = 'check_design' ret = 'check_design'
if self.params['out_file'] is not 'default': if self.params['out_file'] != 'default':
ret = ret + " -out_file " + self.params['out_file'] ret = ret + " -out_file " + self.params['out_file']
if self.params['no_check']: if self.params['no_check']:

View File

@ -11,6 +11,7 @@ class InnovusPlace(object):
self.params['concurrent_macros'] = False self.params['concurrent_macros'] = False
self.params['incremental'] = False self.params['incremental'] = False
self.params['noPrePlaceOpt'] = False self.params['noPrePlaceOpt'] = False
self.params['cadence_version'] = '19'
def setParams(self, param): def setParams(self, param):
if self.params.get(param) == None: if self.params.get(param) == None:
@ -21,6 +22,13 @@ class InnovusPlace(object):
def config(self, design, tcl_file): def config(self, design, tcl_file):
tcl_path = util.getScriptPath(self.design) tcl_path = util.getScriptPath(self.design)
ret = 'place_design' ret = 'place_design'
if self.params['cadence_version'] == '19':
ret = 'place_design'
elif self.params['cadence_version'] == '15':
ret = 'placeDesign'
else:
Exception("Invalid Cadence version!\n")
for i in self.params: for i in self.params:
if self.params[i] == True: if self.params[i] == True:
ret = ret + " -" + i ret = ret + " -" + i